From f8fb18aa6c35eeb4e6b1a48103346b96316315b1 Mon Sep 17 00:00:00 2001 From: orange-form <3510245832@qq.com> Date: Fri, 5 Jul 2024 14:31:33 +0000 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20orange-d?= =?UTF-8?q?emo-single-pg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../orange-demo-single-pg-service/.gitignore | 26 - .../orange-demo-single-pg-service/README.md | 17 - .../application-webadmin/pom.xml | 93 - .../webadmin/WebAdminApplication.java | 22 - .../util/CaptchaCacheServiceRedisImpl.java | 52 - .../webadmin/config/ApplicationConfig.java | 51 - .../webadmin/config/DataSourceConfig.java | 30 - .../webadmin/config/FilterConfig.java | 61 - .../webadmin/config/InterceptorConfig.java | 21 - .../AuthenticationInterceptor.java | 143 - .../upms/controller/LoginController.java | 342 - .../upms/controller/LoginUserController.java | 83 - .../controller/SysDataPermController.java | 300 - .../upms/controller/SysDeptController.java | 226 - .../upms/controller/SysMenuController.java | 224 - .../controller/SysOperationLogController.java | 61 - .../controller/SysPermCodeController.java | 195 - .../upms/controller/SysPermController.java | 196 - .../controller/SysPermModuleController.java | 168 - .../upms/controller/SysRoleController.java | 358 - .../upms/controller/SysUserController.java | 359 - .../upms/dao/SysDataPermDeptMapper.java | 13 - .../webadmin/upms/dao/SysDataPermMapper.java | 35 - .../upms/dao/SysDataPermUserMapper.java | 13 - .../webadmin/upms/dao/SysDeptMapper.java | 33 - .../upms/dao/SysDeptRelationMapper.java | 42 - .../webadmin/upms/dao/SysMenuMapper.java | 54 - .../upms/dao/SysMenuPermCodeMapper.java | 13 - .../webadmin/upms/dao/SysPermCodeMapper.java | 45 - .../upms/dao/SysPermCodePermMapper.java | 13 - .../webadmin/upms/dao/SysPermMapper.java | 54 - .../upms/dao/SysPermModuleMapper.java | 22 - .../upms/dao/SysPermWhitelistMapper.java | 13 - .../webadmin/upms/dao/SysRoleMapper.java | 45 - .../webadmin/upms/dao/SysRoleMenuMapper.java | 13 - .../webadmin/upms/dao/SysUserMapper.java | 115 - .../webadmin/upms/dao/SysUserRoleMapper.java | 13 - .../upms/dao/mapper/SysDataPermDeptMapper.xml | 8 - .../upms/dao/mapper/SysDataPermMapper.xml | 60 - .../upms/dao/mapper/SysDataPermUserMapper.xml | 8 - .../upms/dao/mapper/SysDeptMapper.xml | 70 - .../upms/dao/mapper/SysDeptRelationMapper.xml | 29 - .../upms/dao/mapper/SysMenuMapper.xml | 107 - .../upms/dao/mapper/SysMenuPermCodeMapper.xml | 8 - .../upms/dao/mapper/SysPermCodeMapper.xml | 90 - .../upms/dao/mapper/SysPermCodePermMapper.xml | 8 - .../upms/dao/mapper/SysPermMapper.xml | 131 - .../upms/dao/mapper/SysPermModuleMapper.xml | 40 - .../dao/mapper/SysPermWhitelistMapper.xml | 9 - .../upms/dao/mapper/SysRoleMapper.xml | 89 - .../upms/dao/mapper/SysRoleMenuMapper.xml | 8 - .../upms/dao/mapper/SysUserMapper.xml | 246 - .../upms/dao/mapper/SysUserRoleMapper.xml | 8 - .../webadmin/upms/dto/SysDataPermDeptDto.java | 28 - .../webadmin/upms/dto/SysDataPermDto.java | 56 - .../webadmin/upms/dto/SysDeptDto.java | 73 - .../webadmin/upms/dto/SysMenuDto.java | 75 - .../webadmin/upms/dto/SysOperationLogDto.java | 78 - .../webadmin/upms/dto/SysPermCodeDto.java | 64 - .../webadmin/upms/dto/SysPermDto.java | 61 - .../webadmin/upms/dto/SysPermModuleDto.java | 57 - .../webadmin/upms/dto/SysRoleDto.java | 33 - .../webadmin/upms/dto/SysUserDto.java | 119 - .../webadmin/upms/model/SysDataPerm.java | 106 - .../webadmin/upms/model/SysDataPermDept.java | 29 - .../webadmin/upms/model/SysDataPermUser.java | 27 - .../webadmin/upms/model/SysDept.java | 81 - .../webadmin/upms/model/SysDeptRelation.java | 31 - .../webadmin/upms/model/SysMenu.java | 130 - .../webadmin/upms/model/SysMenuPermCode.java | 27 - .../webadmin/upms/model/SysPerm.java | 80 - .../webadmin/upms/model/SysPermCode.java | 113 - .../webadmin/upms/model/SysPermCodePerm.java | 27 - .../webadmin/upms/model/SysPermModule.java | 74 - .../webadmin/upms/model/SysPermWhitelist.java | 33 - .../webadmin/upms/model/SysRole.java | 89 - .../webadmin/upms/model/SysRoleMenu.java | 27 - .../webadmin/upms/model/SysUser.java | 184 - .../webadmin/upms/model/SysUserRole.java | 27 - .../upms/model/constant/SysMenuType.java | 54 - .../model/constant/SysOnlineMenuPermType.java | 44 - .../upms/model/constant/SysPermCodeType.java | 49 - .../model/constant/SysPermModuleType.java | 44 - .../upms/model/constant/SysUserStatus.java | 44 - .../upms/model/constant/SysUserType.java | 49 - .../upms/service/SysDataPermService.java | 104 - .../webadmin/upms/service/SysDeptService.java | 78 - .../webadmin/upms/service/SysMenuService.java | 111 - .../upms/service/SysPermCodeService.java | 94 - .../upms/service/SysPermModuleService.java | 63 - .../webadmin/upms/service/SysPermService.java | 107 - .../upms/service/SysPermWhitelistService.java | 23 - .../webadmin/upms/service/SysRoleService.java | 105 - .../webadmin/upms/service/SysUserService.java | 170 - .../service/impl/SysDataPermServiceImpl.java | 334 - .../upms/service/impl/SysDeptServiceImpl.java | 237 - .../upms/service/impl/SysMenuServiceImpl.java | 331 - .../service/impl/SysPermCodeServiceImpl.java | 224 - .../impl/SysPermModuleServiceImpl.java | 122 - .../upms/service/impl/SysPermServiceImpl.java | 241 - .../impl/SysPermWhitelistServiceImpl.java | 52 - .../upms/service/impl/SysRoleServiceImpl.java | 226 - .../upms/service/impl/SysUserServiceImpl.java | 364 - .../webadmin/upms/vo/SysDataPermDeptVo.java | 28 - .../webadmin/upms/vo/SysDataPermVo.java | 72 - .../webadmin/upms/vo/SysDeptVo.java | 66 - .../webadmin/upms/vo/SysMenuVo.java | 102 - .../webadmin/upms/vo/SysOperationLogVo.java | 145 - .../webadmin/upms/vo/SysPermCodeVo.java | 84 - .../webadmin/upms/vo/SysPermModuleVo.java | 78 - .../webadmin/upms/vo/SysPermVo.java | 84 - .../webadmin/upms/vo/SysRoleVo.java | 60 - .../webadmin/upms/vo/SysUserVo.java | 116 - ...m.anji.captcha.service.CaptchaCacheService | 1 - .../src/main/resources/application-dev.yml | 96 - .../src/main/resources/application.yml | 143 - .../resources/images/jigsaw/original/bg1.png | Bin 105636 -> 0 bytes .../resources/images/jigsaw/original/bg10.png | Bin 87531 -> 0 bytes .../resources/images/jigsaw/original/bg11.png | Bin 83599 -> 0 bytes .../resources/images/jigsaw/original/bg12.png | Bin 78934 -> 0 bytes .../resources/images/jigsaw/original/bg13.png | Bin 81552 -> 0 bytes .../resources/images/jigsaw/original/bg14.png | Bin 59228 -> 0 bytes .../resources/images/jigsaw/original/bg15.png | Bin 85655 -> 0 bytes .../resources/images/jigsaw/original/bg16.png | Bin 73738 -> 0 bytes .../resources/images/jigsaw/original/bg17.png | Bin 76842 -> 0 bytes .../resources/images/jigsaw/original/bg18.png | Bin 73061 -> 0 bytes .../resources/images/jigsaw/original/bg19.png | Bin 85663 -> 0 bytes .../resources/images/jigsaw/original/bg2.png | Bin 82613 -> 0 bytes .../resources/images/jigsaw/original/bg20.png | Bin 77849 -> 0 bytes .../resources/images/jigsaw/original/bg3.png | Bin 96776 -> 0 bytes .../resources/images/jigsaw/original/bg4.png | Bin 90015 -> 0 bytes .../resources/images/jigsaw/original/bg5.png | Bin 70640 -> 0 bytes .../resources/images/jigsaw/original/bg6.png | Bin 84881 -> 0 bytes .../resources/images/jigsaw/original/bg7.png | Bin 66861 -> 0 bytes .../resources/images/jigsaw/original/bg8.png | Bin 65868 -> 0 bytes .../resources/images/jigsaw/original/bg9.png | Bin 83763 -> 0 bytes .../images/jigsaw/slidingBlock/1.png | Bin 22049 -> 0 bytes .../images/jigsaw/slidingBlock/10.png | Bin 6662 -> 0 bytes .../images/jigsaw/slidingBlock/11.png | Bin 6663 -> 0 bytes .../images/jigsaw/slidingBlock/2.png | Bin 21367 -> 0 bytes .../images/jigsaw/slidingBlock/3.png | Bin 21660 -> 0 bytes .../images/jigsaw/slidingBlock/4.png | Bin 21923 -> 0 bytes .../images/jigsaw/slidingBlock/5.png | Bin 7853 -> 0 bytes .../images/jigsaw/slidingBlock/6.png | Bin 7970 -> 0 bytes .../images/jigsaw/slidingBlock/7.png | Bin 7749 -> 0 bytes .../images/jigsaw/slidingBlock/8.png | Bin 6660 -> 0 bytes .../images/jigsaw/slidingBlock/9.png | Bin 6659 -> 0 bytes .../main/resources/images/pic-click/bg1.png | Bin 36206 -> 0 bytes .../main/resources/images/pic-click/bg2.png | Bin 43926 -> 0 bytes .../main/resources/images/pic-click/bg3.png | Bin 41195 -> 0 bytes .../main/resources/images/pic-click/bg4.png | Bin 52213 -> 0 bytes .../main/resources/images/pic-click/bg5.png | Bin 27608 -> 0 bytes .../main/resources/images/pic-click/bg6.png | Bin 30151 -> 0 bytes .../main/resources/images/pic-click/bg7.png | Bin 59340 -> 0 bytes .../main/resources/images/pic-click/bg8.png | Bin 37701 -> 0 bytes .../main/resources/images/pic-click/bg9.png | Bin 40371 -> 0 bytes .../src/main/resources/log4j2.xml | 77 - .../common/common-core/pom.xml | 114 - .../core/advice/MyControllerAdvice.java | 31 - .../core/advice/MyExceptionHandler.java | 141 - .../core/annotation/DeptFilterColumn.java | 16 - .../core/annotation/DisableDataFilter.java | 17 - .../core/annotation/DisableTenantFilter.java | 28 - .../core/annotation/EnableDataPerm.java | 35 - .../core/annotation/JobUpdateTimeColumn.java | 16 - .../common/core/annotation/MyDataSource.java | 21 - .../core/annotation/MyDataSourceResolver.java | 29 - .../common/core/annotation/MyRequestBody.java | 31 - .../core/annotation/NoAuthInterface.java | 15 - .../core/annotation/RelationConstDict.java | 29 - .../common/core/annotation/RelationDict.java | 70 - .../core/annotation/RelationManyToMany.java | 38 - .../RelationManyToManyAggregation.java | 95 - .../core/annotation/RelationOneToMany.java | 53 - .../RelationOneToManyAggregation.java | 67 - .../core/annotation/RelationOneToOne.java | 60 - .../core/annotation/TenantFilterColumn.java | 16 - .../core/annotation/UploadFlagColumn.java | 24 - .../core/annotation/UserFilterColumn.java | 16 - .../common/core/aop/DataSourceAspect.java | 48 - .../core/aop/DataSourceResolveAspect.java | 62 - .../common/core/aop/DictCacheSyncAspect.java | 64 - .../common/core/base/dao/BaseDaoMapper.java | 87 - .../core/base/mapper/BaseModelMapper.java | 124 - .../core/base/mapper/DummyModelMapper.java | 58 - .../core/base/service/BaseDictService.java | 266 - .../common/core/base/service/BaseService.java | 2008 - .../core/base/service/IBaseDictService.java | 82 - .../core/base/service/IBaseService.java | 439 - .../common/core/cache/DictionaryCache.java | 88 - .../common/core/cache/MapDictionaryCache.java | 358 - .../core/cache/MapTreeDictionaryCache.java | 292 - .../core/config/CommonWebMvcConfig.java | 68 - .../common/core/config/CoreProperties.java | 43 - .../core/config/DataSourceContextHolder.java | 52 - .../common/core/config/DynamicDataSource.java | 17 - .../common/core/config/EncryptConfig.java | 20 - .../core/config/RestTemplateConfig.java | 64 - .../common/core/config/TomcatConfig.java | 39 - .../common/core/constant/AggregationType.java | 81 - .../common/core/constant/AppDeviceType.java | 59 - .../core/constant/ApplicationConstant.java | 85 - .../common/core/constant/ErrorCodeEnum.java | 84 - .../core/constant/GlobalDeletedFlag.java | 25 - .../exception/DataValidationException.java | 26 - .../exception/InvalidClassFieldException.java | 30 - .../exception/InvalidDataFieldException.java | 30 - .../exception/InvalidDataModelException.java | 27 - .../exception/InvalidRedisModeException.java | 27 - .../exception/MapCacheAccessException.java | 20 - .../core/exception/MyRuntimeException.java | 36 - .../core/exception/NoDataAffectException.java | 26 - .../core/exception/NoDataPermException.java | 26 - .../exception/RedisCacheAccessException.java | 20 - .../MyRequestArgumentResolver.java | 234 - .../listener/LoadServiceRelationListener.java | 28 - .../common/core/object/CallResult.java | 104 - .../common/core/object/DummyClass.java | 27 - .../common/core/object/GlobalThreadLocal.java | 52 - .../common/core/object/LoginUserInfo.java | 62 - .../common/core/object/MyGroupCriteria.java | 24 - .../common/core/object/MyGroupParam.java | 194 - .../common/core/object/MyOrderParam.java | 265 - .../common/core/object/MyPageData.java | 36 - .../common/core/object/MyPageParam.java | 58 - .../common/core/object/MyRelationParam.java | 91 - .../common/core/object/MyWhereCriteria.java | 361 - .../common/core/object/ResponseResult.java | 235 - .../common/core/object/TableModelInfo.java | 33 - .../common/core/object/TokenData.java | 111 - .../common/core/object/Tuple2.java | 50 - .../common/core/upload/BaseUpDownloader.java | 137 - .../common/core/upload/LocalUpDownloader.java | 149 - .../core/upload/UpDownloaderFactory.java | 49 - .../core/upload/UploadResponseInfo.java | 29 - .../common/core/upload/UploadStoreInfo.java | 22 - .../core/upload/UploadStoreTypeEnum.java | 19 - .../common/core/util/AopTargetUtil.java | 64 - .../core/util/ApplicationContextHolder.java | 90 - .../common/core/util/ContextUtil.java | 49 - .../common/core/util/DataSourceResolver.java | 19 - .../common/core/util/ExportUtil.java | 95 - .../common/core/util/ImportUtil.java | 252 - .../orangeforms/common/core/util/IpUtil.java | 104 - .../orangeforms/common/core/util/JwtUtil.java | 110 - .../common/core/util/LogMessageUtil.java | 33 - .../common/core/util/MyCommonUtil.java | 262 - .../common/core/util/MyDateUtil.java | 201 - .../common/core/util/MyModelUtil.java | 772 - .../common/core/util/MyPageUtil.java | 108 - .../common/core/util/RedisKeyUtil.java | 86 - .../orangeforms/common/core/util/RsaUtil.java | 115 - .../common/core/util/TreeNode.java | 93 - .../common/core/validator/AddGroup.java | 10 - .../common/core/validator/ConstDictRef.java | 48 - .../core/validator/ConstDictValidator.java | 33 - .../common/core/validator/TextLength.java | 55 - .../core/validator/TextLengthValidator.java | 39 - .../common/core/validator/UpdateGroup.java | 11 - .../common/common-datafilter/pom.xml | 29 - .../aop/DisableDataFilterAspect.java | 41 - .../config/DataFilterAutoConfig.java | 13 - .../config/DataFilterProperties.java | 44 - .../config/DataFilterWebMvcConfigurer.java | 21 - .../datafilter/constant/DataPermRuleType.java | 69 - .../interceptor/DataFilterInterceptor.java | 42 - .../MybatisDataFilterInterceptor.java | 479 - .../listener/LoadDataFilterInfoListener.java | 25 - .../main/resources/META-INF/spring.factories | 2 - .../common/common-log/pom.xml | 43 - .../common/log/annotation/OperationLog.java | 33 - .../common/log/aop/OperationLogAspect.java | 260 - .../log/config/CommonLogAutoConfig.java | 13 - .../log/config/OperationLogProperties.java | 24 - .../common/log/dao/SysOperationLogMapper.java | 34 - .../log/dao/mapper/SysOperationLogMapper.xml | 99 - .../common/log/model/SysOperationLog.java | 170 - .../model/constant/SysOperationLogType.java | 166 - .../log/service/SysOperationLogService.java | 45 - .../impl/SysOperationLogServiceImpl.java | 84 - .../main/resources/META-INF/spring.factories | 2 - .../common/common-redis/pom.xml | 29 - .../redis/cache/RedisDictionaryCache.java | 417 - .../redis/cache/RedisTreeDictionaryCache.java | 354 - .../redis/cache/RedissonCacheConfig.java | 67 - .../redis/cache/SessionCacheHelper.java | 97 - .../common/redis/config/RedissonConfig.java | 105 - .../main/resources/META-INF/spring.factories | 2 - .../common/common-sequence/pom.xml | 24 - .../config/IdGeneratorAutoConfig.java | 14 - .../config/IdGeneratorProperties.java | 20 - .../sequence/generator/BasicIdGenerator.java | 48 - .../sequence/generator/MyIdGenerator.java | 24 - .../sequence/wrapper/IdGeneratorWrapper.java | 52 - .../main/resources/META-INF/spring.factories | 2 - .../common/common-swagger/pom.xml | 39 - .../config/SwaggerAutoConfiguration.java | 56 - .../swagger/config/SwaggerProperties.java | 45 - .../common/swagger/plugin/ByteBuddyUtil.java | 85 - .../plugin/DynamicBodyModelPlugin.java | 61 - .../plugin/DynamicBodyParameterBuilder.java | 64 - .../main/resources/META-INF/spring.factories | 2 - .../common/pom.xml | 22 - .../framework/apidoc-tools/pom.xml | 29 - .../apidoc/tools/ExportApiApp.java | 28 - .../apidoc/tools/ExportDocApp.java | 28 - .../tools/codeparser/ApiCodeConfig.java | 83 - .../tools/codeparser/ApiCodeParser.java | 672 - .../ApiCodeConfigParseException.java | 27 - .../tools/exception/MapperParseException.java | 27 - .../apidoc/tools/export/ApiDocExporter.java | 84 - .../tools/export/ApiPostmanExporter.java | 53 - .../apidoc/tools/util/FreeMarkerUtils.java | 28 - .../src/main/resources/export-api-config.json | 24 - .../main/resources/templates/api-doc.md.ftl | 144 - .../templates/postman_collection.json.ftl | 42 - .../resources/templates/postman_common.ftl | 120 - .../framework/pom.xml | 17 - .../orange-demo-single-pg-service/pom.xml | 260 - .../zz-resource/db-scripts/areacode-pg.sql | 3689 - .../db-scripts/init-upms-data-script-pg.sql | 409 - .../rollback-upms-data-script-pg.sql | 405 - .../zz-resource/db-scripts/upms-script-pg.sql | 490 - .../docker-files/docker-compose.yml | 16 - .../docker-files/services/redis/Dockerfile | 13 - .../docker-files/services/redis/redis.conf | 1307 - .../orange-demo-single-pg-web/.browserslistrc | 2 - .../orange-demo-single-pg-web/.editorconfig | 5 - .../orange-demo-single-pg-web/.eslintignore | 2 - .../orange-demo-single-pg-web/.eslintrc.js | 39 - .../orange-demo-single-pg-web/.gitignore | 21 - .../orange-demo-single-pg-web/README.md | 15 - .../orange-demo-single-pg-web/babel.config.js | 5 - .../orange-demo-single-pg-web/jest.config.js | 3 - .../orange-demo-single-pg-web/package.json | 72 - .../public/favicon.ico | Bin 4286 -> 0 bytes .../img/icons/android-chrome-192x192.png | Bin 9416 -> 0 bytes .../img/icons/android-chrome-512x512.png | Bin 29808 -> 0 bytes .../icons/android-chrome-maskable-192x192.png | Bin 6401 -> 0 bytes .../icons/android-chrome-maskable-512x512.png | Bin 23038 -> 0 bytes .../img/icons/apple-touch-icon-120x120.png | Bin 3369 -> 0 bytes .../img/icons/apple-touch-icon-152x152.png | Bin 4046 -> 0 bytes .../img/icons/apple-touch-icon-180x180.png | Bin 4678 -> 0 bytes .../img/icons/apple-touch-icon-60x60.png | Bin 1491 -> 0 bytes .../img/icons/apple-touch-icon-76x76.png | Bin 1823 -> 0 bytes .../public/img/icons/apple-touch-icon.png | Bin 4678 -> 0 bytes .../public/img/icons/favicon-16x16.png | Bin 799 -> 0 bytes .../public/img/icons/favicon-32x32.png | Bin 1271 -> 0 bytes .../img/icons/msapplication-icon-144x144.png | Bin 1169 -> 0 bytes .../public/img/icons/mstile-150x150.png | Bin 4282 -> 0 bytes .../public/img/icons/safari-pinned-tab.svg | 149 - .../public/index.html | 16 - .../public/robots.txt | 2 - .../orange-demo-single-pg-web/src/App.vue | 21 - .../api/Controller/DictionaryController.js | 52 - .../api/Controller/SysDataPermController.js | 61 - .../src/api/Controller/SysDeptController.js | 25 - .../src/api/Controller/SysUserController.js | 25 - .../src/api/Controller/SystemController.js | 260 - .../src/api/index.js | 13 - .../src/assets/element-variables-blue.scss | 1014 - .../src/assets/element-variables-dark.scss | 1000 - .../src/assets/element-variables-green.scss | 1000 - .../src/assets/element-variables-light.scss | 998 - .../src/assets/element-variables-orange.scss | 1001 - .../src/assets/img/default-header.jpg | Bin 14882 -> 0 bytes .../src/assets/img/default.jpg | Bin 20200 -> 0 bytes .../src/assets/img/login.png | Bin 728962 -> 0 bytes .../src/assets/img/login_bg.jpg | Bin 494030 -> 0 bytes .../src/assets/img/login_logo.png | Bin 16011 -> 0 bytes .../src/assets/img/logo.jpg | Bin 19013 -> 0 bytes .../src/assets/img/logo.png | Bin 9808 -> 0 bytes .../src/assets/img/orange-group1.png | Bin 10894 -> 0 bytes .../src/assets/img/orange-group2.png | Bin 4705 -> 0 bytes .../src/assets/package.json | 13 - .../src/assets/style/base.scss | 677 - .../src/assets/style/element-variables.scss | 5 - .../src/assets/style/form-style.scss | 117 - .../src/assets/style/index.scss | 3 - .../src/assets/style/transition.scss | 31 - .../src/assets/theme/alert.css | 343 - .../src/assets/theme/aside.css | 136 - .../src/assets/theme/autocomplete.css | 1467 - .../src/assets/theme/avatar.css | 284 - .../src/assets/theme/backtop.css | 273 - .../src/assets/theme/badge.css | 290 - .../src/assets/theme/base.css | 1244 - .../src/assets/theme/breadcrumb-item.css | 0 .../src/assets/theme/breadcrumb.css | 287 - .../src/assets/theme/button-group.css | 0 .../src/assets/theme/button.css | 762 - .../src/assets/theme/calendar.css | 1065 - .../src/assets/theme/card.css | 271 - .../src/assets/theme/carousel-item.css | 291 - .../src/assets/theme/carousel.css | 367 - .../src/assets/theme/cascader-panel.css | 1781 - .../src/assets/theme/cascader.css | 3504 - .../src/assets/theme/checkbox-button.css | 0 .../src/assets/theme/checkbox-group.css | 0 .../src/assets/theme/checkbox.css | 636 - .../src/assets/theme/col.css | 1877 - .../src/assets/theme/collapse-item.css | 0 .../src/assets/theme/collapse.css | 543 - .../src/assets/theme/color-picker.css | 545 - .../src/assets/theme/container.css | 151 - .../src/assets/theme/date-picker.css | 3698 - .../src/assets/theme/dialog.css | 651 - .../src/assets/theme/display.css | 293 - .../src/assets/theme/divider.css | 284 - .../src/assets/theme/drawer.css | 503 - .../src/assets/theme/dropdown-item.css | 0 .../src/assets/theme/dropdown-menu.css | 0 .../src/assets/theme/dropdown.css | 1451 - .../assets/theme/element-variables-blue.css | 120 - .../assets/theme/element-variables-dark.css | 120 - .../assets/theme/element-variables-green.css | 120 - .../assets/theme/element-variables-light.css | 120 - .../assets/theme/element-variables-orange.css | 120 - .../src/assets/theme/element-variables.css | 120 - .../src/assets/theme/fonts/element-icons.ttf | Bin 55956 -> 0 bytes .../src/assets/theme/fonts/element-icons.woff | Bin 28200 -> 0 bytes .../src/assets/theme/footer.css | 256 - .../src/assets/theme/form-item.css | 0 .../src/assets/theme/form.css | 364 - .../src/assets/theme/header.css | 256 - .../src/assets/theme/icon.css | 1008 - .../src/assets/theme/image.css | 443 - .../src/assets/theme/index.css | 57046 ---------------- .../src/assets/theme/infinite-scroll.css | 0 .../src/assets/theme/infiniteScroll.css | 0 .../src/assets/theme/input-number.css | 891 - .../src/assets/theme/input.css | 534 - .../src/assets/theme/link.css | 342 - .../src/assets/theme/loading.css | 336 - .../src/assets/theme/main.css | 261 - .../src/assets/theme/menu-item-group.css | 0 .../src/assets/theme/menu-item.css | 0 .../src/assets/theme/menu.css | 719 - .../src/assets/theme/message-box.css | 2018 - .../src/assets/theme/message.css | 336 - .../src/assets/theme/notification.css | 323 - .../src/assets/theme/option-group.css | 276 - .../src/assets/theme/option.css | 273 - .../src/assets/theme/page-header.css | 283 - .../src/assets/theme/pagination.css | 3275 - .../src/assets/theme/popconfirm.css | 264 - .../src/assets/theme/popover.css | 605 - .../src/assets/theme/popper.css | 328 - .../src/assets/theme/progress.css | 349 - .../src/assets/theme/radio-button.css | 458 - .../src/assets/theme/radio-group.css | 255 - .../src/assets/theme/radio.css | 509 - .../src/assets/theme/rate.css | 284 - .../src/assets/theme/reset.css | 174 - .../src/assets/theme/row.css | 289 - .../src/assets/theme/scrollbar.css | 296 - .../src/assets/theme/select-dropdown.css | 623 - .../src/assets/theme/select.css | 2825 - .../src/assets/theme/slider.css | 1677 - .../src/assets/theme/spinner.css | 180 - .../src/assets/theme/step.css | 485 - .../src/assets/theme/steps.css | 146 - .../src/assets/theme/submenu.css | 0 .../src/assets/theme/switch.css | 333 - .../src/assets/theme/tab-pane.css | 0 .../src/assets/theme/table-column.css | 1410 - .../src/assets/theme/table.css | 2047 - .../src/assets/theme/tabs.css | 831 - .../src/assets/theme/tag.css | 462 - .../src/assets/theme/time-picker.css | 2523 - .../src/assets/theme/time-select.css | 1918 - .../src/assets/theme/timeline-item.css | 318 - .../src/assets/theme/timeline.css | 256 - .../src/assets/theme/tooltip.css | 342 - .../src/assets/theme/transfer.css | 2349 - .../src/assets/theme/tree.css | 1210 - .../src/assets/theme/upload.css | 1045 - .../src/components/DateRange/index.vue | 305 - .../src/components/Dialog/index.js | 77 - .../src/components/FilterBox/index.vue | 134 - .../src/components/Hamburger/index.vue | 44 - .../src/components/IconSelect/icon.json | 280 - .../src/components/IconSelect/index.vue | 104 - .../src/components/InputNumberRange/index.vue | 227 - .../src/components/Progress/index.vue | 44 - .../src/components/RichEditor/index.vue | 132 - .../components/TableProgressColumn/index.vue | 119 - .../src/components/TreeSelect/index.vue | 290 - .../src/components/Verifition/Verify.vue | 494 - .../Verifition/Verify/VerifyPoints.vue | 268 - .../Verifition/Verify/VerifySlide.vue | 381 - .../src/components/Verifition/api/index.js | 25 - .../src/components/Verifition/utils/ase.js | 11 - .../src/components/Verifition/utils/axios.js | 31 - .../src/components/Verifition/utils/util.js | 36 - .../src/core/config/development.js | 4 - .../src/core/config/index.js | 18 - .../src/core/config/production.js | 4 - .../src/core/directive/sortable.js | 14 - .../src/core/directive/sortableData.js | 60 - .../src/core/http/index.js | 244 - .../src/core/http/request.js | 75 - .../src/core/http/requestUrl.js | 27 - .../src/core/mixins/global.js | 117 - .../src/core/mixins/index.js | 299 - .../orange-demo-single-pg-web/src/main.js | 39 - .../src/registerServiceWorker.js | 32 - .../src/router/import-development.js | 1 - .../src/router/import-production.js | 1 - .../src/router/index.js | 41 - .../src/router/systemRouters.js | 45 - .../src/staticDict/index.js | 251 - .../src/store/actions.js | 16 - .../src/store/getters.js | 89 - .../src/store/index.js | 15 - .../src/store/mutations.js | 171 - .../src/store/state.js | 32 - .../src/store/utils/index.js | 52 - .../src/utils/chartOption.js | 56 - .../src/utils/index.js | 447 - .../src/utils/validate.js | 33 - .../src/utils/widget.js | 322 - .../layout/components/breadcrumb/index.vue | 53 - .../components/formModifyHeadImage/index.vue | 76 - .../components/formModifyPassword/index.vue | 98 - .../layout/components/sidebar/menu-item.vue | 59 - .../layout/components/sidebar/sidebar.vue | 82 - .../views/layout/components/tags/tagItem.vue | 79 - .../views/layout/components/tags/tagPanel.vue | 213 - .../src/views/layout/index.vue | 205 - .../src/views/login/index.vue | 148 - .../views/upms/formDictManagement/index.vue | 193 - .../src/views/upms/formEditDict/index.vue | 110 - .../views/upms/formEditSysDataPerm/index.vue | 243 - .../src/views/upms/formEditSysDept/index.vue | 201 - .../views/upms/formEditSysMenu/editColumn.vue | 108 - .../src/views/upms/formEditSysMenu/index.vue | 283 - .../src/views/upms/formEditSysPerm/index.vue | 168 - .../views/upms/formEditSysPermCode/index.vue | 221 - .../upms/formEditSysPermModule/index.vue | 184 - .../src/views/upms/formEditSysRole/index.vue | 158 - .../src/views/upms/formEditSysUser/index.vue | 226 - .../src/views/upms/formMenuPerm/index.vue | 150 - .../src/views/upms/formSetRoleUsers/index.vue | 216 - .../upms/formSetSysDataPermUser/index.vue | 216 - .../src/views/upms/formSysDataPerm/index.vue | 489 - .../src/views/upms/formSysDept/index.vue | 190 - .../src/views/upms/formSysLoginUser/index.vue | 151 - .../upms/formSysMenu/formSysColumnMenu.vue | 307 - .../upms/formSysMenu/formSysMenuPerm.vue | 203 - .../src/views/upms/formSysMenu/index.vue | 241 - .../views/upms/formSysOperationLog/index.vue | 220 - .../upms/formSysPerm/formSysPermDetail.vue | 323 - .../src/views/upms/formSysPerm/index.vue | 412 - .../formSysPermCode/formSysPermCodeDetail.vue | 253 - .../src/views/upms/formSysPermCode/index.vue | 275 - .../upms/formSysRole/formSysRolePerm.vue | 264 - .../src/views/upms/formSysRole/index.vue | 483 - .../upms/formSysUser/formSysUserPerm.vue | 335 - .../src/views/upms/formSysUser/index.vue | 287 - .../upms/formViewSysOperationLog/index.vue | 120 - .../src/views/welcome/index.vue | 161 - .../orange-demo-single-pg-web/static/.gitkeep | 0 .../orange-demo-single-pg-web/vue.config.js | 5 - 564 files changed, 171169 deletions(-) delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/.gitignore delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/README.md delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/WebAdminApplication.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/app/util/CaptchaCacheServiceRedisImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/ApplicationConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/DataSourceConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/FilterConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/InterceptorConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/interceptor/AuthenticationInterceptor.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginUserController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDataPermController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDeptController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysMenuController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysOperationLogController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermCodeController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermModuleController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysRoleController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysUserController.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermDeptMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermUserMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptRelationMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuPermCodeMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodeMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodePermMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermModuleMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermWhitelistMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMenuMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserRoleMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermDeptMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermUserMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptRelationMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuPermCodeMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodeMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodePermMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermModuleMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermWhitelistMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMenuMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserRoleMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDeptDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDeptDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysMenuDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysOperationLogDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermCodeDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermModuleDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysRoleDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysUserDto.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPerm.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermDept.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermUser.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDept.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDeptRelation.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenu.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenuPermCode.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPerm.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCode.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCodePerm.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermModule.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermWhitelist.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRole.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRoleMenu.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUser.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUserRole.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysMenuType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysOnlineMenuPermType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermCodeType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermModuleType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserStatus.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDataPermService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDeptService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysMenuService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermCodeService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermModuleService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermWhitelistService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysRoleService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysUserService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDataPermServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDeptServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysMenuServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermCodeServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermModuleServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermWhitelistServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysRoleServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysUserServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermDeptVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDeptVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysMenuVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysOperationLogVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermCodeVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermModuleVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysRoleVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysUserVo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaCacheService delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application-dev.yml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application.yml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg1.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg10.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg11.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg12.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg13.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg14.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg15.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg16.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg17.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg18.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg19.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg2.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg20.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg3.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg4.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg5.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg6.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg7.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg8.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg9.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/1.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/10.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/11.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/2.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/3.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/4.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/5.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/6.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/7.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/8.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/9.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg1.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg2.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg3.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg4.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg5.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg6.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg7.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg8.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg9.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/log4j2.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyControllerAdvice.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyExceptionHandler.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DeptFilterColumn.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableDataFilter.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableTenantFilter.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/EnableDataPerm.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/JobUpdateTimeColumn.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSource.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSourceResolver.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyRequestBody.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/NoAuthInterface.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationConstDict.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationDict.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToMany.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToManyAggregation.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToMany.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToManyAggregation.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToOne.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/TenantFilterColumn.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UploadFlagColumn.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UserFilterColumn.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceAspect.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceResolveAspect.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DictCacheSyncAspect.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/dao/BaseDaoMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/BaseModelMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/DummyModelMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseDictService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseDictService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/DictionaryCache.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapDictionaryCache.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapTreeDictionaryCache.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CommonWebMvcConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CoreProperties.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DataSourceContextHolder.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DynamicDataSource.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/EncryptConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/RestTemplateConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/TomcatConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AggregationType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AppDeviceType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ApplicationConstant.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ErrorCodeEnum.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/GlobalDeletedFlag.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/DataValidationException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidClassFieldException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataFieldException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataModelException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidRedisModeException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MapCacheAccessException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MyRuntimeException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataAffectException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataPermException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/RedisCacheAccessException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/interceptor/MyRequestArgumentResolver.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/listener/LoadServiceRelationListener.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/CallResult.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/DummyClass.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/GlobalThreadLocal.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/LoginUserInfo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupCriteria.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupParam.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyOrderParam.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageData.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageParam.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyRelationParam.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyWhereCriteria.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/ResponseResult.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TableModelInfo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TokenData.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/Tuple2.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/BaseUpDownloader.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/LocalUpDownloader.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UpDownloaderFactory.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadResponseInfo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreInfo.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreTypeEnum.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/AopTargetUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ApplicationContextHolder.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ContextUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/DataSourceResolver.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ExportUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ImportUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/IpUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/JwtUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/LogMessageUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyCommonUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyDateUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyModelUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyPageUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RedisKeyUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RsaUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/TreeNode.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/AddGroup.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictRef.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictValidator.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLength.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLengthValidator.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/UpdateGroup.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/aop/DisableDataFilterAspect.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterAutoConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterProperties.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterWebMvcConfigurer.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/constant/DataPermRuleType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/DataFilterInterceptor.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/MybatisDataFilterInterceptor.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/listener/LoadDataFilterInfoListener.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/resources/META-INF/spring.factories delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/annotation/OperationLog.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/aop/OperationLogAspect.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/CommonLogAutoConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/OperationLogProperties.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/SysOperationLogMapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/mapper/SysOperationLogMapper.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/SysOperationLog.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/constant/SysOperationLogType.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/SysOperationLogService.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/impl/SysOperationLogServiceImpl.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/resources/META-INF/spring.factories delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisDictionaryCache.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisTreeDictionaryCache.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedissonCacheConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/SessionCacheHelper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/config/RedissonConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/resources/META-INF/spring.factories delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorAutoConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorProperties.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/BasicIdGenerator.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/MyIdGenerator.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/wrapper/IdGeneratorWrapper.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/resources/META-INF/spring.factories delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerAutoConfiguration.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerProperties.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/ByteBuddyUtil.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyModelPlugin.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyParameterBuilder.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/resources/META-INF/spring.factories delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/common/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportApiApp.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportDocApp.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeConfig.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeParser.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/ApiCodeConfigParseException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/MapperParseException.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiDocExporter.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiPostmanExporter.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/util/FreeMarkerUtils.java delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/export-api-config.json delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/api-doc.md.ftl delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_collection.json.ftl delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_common.ftl delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/framework/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/pom.xml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/areacode-pg.sql delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/init-upms-data-script-pg.sql delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/rollback-upms-data-script-pg.sql delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/upms-script-pg.sql delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/docker-compose.yml delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/Dockerfile delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/redis.conf delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/.browserslistrc delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/.editorconfig delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/.eslintignore delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/.eslintrc.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/.gitignore delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/README.md delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/babel.config.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/jest.config.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/package.json delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/favicon.ico delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/android-chrome-192x192.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/android-chrome-512x512.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/android-chrome-maskable-192x192.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/android-chrome-maskable-512x512.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-120x120.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-152x152.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-180x180.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-60x60.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-76x76.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/favicon-16x16.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/favicon-32x32.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/msapplication-icon-144x144.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/mstile-150x150.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/safari-pinned-tab.svg delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/index.html delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/public/robots.txt delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/App.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/DictionaryController.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDataPermController.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDeptController.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysUserController.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SystemController.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/api/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-blue.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-dark.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-green.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-light.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-orange.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/default-header.jpg delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/default.jpg delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/login.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/login_bg.jpg delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/login_logo.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/logo.jpg delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/logo.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/orange-group1.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/orange-group2.png delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/package.json delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/style/base.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/style/element-variables.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/style/form-style.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/style/index.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/style/transition.scss delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/alert.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/aside.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/autocomplete.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/avatar.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/backtop.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/badge.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/base.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/breadcrumb-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/breadcrumb.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/button-group.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/button.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/calendar.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/card.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/carousel-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/carousel.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/cascader-panel.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/cascader.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/checkbox-button.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/checkbox-group.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/checkbox.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/col.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/collapse-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/collapse.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/color-picker.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/container.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/date-picker.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/dialog.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/display.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/divider.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/drawer.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/dropdown-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/dropdown-menu.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/dropdown.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/element-variables-blue.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/element-variables-dark.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/element-variables-green.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/element-variables-light.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/element-variables-orange.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/element-variables.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/fonts/element-icons.ttf delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/fonts/element-icons.woff delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/footer.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/form-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/form.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/header.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/icon.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/image.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/index.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/infinite-scroll.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/infiniteScroll.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/input-number.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/input.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/link.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/loading.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/main.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/menu-item-group.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/menu-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/menu.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/message-box.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/message.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/notification.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/option-group.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/option.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/page-header.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/pagination.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/popconfirm.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/popover.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/popper.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/progress.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/radio-button.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/radio-group.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/radio.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/rate.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/reset.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/row.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/scrollbar.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/select-dropdown.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/select.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/slider.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/spinner.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/step.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/steps.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/submenu.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/switch.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/tab-pane.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/table-column.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/table.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/tabs.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/tag.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/time-picker.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/time-select.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/timeline-item.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/timeline.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/tooltip.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/transfer.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/tree.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/assets/theme/upload.css delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/DateRange/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Dialog/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/FilterBox/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Hamburger/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/IconSelect/icon.json delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/IconSelect/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/InputNumberRange/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Progress/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/RichEditor/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/TableProgressColumn/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/TreeSelect/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/Verify.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/Verify/VerifyPoints.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/Verify/VerifySlide.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/api/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/utils/ase.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/utils/axios.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/components/Verifition/utils/util.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/config/development.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/config/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/config/production.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/directive/sortable.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/directive/sortableData.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/http/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/http/request.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/http/requestUrl.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/mixins/global.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/core/mixins/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/main.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/registerServiceWorker.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/router/import-development.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/router/import-production.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/router/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/router/systemRouters.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/staticDict/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/store/actions.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/store/getters.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/store/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/store/mutations.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/store/state.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/store/utils/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/utils/chartOption.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/utils/index.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/utils/validate.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/utils/widget.js delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/breadcrumb/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/formModifyHeadImage/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/formModifyPassword/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/sidebar/menu-item.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/sidebar/sidebar.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/tags/tagItem.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/components/tags/tagPanel.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/layout/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/login/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formDictManagement/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditDict/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysDataPerm/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysDept/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysMenu/editColumn.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysMenu/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysPerm/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysPermCode/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysPermModule/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysRole/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formEditSysUser/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formMenuPerm/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSetRoleUsers/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSetSysDataPermUser/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysDataPerm/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysDept/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysLoginUser/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysMenu/formSysColumnMenu.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysMenu/formSysMenuPerm.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysMenu/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysOperationLog/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysPerm/formSysPermDetail.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysPerm/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysPermCode/formSysPermCodeDetail.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysPermCode/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysRole/formSysRolePerm.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysRole/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysUser/formSysUserPerm.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formSysUser/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/upms/formViewSysOperationLog/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/src/views/welcome/index.vue delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/static/.gitkeep delete mode 100644 orange-demo-single-pg/orange-demo-single-pg-web/vue.config.js diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/.gitignore b/orange-demo-single-pg/orange-demo-single-pg-service/.gitignore deleted file mode 100644 index e3fa94cd..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -target/ -!.mvn/wrapper/maven-wrapper.jar -/.mvn/* - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - -### IntelliJ IDEA ### -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/build/ -/nbbuild/ -/dist/ -/nbdist/ -/.nb-gradle/ \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/README.md b/orange-demo-single-pg/orange-demo-single-pg-service/README.md deleted file mode 100644 index 20274fd0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/README.md +++ /dev/null @@ -1,17 +0,0 @@ -### 服务接口文档 ---- -- Knife4j - - 服务启动后,Knife4j的文档入口地址 [http://localhost:8082/doc.html#/plus](http://localhost:8082/doc.html#/plus) -- Postman - - 无需启动服务,即可将当前工程的接口导出成Postman格式。在工程的common/common-tools/模块下,找到ExportApiApp文件,并执行main函数。 - -### 服务启动环境依赖 ---- - -执行docker-compose up -d 命令启动下面依赖的服务。 -执行docker-compose down 命令停止下面服务。 - -- Redis - - 版本:4 - - 端口: 6379 - - 推荐客户端工具 [AnotherRedisDesktopManager](https://github.com/qishibo/AnotherRedisDesktopManager) diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/pom.xml deleted file mode 100644 index d05b3101..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - - com.orangeforms - DemoSinglePg - 1.0.0 - - 4.0.0 - - application-webadmin - 1.0.0 - application - jar - - - - com.anji-plus - spring-boot-starter-captcha - ${ajcaptcha.version} - - - - org.springframework.boot - spring-boot-starter-data-redis - - - spring-boot-starter-logging - org.springframework.boot - - - - - - com.orangeforms - common-redis - 1.0.0 - - - com.orangeforms - common-log - 1.0.0 - - - com.orangeforms - common-sequence - 1.0.0 - - - com.orangeforms - common-datafilter - 1.0.0 - - - com.orangeforms - common-swagger - 1.0.0 - - - - - - - src/main/resources - - **/*.* - - false - - - src/main/java - - **/*.xml - - false - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot.version} - - - - repackage - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/WebAdminApplication.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/WebAdminApplication.java deleted file mode 100644 index 61526940..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/WebAdminApplication.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.orangeforms.webadmin; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.scheduling.annotation.EnableAsync; - -/** - * 应用服务启动类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@EnableAsync -@SpringBootApplication -@ComponentScan("com.orangeforms") -public class WebAdminApplication { - - public static void main(String[] args) { - SpringApplication.run(WebAdminApplication.class, args); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/app/util/CaptchaCacheServiceRedisImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/app/util/CaptchaCacheServiceRedisImpl.java deleted file mode 100644 index ae23a9f2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/app/util/CaptchaCacheServiceRedisImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.orangeforms.webadmin.app.util; - -import com.anji.captcha.service.CaptchaCacheService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.redis.core.StringRedisTemplate; - -import java.util.concurrent.TimeUnit; - -/** - * 对于分布式部署的应用,我们建议应用自己实现CaptchaCacheService,比如用Redis,参考service/spring-boot代码示例。 - * 如果应用是单点的,也没有使用redis,那默认使用内存。 - * 内存缓存只适合单节点部署的应用,否则验证码生产与验证在节点之间信息不同步,导致失败。 - * - * ☆☆☆ SPI: 在resources目录新建META-INF.services文件夹(两层),参考当前服务resources。 - * @author lide1202@hotmail.com - * @date 2020-05-12 - */ -public class CaptchaCacheServiceRedisImpl implements CaptchaCacheService { - - @Override - public String type() { - return "redis"; - } - - @Autowired - private StringRedisTemplate stringRedisTemplate; - - @Override - public void set(String key, String value, long expiresInSeconds) { - stringRedisTemplate.opsForValue().set(key, value, expiresInSeconds, TimeUnit.SECONDS); - } - - @Override - public boolean exists(String key) { - return stringRedisTemplate.hasKey(key); - } - - @Override - public void delete(String key) { - stringRedisTemplate.delete(key); - } - - @Override - public String get(String key) { - return stringRedisTemplate.opsForValue().get(key); - } - - @Override - public Long increment(String key, long val) { - return stringRedisTemplate.opsForValue().increment(key,val); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/ApplicationConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/ApplicationConfig.java deleted file mode 100644 index 73e3b2c9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/ApplicationConfig.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.orangeforms.webadmin.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -/** - * 应用程序自定义的程序属性配置文件。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@Configuration -@ConfigurationProperties(prefix = "application") -public class ApplicationConfig { - - /** - * token的Http Request Header的key - */ - private String tokenHeaderKey; - /** - * token在过期之前,但是已经需要被刷新时,response返回的header信息的key。 - */ - private String refreshedTokenHeaderKey; - /** - * token 加密用的密钥,该值的长度最少10个字符(过短会报错)。 - */ - private String tokenSigningKey; - /** - * 令牌的过期时间,单位毫秒 - */ - private Long expiration; - /** - * 用户密码被重置之后的缺省密码 - */ - private String defaultUserPassword; - /** - * 上传文件的基础目录 - */ - private String uploadFileBaseDir; - /** - * 授信ip列表,没有填写表示全部信任。多个ip之间逗号分隔,如: http://10.10.10.1:8080,http://10.10.10.2:8080 - */ - private String credentialIpList; - /** - * Session的用户权限在Redis中的过期时间(秒)。 - * 缺省值是 one day - */ - private int sessionExpiredSeconds = 86400; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/DataSourceConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/DataSourceConfig.java deleted file mode 100644 index 6c569de3..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/DataSourceConfig.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.orangeforms.webadmin.config; - -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder; -import org.springframework.boot.context.properties.ConfigurationProperties; -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 org.mybatis.spring.annotation.MapperScan; - -import javax.sql.DataSource; - -/** - * 数据源配置Bean对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -@EnableTransactionManagement -@MapperScan(value = {"com.orangeforms.webadmin.*.dao", "com.orangeforms.common.*.dao"}) -public class DataSourceConfig { - - @Bean(initMethod = "init", destroyMethod = "close") - @Primary - @ConfigurationProperties(prefix = "spring.datasource.druid") - public DataSource druidDataSource() { - return DruidDataSourceBuilder.create().build(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/FilterConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/FilterConfig.java deleted file mode 100644 index 0116c2ce..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/FilterConfig.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.orangeforms.webadmin.config; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.cors.CorsConfiguration; -import org.springframework.web.cors.UrlBasedCorsConfigurationSource; -import org.springframework.web.filter.CorsFilter; - -import javax.servlet.Filter; -import java.nio.charset.StandardCharsets; - -/** - * 这里主要配置Web的各种过滤器和监听器等Servlet容器组件。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class FilterConfig { - - /** - * 配置Ajax跨域过滤器。 - */ - @Bean - public CorsFilter corsFilterRegistration(ApplicationConfig applicationConfig) { - UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource(); - CorsConfiguration corsConfiguration = new CorsConfiguration(); - if (StringUtils.isNotBlank(applicationConfig.getCredentialIpList())) { - if ("*".equals(applicationConfig.getCredentialIpList())) { - corsConfiguration.addAllowedOriginPattern("*"); - } else { - String[] credentialIpList = StringUtils.split(applicationConfig.getCredentialIpList(), ","); - if (credentialIpList.length > 0) { - for (String ip : credentialIpList) { - corsConfiguration.addAllowedOrigin(ip); - } - } - } - corsConfiguration.addAllowedHeader("*"); - corsConfiguration.addAllowedMethod("*"); - corsConfiguration.addExposedHeader(applicationConfig.getRefreshedTokenHeaderKey()); - corsConfiguration.setAllowCredentials(true); - configSource.registerCorsConfiguration("/**", corsConfiguration); - } - return new CorsFilter(configSource); - } - - @Bean - public FilterRegistrationBean characterEncodingFilterRegistration() { - FilterRegistrationBean filterRegistrationBean = new FilterRegistrationBean<>( - new org.springframework.web.filter.CharacterEncodingFilter()); - filterRegistrationBean.addUrlPatterns("/*"); - filterRegistrationBean.addInitParameter("encoding", StandardCharsets.UTF_8.name()); - // forceEncoding强制response也被编码,另外即使request中已经设置encoding,forceEncoding也会重新设置 - filterRegistrationBean.addInitParameter("forceEncoding", "true"); - filterRegistrationBean.setAsyncSupported(true); - return filterRegistrationBean; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/InterceptorConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/InterceptorConfig.java deleted file mode 100644 index 6425b06a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/config/InterceptorConfig.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.orangeforms.webadmin.config; - -import com.orangeforms.webadmin.interceptor.AuthenticationInterceptor; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * 所有的项目拦截器都在这里集中配置 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class InterceptorConfig implements WebMvcConfigurer { - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new AuthenticationInterceptor()).addPathPatterns("/admin/**"); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/interceptor/AuthenticationInterceptor.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/interceptor/AuthenticationInterceptor.java deleted file mode 100644 index 2fbef090..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/interceptor/AuthenticationInterceptor.java +++ /dev/null @@ -1,143 +0,0 @@ -package com.orangeforms.webadmin.interceptor; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.webadmin.config.ApplicationConfig; -import com.orangeforms.webadmin.upms.model.SysPermWhitelist; -import com.orangeforms.webadmin.upms.service.SysPermWhitelistService; -import com.orangeforms.webadmin.upms.service.SysPermService; -import com.orangeforms.common.core.annotation.NoAuthInterface; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.ResponseResult; -import com.orangeforms.common.core.object.TokenData; -import com.orangeforms.common.core.util.ApplicationContextHolder; -import com.orangeforms.common.core.util.JwtUtil; -import com.orangeforms.common.core.util.RedisKeyUtil; -import io.jsonwebtoken.Claims; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.redisson.api.RBucket; -import org.redisson.api.RSet; -import org.redisson.api.RedissonClient; -import org.springframework.web.method.HandlerMethod; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; -import java.util.Set; -import java.util.List; -import java.util.stream.Collectors; - -/** - * 登录用户Token验证、生成和权限验证的拦截器。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class AuthenticationInterceptor implements HandlerInterceptor { - - private final ApplicationConfig appConfig = - ApplicationContextHolder.getBean("applicationConfig"); - - private final RedissonClient redissonClient = ApplicationContextHolder.getBean(RedissonClient.class); - - private final SysPermService sysPermService = - ApplicationContextHolder.getBean(SysPermService.class); - - private static SysPermWhitelistService sysPermWhitelistService = - ApplicationContextHolder.getBean(SysPermWhitelistService.class); - - private static Set whitelistPermSet; - - static { - List sysPermWhitelistList = sysPermWhitelistService.getAllList(); - whitelistPermSet = sysPermWhitelistList.stream() - .map(SysPermWhitelist::getPermUrl).collect(Collectors.toSet()); - } - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { - String url = request.getRequestURI(); - String token = request.getHeader(appConfig.getTokenHeaderKey()); - boolean noLoginUrl = false; - // 如果接口方法标记NoAuthInterface注解,可以直接跳过Token鉴权验证,这里主要为了测试接口方便 - if (handler instanceof HandlerMethod) { - HandlerMethod hm = (HandlerMethod) handler; - if (hm.getBeanType().getAnnotation(NoAuthInterface.class) != null - || hm.getMethodAnnotation(NoAuthInterface.class) != null) { - noLoginUrl = true; - if (StringUtils.isBlank(token)) { - return true; - } - } - } - if (StringUtils.isBlank(token)) { - token = request.getParameter(appConfig.getTokenHeaderKey()); - } - Claims c = JwtUtil.parseToken(token, appConfig.getTokenSigningKey()); - if (JwtUtil.isNullOrExpired(c)) { - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - this.outputResponseMessage(response, - ResponseResult.error(ErrorCodeEnum.UNAUTHORIZED_LOGIN, "用户会话已过期或尚未登录,请重新登录!")); - return false; - } - String sessionId = (String) c.get("sessionId"); - String sessionIdKey = RedisKeyUtil.makeSessionIdKey(sessionId); - RBucket sessionData = redissonClient.getBucket(sessionIdKey); - TokenData tokenData = null; - if (sessionData.isExists()) { - tokenData = JSON.parseObject(sessionData.get(), TokenData.class); - } - if (tokenData == null) { - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - this.outputResponseMessage(response, - ResponseResult.error(ErrorCodeEnum.UNAUTHORIZED_LOGIN, "用户会话已失效,请重新登录!")); - return false; - } - TokenData.addToRequest(tokenData); - // 如果url是免登陆、白名单中,则不需要进行鉴权操作 - if (!noLoginUrl && Boolean.FALSE.equals(tokenData.getIsAdmin()) && !whitelistPermSet.contains(url)) { - RSet permSet = redissonClient.getSet(RedisKeyUtil.makeSessionPermIdKey(sessionId)); - if (!permSet.contains(url)) { - response.setStatus(HttpServletResponse.SC_FORBIDDEN); - this.outputResponseMessage(response, ResponseResult.error(ErrorCodeEnum.NO_OPERATION_PERMISSION)); - return false; - } - } - if (JwtUtil.needToRefresh(c)) { - String refreshedToken = JwtUtil.generateToken(c, appConfig.getExpiration(), appConfig.getTokenSigningKey()); - response.addHeader(appConfig.getRefreshedTokenHeaderKey(), refreshedToken); - } - return true; - } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { - // 这里需要空注解,否则sonar会不happy。 - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) - throws Exception { - // 这里需要空注解,否则sonar会不happy。 - } - - private void outputResponseMessage(HttpServletResponse response, ResponseResult respObj) { - PrintWriter out; - try { - out = response.getWriter(); - } catch (IOException e) { - log.error("Failed to call OutputResponseMessage.", e); - return; - } - response.setContentType("application/json; charset=utf-8"); - out.print(JSON.toJSONString(respObj)); - out.flush(); - out.close(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginController.java deleted file mode 100644 index 715e5c58..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginController.java +++ /dev/null @@ -1,342 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.anji.captcha.model.common.ResponseModel; -import com.anji.captcha.model.vo.CaptchaVO; -import com.anji.captcha.service.CaptchaService; -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.orangeforms.webadmin.config.ApplicationConfig; -import com.orangeforms.webadmin.upms.service.*; -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.webadmin.upms.model.constant.SysUserStatus; -import com.orangeforms.webadmin.upms.model.constant.SysUserType; -import com.orangeforms.common.core.annotation.NoAuthInterface; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.upload.*; -import com.orangeforms.common.redis.cache.SessionCacheHelper; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.redisson.api.RBucket; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.net.URLDecoder; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -/** - * 登录接口控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiSupport(order = 1) -@Api(tags = "用户登录接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/login") -public class LoginController { - - @Autowired - private SysUserService sysUserService; - @Autowired - private SysMenuService sysMenuService; - @Autowired - private SysPermCodeService sysPermCodeService; - @Autowired - private SysPermService sysPermService; - @Autowired - private SysRoleService sysRoleService; - @Autowired - private SysDataPermService sysDataPermService; - @Autowired - private ApplicationConfig appConfig; - @Autowired - private RedissonClient redissonClient; - @Autowired - private SessionCacheHelper cacheHelper; - @Autowired - private PasswordEncoder passwordEncoder; - @Autowired - private CaptchaService captchaService; - @Autowired - private UpDownloaderFactory upDownloaderFactory; - - /** - * 登录接口。 - * - * @param loginName 登录名。 - * @param password 密码。 - * @param captchaVerification 验证码。 - * @return 应答结果对象,其中包括JWT的Token数据,以及菜单列表。 - */ - @ApiImplicitParams({ - // 这里包含密码密文,仅用于方便开发期间的接口测试,集成测试和发布阶段,需要将当前注解去掉。 - // 如果您重新生成了公钥和私钥,请替换password的缺省值。 - @ApiImplicitParam(name = "loginName", defaultValue = "admin"), - @ApiImplicitParam(name = "password", defaultValue = "IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D"), - @ApiImplicitParam(name = "captchaVerification", defaultValue = "为了方便测试,这里可以修改一下代码,hardcode一个每次都ok的验证码") - }) - @NoAuthInterface - @OperationLog(type = SysOperationLogType.LOGIN, saveResponse = false) - @PostMapping("/doLogin") - public ResponseResult doLogin( - @MyRequestBody String loginName, - @MyRequestBody String password, - @MyRequestBody String captchaVerification) throws Exception { - if (MyCommonUtil.existBlankArgument(loginName, password, captchaVerification)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - String errorMessage; - CaptchaVO captchaVO = new CaptchaVO(); - captchaVO.setCaptchaVerification(captchaVerification); - ResponseModel response = captchaService.verification(captchaVO); - if (!response.isSuccess()) { - //验证码校验失败,返回信息告诉前端 - //repCode 0000 无异常,代表成功 - //repCode 9999 服务器内部异常 - //repCode 0011 参数不能为空 - //repCode 6110 验证码已失效,请重新获取 - //repCode 6111 验证失败 - //repCode 6112 获取验证码失败,请联系管理员 - errorMessage = String.format("数据验证失败,验证码错误,错误码 [%s] 错误信息 [%s]", - response.getRepCode(), response.getRepMsg()); - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysUser user = sysUserService.getSysUserByLoginName(loginName); - password = URLDecoder.decode(password, StandardCharsets.UTF_8.name()); - // NOTE: 第一次使用时,请务必阅读ApplicationConstant.PRIVATE_KEY的代码注释。 - // 执行RsaUtil工具类中的main函数,可以生成新的公钥和私钥。 - password = RsaUtil.decrypt(password, ApplicationConstant.PRIVATE_KEY); - if (user == null || !passwordEncoder.matches(password, user.getPassword())) { - return ResponseResult.error(ErrorCodeEnum.INVALID_USERNAME_PASSWORD); - } - if (user.getUserStatus() == SysUserStatus.STATUS_LOCKED) { - errorMessage = "登录失败,用户账号被锁定!"; - return ResponseResult.error(ErrorCodeEnum.INVALID_USER_STATUS, errorMessage); - } - JSONObject jsonData = this.buildLoginData(user); - return ResponseResult.success(jsonData); - } - - /** - * 登出操作。同时将Session相关的信息从缓存中删除。 - * - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.LOGOUT) - @PostMapping("/doLogout") - public ResponseResult doLogout() { - TokenData tokenData = TokenData.takeFromRequest(); - String sessionIdKey = RedisKeyUtil.makeSessionIdKey(tokenData.getSessionId()); - redissonClient.getBucket(sessionIdKey).delete(); - sysPermService.removeUserSysPermCache(tokenData.getSessionId()); - sysDataPermService.removeDataPermCache(tokenData.getSessionId()); - cacheHelper.removeAllSessionCache(tokenData.getSessionId()); - return ResponseResult.success(); - } - - /** - * 在登录之后,通过token再次获取登录信息。 - * 用于在当前浏览器登录系统后,在新tab页中可以免密登录。 - * - * @return 应答结果对象,其中包括JWT的Token数据,以及菜单列表。 - */ - @GetMapping("/getLoginInfo") - public ResponseResult getLoginInfo() { - TokenData tokenData = TokenData.takeFromRequest(); - // 这里解释一下为什么没有缓存menuList和permCodeList。 - // 1. 该操作和权限验证不同,属于低频操作。 - // 2. 第一次登录和再次获取登录信息之间,如果修改了用户的权限,那么本次获取的是最新权限。 - // 3. 上一个问题无法避免,因为即便缓存也是有过期时间的,过期之后还是要从数据库获取的。 - JSONObject jsonData = new JSONObject(); - jsonData.put("showName", tokenData.getShowName()); - jsonData.put("isAdmin", tokenData.getIsAdmin()); - if (StrUtil.isNotBlank(tokenData.getHeadImageUrl())) { - jsonData.put("headImageUrl", tokenData.getHeadImageUrl()); - } - Collection menuList; - Collection permCodeList; - if (tokenData.getIsAdmin()) { - menuList = sysMenuService.getAllMenuList(); - permCodeList = sysPermCodeService.getAllPermCodeList(); - } else { - menuList = sysMenuService.getMenuListByUserId(tokenData.getUserId()); - permCodeList = sysPermCodeService.getPermCodeListByUserId(tokenData.getUserId()); - } - jsonData.put("menuList", menuList); - jsonData.put("permCodeList", permCodeList); - return ResponseResult.success(jsonData); - } - - /** - * 用户修改自己的密码。 - * - * @param oldPass 原有密码。 - * @param newPass 新密码。 - * @return 应答结果对象。 - */ - @PostMapping("/changePassword") - public ResponseResult changePassword( - @MyRequestBody String oldPass, @MyRequestBody String newPass) throws Exception { - if (MyCommonUtil.existBlankArgument(newPass, oldPass)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - TokenData tokenData = TokenData.takeFromRequest(); - SysUser user = sysUserService.getById(tokenData.getUserId()); - oldPass = URLDecoder.decode(oldPass, StandardCharsets.UTF_8.name()); - // NOTE: 第一次使用时,请务必阅读ApplicationConstant.PRIVATE_KEY的代码注释。 - // 执行RsaUtil工具类中的main函数,可以生成新的公钥和私钥。 - oldPass = RsaUtil.decrypt(oldPass, ApplicationConstant.PRIVATE_KEY); - if (user == null || !passwordEncoder.matches(oldPass, user.getPassword())) { - return ResponseResult.error(ErrorCodeEnum.INVALID_USERNAME_PASSWORD); - } - newPass = URLDecoder.decode(newPass, StandardCharsets.UTF_8.name()); - newPass = RsaUtil.decrypt(newPass, ApplicationConstant.PRIVATE_KEY); - if (!sysUserService.changePassword(tokenData.getUserId(), newPass)) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } - - /** - * 上传并修改用户头像。 - * - * @param uploadFile 上传的头像文件。 - */ - @PostMapping("/changeHeadImage") - public void changeHeadImage( - @RequestParam("uploadFile") MultipartFile uploadFile) throws Exception { - String fieldName = "headImageUrl"; - UploadStoreInfo storeInfo = MyModelUtil.getUploadStoreInfo(SysUser.class, fieldName); - BaseUpDownloader upDownloader = upDownloaderFactory.get(storeInfo.getStoreType()); - UploadResponseInfo responseInfo = upDownloader.doUpload(null, - appConfig.getUploadFileBaseDir(), SysUser.class.getSimpleName(), fieldName, true, uploadFile); - if (responseInfo.getUploadFailed()) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, - ResponseResult.error(ErrorCodeEnum.UPLOAD_FAILED, responseInfo.getErrorMessage())); - return; - } - responseInfo.setDownloadUri("/admin/upms/login/downloadHeadImage"); - String newHeadImage = JSONArray.toJSONString(CollUtil.newArrayList(responseInfo)); - if (!sysUserService.changeHeadImage(TokenData.takeFromRequest().getUserId(), newHeadImage)) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, - ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST)); - return; - } - ResponseResult.output(ResponseResult.success(responseInfo)); - } - - /** - * 下载用户头像。 - * - * @param filename 文件名。如果没有提供该参数,就从当前记录的指定字段中读取。 - * @param response Http 应答对象。 - */ - @GetMapping("/downloadHeadImage") - public void downloadHeadImage(String filename, HttpServletResponse response) { - try { - SysUser user = sysUserService.getById(TokenData.takeFromRequest().getUserId()); - if (user == null) { - ResponseResult.output(HttpServletResponse.SC_NOT_FOUND); - return; - } - if (StrUtil.isBlank(user.getHeadImageUrl())) { - ResponseResult.output(HttpServletResponse.SC_BAD_REQUEST); - return; - } - if (!BaseUpDownloader.containFile(user.getHeadImageUrl(), filename)) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN); - return; - } - String fieldName = "headImageUrl"; - UploadStoreInfo storeInfo = MyModelUtil.getUploadStoreInfo(SysUser.class, fieldName); - BaseUpDownloader upDownloader = upDownloaderFactory.get(storeInfo.getStoreType()); - upDownloader.doDownload(appConfig.getUploadFileBaseDir(), - SysUser.class.getSimpleName(), fieldName, filename, true, response); - } catch (Exception e) { - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - log.error(e.getMessage(), e); - } - } - - private JSONObject buildLoginData(SysUser user) { - int deviceType = MyCommonUtil.getDeviceType(); - boolean isAdmin = user.getUserType() == SysUserType.TYPE_ADMIN; - String headImageUrl = user.getHeadImageUrl(); - Map claims = new HashMap<>(3); - String sessionId = user.getLoginName() + "_" + deviceType + "_" + MyCommonUtil.generateUuid(); - claims.put("sessionId", sessionId); - String token = JwtUtil.generateToken(claims, appConfig.getExpiration(), appConfig.getTokenSigningKey()); - JSONObject jsonData = new JSONObject(); - jsonData.put(TokenData.REQUEST_ATTRIBUTE_NAME, token); - jsonData.put("showName", user.getShowName()); - jsonData.put("isAdmin", isAdmin); - if (StrUtil.isNotBlank(headImageUrl)) { - jsonData.put("headImageUrl", headImageUrl); - } - TokenData tokenData = new TokenData(); - tokenData.setSessionId(sessionId); - tokenData.setUserId(user.getUserId()); - tokenData.setDeptId(user.getDeptId()); - tokenData.setLoginName(user.getLoginName()); - tokenData.setShowName(user.getShowName()); - tokenData.setIsAdmin(isAdmin); - tokenData.setLoginIp(IpUtil.getRemoteIpAddress(ContextUtil.getHttpRequest())); - tokenData.setLoginTime(new Date()); - tokenData.setDeviceType(deviceType); - if (StrUtil.isNotBlank(headImageUrl)) { - tokenData.setHeadImageUrl(headImageUrl); - } - List userRoleList = sysRoleService.getSysUserRoleListByUserId(user.getUserId()); - if (CollectionUtils.isNotEmpty(userRoleList)) { - Set userRoleIdSet = userRoleList.stream().map(SysUserRole::getRoleId).collect(Collectors.toSet()); - tokenData.setRoleIds(StringUtils.join(userRoleIdSet, ",")); - } - String sessionIdKey = RedisKeyUtil.makeSessionIdKey(sessionId); - String sessionData = JSON.toJSONString(tokenData, SerializerFeature.WriteNonStringValueAsString); - RBucket bucket = redissonClient.getBucket(sessionIdKey); - bucket.set(sessionData); - bucket.expire(appConfig.getSessionExpiredSeconds(), TimeUnit.SECONDS); - // 这里手动将TokenData存入request,便于OperationLogAspect统一处理操作日志。 - TokenData.addToRequest(tokenData); - Collection menuList; - Collection permCodeList; - if (isAdmin) { - menuList = sysMenuService.getAllMenuList(); - permCodeList = sysPermCodeService.getAllPermCodeList(); - } else { - menuList = sysMenuService.getMenuListByUserId(user.getUserId()); - permCodeList = sysPermCodeService.getPermCodeListByUserId(user.getUserId()); - } - jsonData.put("menuList", menuList); - jsonData.put("permCodeList", permCodeList); - if (user.getUserType() != SysUserType.TYPE_ADMIN) { - // 缓存用户的权限资源 - sysPermService.putUserSysPermCache(sessionId, user.getUserId()); - sysDataPermService.putDataPermCache(sessionId, user.getUserId(), user.getDeptId()); - } - return jsonData; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginUserController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginUserController.java deleted file mode 100644 index 02e301e3..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/LoginUserController.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.RedisKeyUtil; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.redisson.api.RBucket; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.*; - -/** - * 在线用户控制器对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "在线用户接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/loginUser") -public class LoginUserController { - - @Autowired - private RedissonClient redissonClient; - - /** - * 显示在线用户列表。 - * - * @param loginName 登录名过滤。 - * @param pageParam 分页参数。 - * @return 登录用户信息列表。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody String loginName, @MyRequestBody MyPageParam pageParam) { - int queryCount = pageParam.getPageNum() * pageParam.getPageSize(); - int skipCount = (pageParam.getPageNum() - 1) * pageParam.getPageSize(); - String patternKey; - if (StrUtil.isBlank(loginName)) { - patternKey = RedisKeyUtil.getSessionIdPrefix() + "*"; - } else { - patternKey = RedisKeyUtil.getSessionIdPrefix(loginName) + "*"; - } - List loginUserInfoList = new LinkedList<>(); - Iterable keys = redissonClient.getKeys().getKeysByPattern(patternKey); - for (String key : keys) { - loginUserInfoList.add(this.buildTokenDataByRedisKey(key)); - } - 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())); - } - - /** - * 强制下线指定登录会话。 - * - * @param sessionId 待强制下线的SessionId。 - * @return 应答结果对象。 - */ - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody String sessionId) { - // 为了保证被剔除用户正在进行的操作不被干扰,这里只是删除sessionIdKey即可,这样可以使强制下线操作更加平滑。 - // 比如,如果删除操作权限或数据权限的redis session key,那么正在请求数据的操作就会报错。 - redissonClient.getBucket(RedisKeyUtil.makeSessionIdKey(sessionId)).delete(); - return ResponseResult.success(); - } - - private LoginUserInfo buildTokenDataByRedisKey(String key) { - RBucket sessionData = redissonClient.getBucket(key); - TokenData tokenData = JSON.parseObject(sessionData.get(), TokenData.class); - return BeanUtil.copyProperties(tokenData, LoginUserInfo.class); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDataPermController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDataPermController.java deleted file mode 100644 index 609843b0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDataPermController.java +++ /dev/null @@ -1,300 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.annotations.Api; -import com.alibaba.fastjson.TypeReference; -import com.github.pagehelper.Page; -import com.github.pagehelper.page.PageMethod; -import lombok.extern.slf4j.Slf4j; -import com.orangeforms.webadmin.upms.dto.SysDataPermDto; -import com.orangeforms.webadmin.upms.dto.SysUserDto; -import com.orangeforms.webadmin.upms.vo.SysDataPermVo; -import com.orangeforms.webadmin.upms.vo.SysUserVo; -import com.orangeforms.webadmin.upms.model.SysDataPerm; -import com.orangeforms.webadmin.upms.model.SysUser; -import com.orangeforms.webadmin.upms.service.SysDataPermService; -import com.orangeforms.webadmin.upms.service.SysUserService; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 数据权限接口控制器对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "数据权限管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysDataPerm") -public class SysDataPermController { - - @Autowired - private SysDataPermService sysDataPermService; - @Autowired - private SysUserService sysUserService; - - /** - * 添加新数据权限操作。 - * - * @param sysDataPermDto 新增对象。 - * @param deptIdListString 数据权限关联的部门Id列表,多个之间逗号分隔。 - * @return 应答结果对象。包含新增数据权限对象的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = { - "sysDataPermDto.dataPermId", - "sysDataPermDto.createTimeStart", - "sysDataPermDto.createTimeEnd", - "sysDataPermDto.searchString"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add( - @MyRequestBody SysDataPermDto sysDataPermDto, @MyRequestBody String deptIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysDataPermDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysDataPerm sysDataPerm = MyModelUtil.copyTo(sysDataPermDto, SysDataPerm.class); - CallResult result = sysDataPermService.verifyRelatedData(sysDataPerm, deptIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set deptIdSet = null; - if (result.getData() != null) { - deptIdSet = result.getData().getObject("deptIdSet", new TypeReference>(){}); - } - sysDataPermService.saveNew(sysDataPerm, deptIdSet); - return ResponseResult.success(sysDataPerm.getDataPermId()); - } - - /** - * 更新数据权限操作。 - * - * @param sysDataPermDto 更新的数据权限对象。 - * @param deptIdListString 数据权限关联的部门Id列表,多个之间逗号分隔。 - * @return 应答结果对象。 - */ - @ApiOperationSupport(ignoreParameters = { - "sysDataPermDto.createTimeStart", - "sysDataPermDto.createTimeEnd", - "sysDataPermDto.searchString"}) - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update( - @MyRequestBody SysDataPermDto sysDataPermDto, @MyRequestBody String deptIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysDataPermDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysDataPerm originalSysDataPerm = sysDataPermService.getById(sysDataPermDto.getDataPermId()); - if (originalSysDataPerm == null) { - errorMessage = "数据验证失败,当前数据权限并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - SysDataPerm sysDataPerm = MyModelUtil.copyTo(sysDataPermDto, SysDataPerm.class); - CallResult result = sysDataPermService.verifyRelatedData(sysDataPerm, deptIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set deptIdSet = null; - if (result.getData() != null) { - deptIdSet = result.getData().getObject("deptIdSet", new TypeReference>(){}); - } - if (!sysDataPermService.update(sysDataPerm, originalSysDataPerm, deptIdSet)) { - errorMessage = "更新失败,数据不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 删除数据权限操作。 - * - * @param dataPermId 待删除数据权限主键Id。 - * @return 应答数据结果。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long dataPermId) { - if (MyCommonUtil.existBlankArgument(dataPermId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysDataPermService.remove(dataPermId)) { - String errorMessage = "数据操作失败,数据权限不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 查看数据权限列表。 - * - * @param sysDataPermDtoFilter 数据权限查询过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象。包含数据权限列表。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SysDataPermDto sysDataPermDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysDataPerm filter = MyModelUtil.copyTo(sysDataPermDtoFilter, SysDataPerm.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysDataPerm.class); - List dataPermList = sysDataPermService.getSysDataPermList(filter, orderBy); - List dataPermVoList = MyModelUtil.copyCollectionTo(dataPermList, SysDataPermVo.class); - long totalCount = 0L; - if (dataPermList instanceof Page) { - totalCount = ((Page) dataPermList).getTotal(); - } - return ResponseResult.success(MyPageUtil.makeResponseData(dataPermVoList, totalCount)); - } - - /** - * 查看单条数据权限详情。 - * - * @param dataPermId 数据权限的主键Id。 - * @return 应答结果对象,包含数据权限的详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long dataPermId) { - if (MyCommonUtil.existBlankArgument(dataPermId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SysDataPerm dataPerm = sysDataPermService.getByIdWithRelation(dataPermId, MyRelationParam.full()); - if (dataPerm == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysDataPermVo dataPermVo = MyModelUtil.copyTo(dataPerm, SysDataPermVo.class); - return ResponseResult.success(dataPermVo); - } - - /** - * 获取不包含指定数据权限Id的用户列表。 - * 用户和数据权限是多对多关系,当前接口将返回没有赋值指定DataPermId的用户列表。可用于给数据权限添加新用户。 - * - * @param dataPermId 数据权限主键Id。 - * @param sysUserDtoFilter 用户数据的过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含用户列表数据。 - */ - @PostMapping("/listNotInDataPermUser") - public ResponseResult> listNotInDataPermUser( - @MyRequestBody Long dataPermId, - @MyRequestBody SysUserDto sysUserDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - ResponseResult verifyResult = this.doDataPermUserVerify(dataPermId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); - } - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysUser filter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class); - List userList = - sysUserService.getNotInSysUserListByDataPermId(dataPermId, filter, orderBy); - List userVoList = MyModelUtil.copyCollectionTo(userList, SysUserVo.class); - return ResponseResult.success(MyPageUtil.makeResponseData(userVoList)); - } - - /** - * 拥有指定数据权限的用户列表。 - * - * @param dataPermId 数据权限Id。 - * @param sysUserDtoFilter 用户过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含用户列表数据。 - */ - @PostMapping("/listDataPermUser") - public ResponseResult> listDataPermUser( - @MyRequestBody Long dataPermId, - @MyRequestBody SysUserDto sysUserDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - ResponseResult verifyResult = this.doDataPermUserVerify(dataPermId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); - } - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysUser filter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class); - List userList = - sysUserService.getSysUserListByDataPermId(dataPermId, filter, orderBy); - List userVoList = MyModelUtil.copyCollectionTo(userList, SysUserVo.class); - return ResponseResult.success(MyPageUtil.makeResponseData(userVoList)); - } - - private ResponseResult doDataPermUserVerify(Long dataPermId) { - if (MyCommonUtil.existBlankArgument(dataPermId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysDataPermService.existId(dataPermId)) { - return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); - } - return ResponseResult.success(); - } - - /** - * 为指定数据权限添加用户列表。该操作可同时给一批用户赋值数据权限,并在同一事务内完成。 - * - * @param dataPermId 数据权限主键Id。 - * @param userIdListString 逗号分隔的用户Id列表。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.ADD_M2M) - @PostMapping("/addDataPermUser") - public ResponseResult addDataPermUser( - @MyRequestBody Long dataPermId, @MyRequestBody String userIdListString) { - if (MyCommonUtil.existBlankArgument(dataPermId, userIdListString)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - Set userIdSet = - Arrays.stream(userIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysDataPermService.existId(dataPermId) - || !sysUserService.existUniqueKeyList("userId", userIdSet)) { - return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); - } - sysDataPermService.addDataPermUserList(dataPermId, userIdSet); - return ResponseResult.success(); - } - - /** - * 为指定用户移除指定数据权限。 - * - * @param dataPermId 指定数据权限主键Id。 - * @param userId 指定用户主键Id。 - * @return 应答数据结果。 - */ - @OperationLog(type = SysOperationLogType.DELETE_M2M) - @PostMapping("/deleteDataPermUser") - public ResponseResult deleteDataPermUser( - @MyRequestBody Long dataPermId, @MyRequestBody Long userId) { - if (MyCommonUtil.existBlankArgument(dataPermId, userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysDataPermService.removeDataPermUser(dataPermId, userId)) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDeptController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDeptController.java deleted file mode 100644 index 9d2dfb1d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysDeptController.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import cn.jimmyshi.beanquery.BeanQuery; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import com.github.pagehelper.page.PageMethod; -import com.orangeforms.webadmin.upms.vo.*; -import com.orangeforms.webadmin.upms.dto.*; -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.webadmin.upms.service.*; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.constant.*; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.ObjectUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.*; - -/** - * 部门管理操作控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "部门管理管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysDept") -public class SysDeptController { - - @Autowired - private SysDeptService sysDeptService; - - /** - * 新增部门管理数据。 - * - * @param sysDeptDto 新增对象。 - * @return 应答结果对象,包含新增对象主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"sysDeptDto.deptId"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add(@MyRequestBody SysDeptDto sysDeptDto) { - String errorMessage = MyCommonUtil.getModelValidationError(sysDeptDto, false); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysDept sysDept = MyModelUtil.copyTo(sysDeptDto, SysDept.class); - // 验证父Id的数据合法性 - SysDept parentSysDept = null; - if (MyCommonUtil.isNotBlankOrNull(sysDept.getParentId())) { - parentSysDept = sysDeptService.getById(sysDept.getParentId()); - if (parentSysDept == null) { - errorMessage = "数据验证失败,关联的父节点并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_PARENT_ID_NOT_EXIST, errorMessage); - } - } - sysDept = sysDeptService.saveNew(sysDept, parentSysDept); - return ResponseResult.success(sysDept.getDeptId()); - } - - /** - * 更新部门管理数据。 - * - * @param sysDeptDto 更新对象。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update(@MyRequestBody SysDeptDto sysDeptDto) { - String errorMessage = MyCommonUtil.getModelValidationError(sysDeptDto, true); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysDept sysDept = MyModelUtil.copyTo(sysDeptDto, SysDept.class); - SysDept originalSysDept = sysDeptService.getById(sysDept.getDeptId()); - if (originalSysDept == null) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,当前 [数据] 并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - // 验证父Id的数据合法性 - if (MyCommonUtil.isNotBlankOrNull(sysDept.getParentId()) - && ObjectUtils.notEqual(sysDept.getParentId(), originalSysDept.getParentId())) { - SysDept parentSysDept = sysDeptService.getById(sysDept.getParentId()); - if (parentSysDept == null) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,关联的 [父节点] 并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_PARENT_ID_NOT_EXIST, errorMessage); - } - } - if (!sysDeptService.update(sysDept, originalSysDept)) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } - - /** - * 删除部门管理数据。 - * - * @param deptId 删除对象主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long deptId) { - String errorMessage; - if (MyCommonUtil.existBlankArgument(deptId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return this.doDelete(deptId); - } - - /** - * 列出符合过滤条件的部门管理列表。 - * - * @param sysDeptDtoFilter 过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含查询结果集。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SysDeptDto sysDeptDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysDept sysDeptFilter = MyModelUtil.copyTo(sysDeptDtoFilter, SysDept.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysDept.class); - List sysDeptList = sysDeptService.getSysDeptListWithRelation(sysDeptFilter, orderBy); - return ResponseResult.success(MyPageUtil.makeResponseData(sysDeptList, SysDept.INSTANCE)); - } - - /** - * 查看指定部门管理对象详情。 - * - * @param deptId 指定对象主键Id。 - * @return 应答结果对象,包含对象详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long deptId) { - if (MyCommonUtil.existBlankArgument(deptId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SysDept sysDept = sysDeptService.getByIdWithRelation(deptId, MyRelationParam.full()); - if (sysDept == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysDeptVo sysDeptVo = SysDept.INSTANCE.fromModel(sysDept); - return ResponseResult.success(sysDeptVo); - } - - /** - * 以字典形式返回全部部门管理数据集合。字典的键值为[deptId, deptName]。 - * 白名单接口,登录用户均可访问。 - * - * @param filter 过滤对象。 - * @return 应答结果对象,包含的数据为 List>,map中包含两条记录,key的值分别是id和name,value对应具体数据。 - */ - @GetMapping("/listDict") - public ResponseResult>> listDict(SysDept filter) { - List resultList = sysDeptService.getListByFilter(filter); - return ResponseResult.success(BeanQuery.select( - "parentId as parentId", "deptId as id", "deptName as name").executeFrom(resultList)); - } - - /** - * 根据字典Id集合,获取查询后的字典数据。 - * - * @param dictIds 字典Id集合。 - * @return 应答结果对象,包含字典形式的数据集合。 - */ - @PostMapping("/listDictByIds") - public ResponseResult>> listDictByIds( - @MyRequestBody(elementType = Long.class) List dictIds) { - List resultList = sysDeptService.getInList(new HashSet<>(dictIds)); - return ResponseResult.success(BeanQuery.select( - "parentId as parentId", "deptId as id", "deptName as name").executeFrom(resultList)); - } - - /** - * 根据父主键Id,以字典的形式返回其下级数据列表。 - * 白名单接口,登录用户均可访问。 - * - * @param parentId 父主键Id。 - * @return 按照字典的形式返回下级数据列表。 - */ - @GetMapping("/listDictByParentId") - public ResponseResult>> listDictByParentId(@RequestParam(required = false) Long parentId) { - List resultList = sysDeptService.getListByParentId("parentId", parentId); - return ResponseResult.success(BeanQuery.select( - "parentId as parentId", "deptId as id", "deptName as name").executeFrom(resultList)); - } - - private ResponseResult doDelete(Long deptId) { - String errorMessage; - // 验证关联Id的数据合法性 - SysDept originalSysDept = sysDeptService.getById(deptId); - if (originalSysDept == null) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - if (sysDeptService.hasChildren(deptId)) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,当前 [对象存在子对象] ,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.HAS_CHILDREN_DATA, errorMessage); - } - if (sysDeptService.hasChildrenUser(deptId)) { - errorMessage = "数据验证失败,请先移除部门用户数据后,再删除当前部门!"; - return ResponseResult.error(ErrorCodeEnum.HAS_CHILDREN_DATA, errorMessage); - } - if (!sysDeptService.remove(deptId)) { - errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysMenuController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysMenuController.java deleted file mode 100644 index c5e1704c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysMenuController.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson.TypeReference; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import com.orangeforms.webadmin.upms.dto.SysMenuDto; -import com.orangeforms.webadmin.upms.vo.SysMenuVo; -import com.orangeforms.webadmin.upms.model.SysMenu; -import com.orangeforms.webadmin.upms.model.constant.SysMenuType; -import com.orangeforms.webadmin.upms.service.SysMenuService; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.*; - -/** - * 菜单管理接口控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "菜单管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysMenu") -public class SysMenuController { - - @Autowired - private SysMenuService sysMenuService; - - /** - * 添加新菜单操作。 - * - * @param sysMenuDto 新菜单对象。 - * @param permCodeIdListString 与当前菜单Id绑定的权限Id列表,多个权限之间逗号分隔。 - * @return 应答结果对象,包含新增菜单的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"sysMenuDto.menuId"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add( - @MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysMenuDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysMenu sysMenu = MyModelUtil.copyTo(sysMenuDto, SysMenu.class); - if (sysMenu.getParentId() != null) { - SysMenu parentSysMenu = sysMenuService.getById(sysMenu.getParentId()); - if (parentSysMenu == null) { - errorMessage = "数据验证失败,关联的父菜单不存在!"; - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - if (parentSysMenu.getOnlineFormId() != null) { - errorMessage = "数据验证失败,不能动态表单菜单添加父菜单!"; - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - } - CallResult result = sysMenuService.verifyRelatedData(sysMenu, null, permCodeIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set permCodeIdSet = null; - if (result.getData() != null) { - permCodeIdSet = result.getData().getObject("permCodeIdSet", new TypeReference>(){}); - } - sysMenuService.saveNew(sysMenu, permCodeIdSet); - return ResponseResult.success(sysMenu.getMenuId()); - } - - /** - * 更新菜单数据操作。 - * - * @param sysMenuDto 更新菜单对象。 - * @param permCodeIdListString 与当前菜单Id绑定的权限Id列表,多个权限之间逗号分隔。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update( - @MyRequestBody SysMenuDto sysMenuDto, @MyRequestBody String permCodeIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysMenuDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysMenu originalSysMenu = sysMenuService.getById(sysMenuDto.getMenuId()); - if (originalSysMenu == null) { - errorMessage = "数据验证失败,当前菜单并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - SysMenu sysMenu = MyModelUtil.copyTo(sysMenuDto, SysMenu.class); - if (ObjectUtil.notEqual(originalSysMenu.getOnlineFormId(), sysMenu.getOnlineFormId())) { - if (originalSysMenu.getOnlineFormId() == null) { - errorMessage = "数据验证失败,不能为当前菜单添加在线表单Id属性!"; - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - if (sysMenu.getOnlineFormId() == null) { - errorMessage = "数据验证失败,不能去掉当前菜单的在线表单Id属性!"; - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - } - if (originalSysMenu.getOnlineFormId() != null - && originalSysMenu.getMenuType().equals(SysMenuType.TYPE_BUTTON)) { - errorMessage = "数据验证失败,在线表单的内置菜单不能编辑!"; - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - CallResult result = sysMenuService.verifyRelatedData(sysMenu, originalSysMenu, permCodeIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set permCodeIdSet = null; - if (result.getData() != null) { - permCodeIdSet = result.getData().getObject("permCodeIdSet", new TypeReference>(){}); - } - if (!sysMenuService.update(sysMenu, originalSysMenu, permCodeIdSet)) { - errorMessage = "数据验证失败,当前权限字并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 删除指定菜单操作。 - * - * @param menuId 指定菜单主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long menuId) { - if (MyCommonUtil.existBlankArgument(menuId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - String errorMessage; - SysMenu menu = sysMenuService.getById(menuId); - if (menu == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - if (menu.getOnlineFormId() != null && menu.getMenuType().equals(SysMenuType.TYPE_BUTTON)) { - errorMessage = "数据验证失败,在线表单的内置菜单不能删除!"; - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - // 对于在线表单,无需进行子菜单的验证,而是在删除的时候,连同子菜单一起删除。 - if (menu.getOnlineFormId() == null && sysMenuService.hasChildren(menuId)) { - errorMessage = "数据验证失败,当前菜单存在下级菜单!"; - return ResponseResult.error(ErrorCodeEnum.HAS_CHILDREN_DATA, errorMessage); - } - if (!sysMenuService.remove(menu)) { - errorMessage = "数据操作失败,菜单不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 获取全部菜单列表。 - * - * @return 应答结果对象,包含全部菜单数据列表。 - */ - @PostMapping("/list") - public ResponseResult> list() { - List sysMenuList = sysMenuService.getAllListByOrder("showOrder"); - return ResponseResult.success(MyModelUtil.copyCollectionTo(sysMenuList, SysMenuVo.class)); - } - - /** - * 查看指定菜单数据详情。 - * - * @param menuId 指定菜单主键Id。 - * @return 应答结果对象,包含菜单详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long menuId) { - if (MyCommonUtil.existBlankArgument(menuId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SysMenu sysMenu = sysMenuService.getByIdWithRelation(menuId, MyRelationParam.full()); - if (sysMenu == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysMenuVo sysMenuVo = MyModelUtil.copyTo(sysMenu, SysMenuVo.class); - return ResponseResult.success(sysMenuVo); - } - - /** - * 查询菜单的权限资源地址列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param url 权限资源地址过滤条件。 - * @return 应答对象,包含从菜单到权限资源的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysPermWithDetail") - public ResponseResult>> listSysPermWithDetail(Long menuId, String url) { - if (MyCommonUtil.isBlankOrNull(menuId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysMenuService.getSysPermListWithDetail(menuId, url)); - } - - /** - * 查询菜单的用户列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param loginName 登录名。 - * @return 应答对象,包含从菜单到用户的完整权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysUserWithDetail") - public ResponseResult>> listSysUserWithDetail(Long menuId, String loginName) { - if (MyCommonUtil.isBlankOrNull(menuId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysMenuService.getSysUserListWithDetail(menuId, loginName)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysOperationLogController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysOperationLogController.java deleted file mode 100644 index c1f0bb97..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysOperationLogController.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import com.github.pagehelper.Page; -import com.github.pagehelper.page.PageMethod; -import io.swagger.annotations.Api; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.core.util.MyPageUtil; -import com.orangeforms.common.log.model.SysOperationLog; -import com.orangeforms.common.log.service.SysOperationLogService; -import com.orangeforms.webadmin.upms.dto.SysOperationLogDto; -import com.orangeforms.webadmin.upms.vo.SysOperationLogVo; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 操作日志接口控制器对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "操作日志接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysOperationLog") -public class SysOperationLogController { - - @Autowired - private SysOperationLogService operationLogService; - - /** - * 数据权限列表。 - * - * @param sysOperationLogDtoFilter 操作日志查询过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象。包含操作日志列表。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SysOperationLogDto sysOperationLogDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysOperationLog filter = MyModelUtil.copyTo(sysOperationLogDtoFilter, SysOperationLog.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysOperationLog.class); - List operationLogList = operationLogService.getSysOperationLogList(filter, orderBy); - List operationLogVoList = MyModelUtil.copyCollectionTo(operationLogList, SysOperationLogVo.class); - long totalCount = 0L; - if (operationLogList instanceof Page) { - totalCount = ((Page) operationLogList).getTotal(); - } - return ResponseResult.success(MyPageUtil.makeResponseData(operationLogVoList, totalCount)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermCodeController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermCodeController.java deleted file mode 100644 index 084c5dd8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermCodeController.java +++ /dev/null @@ -1,195 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.annotations.Api; -import com.alibaba.fastjson.TypeReference; -import lombok.extern.slf4j.Slf4j; -import com.orangeforms.webadmin.upms.dto.SysPermCodeDto; -import com.orangeforms.webadmin.upms.vo.SysPermCodeVo; -import com.orangeforms.webadmin.upms.model.SysPermCode; -import com.orangeforms.webadmin.upms.service.SysPermCodeService; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.DuplicateKeyException; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.*; - -/** - * 权限字管理接口控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "权限字管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysPermCode") -public class SysPermCodeController { - - @Autowired - private SysPermCodeService sysPermCodeService; - - /** - * 新增权限字操作。 - * - * @param sysPermCodeDto 新增权限字对象。 - * @param permIdListString 与当前权限Id绑定的权限资源Id列表,多个权限资源之间逗号分隔。 - * @return 应答结果对象,包含新增权限字的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"sysPermCodeDto.permCodeId"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add( - @MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysPermCodeDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED); - } - SysPermCode sysPermCode = MyModelUtil.copyTo(sysPermCodeDto, SysPermCode.class); - CallResult result = sysPermCodeService.verifyRelatedData(sysPermCode, null, permIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set permIdSet = null; - if (result.getData() != null) { - permIdSet = result.getData().getObject("permIdSet", new TypeReference>(){}); - } - sysPermCode = sysPermCodeService.saveNew(sysPermCode, permIdSet); - return ResponseResult.success(sysPermCode.getPermCodeId()); - } - - /** - * 更新权限字操作。 - * - * @param sysPermCodeDto 更新权限字对象。 - * @param permIdListString 与当前权限Id绑定的权限资源Id列表,多个权限资源之间逗号分隔。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update( - @MyRequestBody SysPermCodeDto sysPermCodeDto, @MyRequestBody String permIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysPermCodeDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysPermCode originalSysPermCode = sysPermCodeService.getById(sysPermCodeDto.getPermCodeId()); - if (originalSysPermCode == null) { - errorMessage = "数据验证失败,当前权限字并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - SysPermCode sysPermCode = MyModelUtil.copyTo(sysPermCodeDto, SysPermCode.class); - CallResult result = sysPermCodeService.verifyRelatedData(sysPermCode, originalSysPermCode, permIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set permIdSet = null; - if (result.getData() != null) { - permIdSet = result.getData().getObject("permIdSet", new TypeReference>(){}); - } - try { - if (!sysPermCodeService.update(sysPermCode, originalSysPermCode, permIdSet)) { - errorMessage = "数据验证失败,当前权限字并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - } catch (DuplicateKeyException e) { - errorMessage = "数据操作失败,权限字编码已经存在!"; - return ResponseResult.error(ErrorCodeEnum.DUPLICATED_UNIQUE_KEY, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 删除指定权限字操作。 - * - * @param permCodeId 指定的权限字主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long permCodeId) { - if (MyCommonUtil.existBlankArgument(permCodeId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - String errorMessage; - if (sysPermCodeService.hasChildren(permCodeId)) { - errorMessage = "数据验证失败,当前权限字存在下级权限字!"; - return ResponseResult.error(ErrorCodeEnum.HAS_CHILDREN_DATA, errorMessage); - } - if (!sysPermCodeService.remove(permCodeId)) { - errorMessage = "数据操作失败,权限字不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 查看权限字列表。 - * - * @return 应答结果对象,包含权限字列表。 - */ - @PostMapping("/list") - public ResponseResult> list() { - List sysPermCodeList = - sysPermCodeService.getAllListByOrder("permCodeType", "showOrder"); - return ResponseResult.success(MyModelUtil.copyCollectionTo(sysPermCodeList, SysPermCodeVo.class)); - } - - /** - * 查看权限字对象详情。 - * - * @param permCodeId 指定权限字主键Id。 - * @return 应答结果对象,包含权限字对象详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long permCodeId) { - if (MyCommonUtil.existBlankArgument(permCodeId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SysPermCode sysPermCode = - sysPermCodeService.getByIdWithRelation(permCodeId, MyRelationParam.full()); - if (sysPermCode == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysPermCodeVo sysPermCodeVo = MyModelUtil.copyTo(sysPermCode, SysPermCodeVo.class); - return ResponseResult.success(sysPermCodeVo); - } - - /** - * 查询权限字的用户列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param loginName 登录名。 - * @return 应答对象。包含从权限字到用户的完整权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysUserWithDetail") - public ResponseResult>> listSysUserWithDetail(Long permCodeId, String loginName) { - if (MyCommonUtil.isBlankOrNull(permCodeId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysPermCodeService.getSysUserListWithDetail(permCodeId, loginName)); - } - - /** - * 查询权限字的角色列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param roleName 角色名。 - * @return 应答对象。包含从权限字到角色的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysRoleWithDetail") - public ResponseResult>> listSysRoleWithDetail(Long permCodeId, String roleName) { - if (MyCommonUtil.isBlankOrNull(permCodeId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysPermCodeService.getSysRoleListWithDetail(permCodeId, roleName)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermController.java deleted file mode 100644 index 6c3ca820..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermController.java +++ /dev/null @@ -1,196 +0,0 @@ -package com.orangeforms.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; -import com.orangeforms.webadmin.upms.dto.SysPermDto; -import com.orangeforms.webadmin.upms.vo.SysPermVo; -import com.orangeforms.webadmin.upms.model.SysPerm; -import com.orangeforms.webadmin.upms.service.SysPermService; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.List; -import java.util.Map; - -/** - * 权限资源管理接口控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "权限资源管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysPerm") -public class SysPermController { - - @Autowired - private SysPermService sysPermService; - - /** - * 新增权限资源操作。 - * - * @param sysPermDto 新增权限资源对象。 - * @return 应答结果对象,包含新增权限资源的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"sysPermDto.permId"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add(@MyRequestBody SysPermDto sysPermDto) { - String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysPerm sysPerm = MyModelUtil.copyTo(sysPermDto, SysPerm.class); - CallResult result = sysPermService.verifyRelatedData(sysPerm, null); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - sysPerm = sysPermService.saveNew(sysPerm); - return ResponseResult.success(sysPerm.getPermId()); - } - - /** - * 更新权限资源操作。 - * - * @param sysPermDto 更新权限资源对象。 - * @return 应答结果对象,包含更新权限资源的主键Id。 - */ - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update(@MyRequestBody SysPermDto sysPermDto) { - String errorMessage = MyCommonUtil.getModelValidationError(sysPermDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysPerm originalPerm = sysPermService.getById(sysPermDto.getPermId()); - if (originalPerm == null) { - errorMessage = "数据验证失败,当前权限资源并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - SysPerm sysPerm = MyModelUtil.copyTo(sysPermDto, SysPerm.class); - CallResult result = sysPermService.verifyRelatedData(sysPerm, originalPerm); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - sysPermService.update(sysPerm, originalPerm); - return ResponseResult.success(); - } - - /** - * 删除指定权限资源操作。 - * - * @param permId 指定的权限资源主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long permId) { - if (MyCommonUtil.existBlankArgument(permId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysPermService.remove(permId)) { - String errorMessage = "数据操作失败,权限不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 查看权限资源对象详情。 - * - * @param permId 指定权限资源主键Id。 - * @return 应答结果对象,包含权限资源对象详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long permId) { - if (MyCommonUtil.existBlankArgument(permId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SysPerm perm = sysPermService.getById(permId); - if (perm == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysPermVo permVo = MyModelUtil.copyTo(perm, SysPermVo.class); - return ResponseResult.success(permVo); - } - - /** - * 查看权限资源列表。 - * - * @param sysPermDtoFilter 过滤对象。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含权限资源列表。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SysPermDto sysPermDtoFilter, @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysPerm filter = MyModelUtil.copyTo(sysPermDtoFilter, SysPerm.class); - List permList = sysPermService.getPermListWithRelation(filter); - List permVoList = MyModelUtil.copyCollectionTo(permList, SysPermVo.class); - long totalCount = 0L; - if (permList instanceof Page) { - totalCount = ((Page) permList).getTotal(); - } - return ResponseResult.success(MyPageUtil.makeResponseData(permVoList, totalCount)); - } - - /** - * 查询权限资源地址的用户列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param loginName 登录名。 - * @return 应答对象。包含从权限资源到用户的完整权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysUserWithDetail") - public ResponseResult>> listSysUserWithDetail(Long permId, String loginName) { - if (MyCommonUtil.isBlankOrNull(permId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysPermService.getSysUserListWithDetail(permId, loginName)); - } - - /** - * 查询权限资源地址的角色列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param roleName 角色名。 - * @return 应答对象。包含从权限资源到角色的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysRoleWithDetail") - public ResponseResult>> listSysRoleWithDetail(Long permId, String roleName) { - if (MyCommonUtil.isBlankOrNull(permId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysPermService.getSysRoleListWithDetail(permId, roleName)); - } - - /** - * 查询权限资源地址的菜单列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param menuName 菜单名。 - * @return 应答对象。包含从权限资源到菜单的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysMenuWithDetail") - public ResponseResult>> listSysMenuWithDetail(Long permId, String menuName) { - if (MyCommonUtil.isBlankOrNull(permId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysPermService.getSysMenuListWithDetail(permId, menuName)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermModuleController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermModuleController.java deleted file mode 100644 index 97f2281a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysPermModuleController.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.annotations.Api; -import lombok.extern.slf4j.Slf4j; -import com.orangeforms.webadmin.upms.dto.SysPermModuleDto; -import com.orangeforms.webadmin.upms.vo.SysPermModuleVo; -import com.orangeforms.webadmin.upms.model.SysPerm; -import com.orangeforms.webadmin.upms.model.SysPermModule; -import com.orangeforms.webadmin.upms.service.SysPermModuleService; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * 权限资源模块管理接口控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "权限资源模块管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysPermModule") -public class SysPermModuleController { - - @Autowired - private SysPermModuleService sysPermModuleService; - - /** - * 新增权限资源模块操作。 - * - * @param sysPermModuleDto 新增权限资源模块对象。 - * @return 应答结果对象,包含新增权限资源模块的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"sysPermModuleDto.moduleId"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add(@MyRequestBody SysPermModuleDto sysPermModuleDto) { - String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysPermModule sysPermModule = MyModelUtil.copyTo(sysPermModuleDto, SysPermModule.class); - if (sysPermModule.getParentId() != null - && sysPermModuleService.getById(sysPermModule.getParentId()) == null) { - errorMessage = "数据验证失败,关联的上级权限模块并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_PARENT_ID_NOT_EXIST, errorMessage); - } - sysPermModuleService.saveNew(sysPermModule); - return ResponseResult.success(sysPermModule.getModuleId()); - } - - /** - * 更新权限资源模块操作。 - * - * @param sysPermModuleDto 更新权限资源模块对象。 - * @return 应答结果对象,包含新增权限资源模块的主键Id。 - */ - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update(@MyRequestBody SysPermModuleDto sysPermModuleDto) { - String errorMessage = MyCommonUtil.getModelValidationError(sysPermModuleDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysPermModule sysPermModule = MyModelUtil.copyTo(sysPermModuleDto, SysPermModule.class); - SysPermModule originalPermModule = sysPermModuleService.getById(sysPermModule.getModuleId()); - if (originalPermModule == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - if (sysPermModule.getParentId() != null - && !sysPermModule.getParentId().equals(originalPermModule.getParentId())) { - if (sysPermModuleService.getById(sysPermModule.getParentId()) == null) { - errorMessage = "数据验证失败,关联的上级权限模块并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_PARENT_ID_NOT_EXIST, errorMessage); - } - } - if (!sysPermModuleService.update(sysPermModule, originalPermModule)) { - errorMessage = "数据验证失败,当前模块并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 删除指定权限资源模块操作。 - * - * @param moduleId 指定的权限资源模块主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long moduleId) { - if (MyCommonUtil.existBlankArgument(moduleId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - String errorMessage; - if (sysPermModuleService.hasChildren(moduleId) - || sysPermModuleService.hasModulePerms(moduleId)) { - errorMessage = "数据验证失败,当前权限模块存在子模块或权限资源,请先删除关联数据!"; - return ResponseResult.error(ErrorCodeEnum.HAS_CHILDREN_DATA, errorMessage); - } - if (!sysPermModuleService.remove(moduleId)) { - errorMessage = "数据操作失败,权限模块不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 查看全部权限资源模块列表。 - * - * @return 应答结果对象,包含权限资源模块列表。 - */ - @PostMapping("/list") - public ResponseResult> list() { - List permModuleList = sysPermModuleService.getAllListByOrder("showOrder"); - return ResponseResult.success(MyModelUtil.copyCollectionTo(permModuleList, SysPermModuleVo.class)); - } - - /** - * 列出全部权限资源模块及其下级关联的权限资源列表。 - * - * @return 应答结果对象,包含树状列表,结构为权限资源模块和权限资源之间的树状关系。 - */ - @PostMapping("/listAll") - public ResponseResult>> listAll() { - List sysPermModuleList = sysPermModuleService.getPermModuleAndPermList(); - List> resultList = new LinkedList<>(); - for (SysPermModule sysPermModule : sysPermModuleList) { - Map permModuleMap = new HashMap<>(5); - permModuleMap.put("id", sysPermModule.getModuleId()); - permModuleMap.put("name", sysPermModule.getModuleName()); - permModuleMap.put("type", sysPermModule.getModuleType()); - permModuleMap.put("isPerm", false); - if (MyCommonUtil.isNotBlankOrNull(sysPermModule.getParentId())) { - permModuleMap.put("parentId", sysPermModule.getParentId()); - } - resultList.add(permModuleMap); - if (CollectionUtils.isNotEmpty(sysPermModule.getSysPermList())) { - for (SysPerm sysPerm : sysPermModule.getSysPermList()) { - Map permMap = new HashMap<>(4); - permMap.put("id", sysPerm.getPermId()); - permMap.put("name", sysPerm.getPermName()); - permMap.put("isPerm", true); - permMap.put("url", sysPerm.getUrl()); - permMap.put("parentId", sysPermModule.getModuleId()); - resultList.add(permMap); - } - } - } - return ResponseResult.success(resultList); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysRoleController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysRoleController.java deleted file mode 100644 index 69aabd08..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysRoleController.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import cn.jimmyshi.beanquery.BeanQuery; -import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; -import io.swagger.annotations.Api; -import com.alibaba.fastjson.TypeReference; -import com.github.pagehelper.Page; -import com.github.pagehelper.page.PageMethod; -import lombok.extern.slf4j.Slf4j; -import com.orangeforms.webadmin.upms.dto.SysRoleDto; -import com.orangeforms.webadmin.upms.dto.SysUserDto; -import com.orangeforms.webadmin.upms.vo.SysRoleVo; -import com.orangeforms.webadmin.upms.vo.SysUserVo; -import com.orangeforms.webadmin.upms.model.SysRole; -import com.orangeforms.webadmin.upms.model.SysUser; -import com.orangeforms.webadmin.upms.model.SysUserRole; -import com.orangeforms.webadmin.upms.service.SysRoleService; -import com.orangeforms.webadmin.upms.service.SysUserService; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import javax.validation.groups.Default; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 角色管理接口控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "角色管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysRole") -public class SysRoleController { - - @Autowired - private SysRoleService sysRoleService; - @Autowired - private SysUserService sysUserService; - - /** - * 新增角色操作。 - * - * @param sysRoleDto 新增角色对象。 - * @param menuIdListString 与当前角色Id绑定的menuId列表,多个menuId之间逗号分隔。 - * @return 应答结果对象,包含新增角色的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = {"sysRoleDto.roleId", "sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add( - @MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysRoleDto); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysRole sysRole = MyModelUtil.copyTo(sysRoleDto, SysRole.class); - CallResult result = sysRoleService.verifyRelatedData(sysRole, null, menuIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set menuIdSet = null; - if (result.getData() != null) { - menuIdSet = result.getData().getObject("menuIdSet", new TypeReference>(){}); - } - sysRoleService.saveNew(sysRole, menuIdSet); - return ResponseResult.success(sysRole.getRoleId()); - } - - /** - * 更新角色操作。 - * - * @param sysRoleDto 更新角色对象。 - * @param menuIdListString 与当前角色Id绑定的menuId列表,多个menuId之间逗号分隔。 - * @return 应答结果对象。 - */ - @ApiOperationSupport(ignoreParameters = {"sysRoleDto.createTimeStart", "sysRoleDto.createTimeEnd"}) - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update( - @MyRequestBody SysRoleDto sysRoleDto, @MyRequestBody String menuIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysRoleDto, Default.class, UpdateGroup.class); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysRole originalSysRole = sysRoleService.getById(sysRoleDto.getRoleId()); - if (originalSysRole == null) { - errorMessage = "数据验证失败,当前角色并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - SysRole sysRole = MyModelUtil.copyTo(sysRoleDto, SysRole.class); - CallResult result = sysRoleService.verifyRelatedData(sysRole, originalSysRole, menuIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set menuIdSet = null; - if (result.getData() != null) { - menuIdSet = result.getData().getObject("menuIdSet", new TypeReference>(){}); - } - if (!sysRoleService.update(sysRole, originalSysRole, menuIdSet)) { - errorMessage = "更新失败,数据不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 删除指定角色操作。 - * - * @param roleId 指定角色主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long roleId) { - if (MyCommonUtil.existBlankArgument(roleId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysRoleService.remove(roleId)) { - String errorMessage = "数据操作失败,角色不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } - - /** - * 查看角色列表。 - * - * @param sysRoleDtoFilter 角色过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含角色列表。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SysRoleDto sysRoleDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysRole filter = MyModelUtil.copyTo(sysRoleDtoFilter, SysRole.class); - List roleList = sysRoleService.getSysRoleList( - filter, MyOrderParam.buildOrderBy(orderParam, SysRole.class)); - List roleVoList = MyModelUtil.copyCollectionTo(roleList, SysRoleVo.class); - long totalCount = 0L; - if (roleList instanceof Page) { - totalCount = ((Page) roleList).getTotal(); - } - return ResponseResult.success(MyPageUtil.makeResponseData(roleVoList, totalCount)); - } - - /** - * 查看角色详情。 - * - * @param roleId 指定角色主键Id。 - * @return 应答结果对象,包含角色详情对象。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long roleId) { - if (MyCommonUtil.existBlankArgument(roleId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - SysRole sysRole = sysRoleService.getByIdWithRelation(roleId, MyRelationParam.full()); - if (sysRole == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysRoleVo sysRoleVo = MyModelUtil.copyTo(sysRole, SysRoleVo.class); - return ResponseResult.success(sysRoleVo); - } - - /** - * 获取不包含指定角色Id的用户列表。 - * 用户和角色是多对多关系,当前接口将返回没有赋值指定RoleId的用户列表。可用于给角色添加新用户。 - * - * @param roleId 角色主键Id。 - * @param sysUserDtoFilter 用户过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含用户列表数据。 - */ - @PostMapping("/listNotInUserRole") - public ResponseResult> listNotInUserRole( - @MyRequestBody Long roleId, - @MyRequestBody SysUserDto sysUserDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - ResponseResult verifyResult = this.doRoleUserVerify(roleId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); - } - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysUser filter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class); - List userList = sysUserService.getNotInSysUserListByRoleId(roleId, filter, orderBy); - List userVoList = MyModelUtil.copyCollectionTo(userList, SysUserVo.class); - return ResponseResult.success(MyPageUtil.makeResponseData(userVoList)); - } - - /** - * 拥有指定角色的用户列表。 - * - * @param roleId 角色主键Id。 - * @param sysUserDtoFilter 用户过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含用户列表数据。 - */ - @PostMapping("/listUserRole") - public ResponseResult> listUserRole( - @MyRequestBody Long roleId, - @MyRequestBody SysUserDto sysUserDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - ResponseResult verifyResult = this.doRoleUserVerify(roleId); - if (!verifyResult.isSuccess()) { - return ResponseResult.errorFrom(verifyResult); - } - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysUser filter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class); - List userList = sysUserService.getSysUserListByRoleId(roleId, filter, orderBy); - List userVoList = MyModelUtil.copyCollectionTo(userList, SysUserVo.class); - return ResponseResult.success(MyPageUtil.makeResponseData(userVoList)); - } - - private ResponseResult doRoleUserVerify(Long roleId) { - if (MyCommonUtil.existBlankArgument(roleId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysRoleService.existId(roleId)) { - return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); - } - return ResponseResult.success(); - } - - /** - * 为指定角色添加用户列表。该操作可同时给一批用户赋值角色,并在同一事务内完成。 - * - * @param roleId 角色主键Id。 - * @param userIdListString 逗号分隔的用户Id列表。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.ADD_M2M) - @PostMapping("/addUserRole") - public ResponseResult addUserRole( - @MyRequestBody Long roleId, @MyRequestBody String userIdListString) { - if (MyCommonUtil.existBlankArgument(roleId, userIdListString)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - Set userIdSet = Arrays.stream( - userIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysRoleService.existId(roleId) - || !sysUserService.existUniqueKeyList("userId", userIdSet)) { - return ResponseResult.error(ErrorCodeEnum.INVALID_RELATED_RECORD_ID); - } - List userRoleList = new LinkedList<>(); - for (Long userId : userIdSet) { - SysUserRole userRole = new SysUserRole(); - userRole.setRoleId(roleId); - userRole.setUserId(userId); - userRoleList.add(userRole); - } - sysRoleService.addUserRoleList(userRoleList); - return ResponseResult.success(); - } - - /** - * 为指定用户移除指定角色。 - * - * @param roleId 指定角色主键Id。 - * @param userId 指定用户主键Id。 - * @return 应答数据结果。 - */ - @OperationLog(type = SysOperationLogType.DELETE_M2M) - @PostMapping("/deleteUserRole") - public ResponseResult deleteUserRole( - @MyRequestBody Long roleId, @MyRequestBody Long userId) { - if (MyCommonUtil.existBlankArgument(roleId, userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysRoleService.removeUserRole(roleId, userId)) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } - - /** - * 以字典形式返回全部角色管理数据集合。字典的键值为[roleId, roleName]。 - * 白名单接口,登录用户均可访问。 - * - * @param filter 过滤对象。 - * @return 应答结果对象,包含的数据为 List>,map中包含两条记录,key的值分别是id和name,value对应具体数据。 - */ - @GetMapping("/listDict") - public ResponseResult>> listDict(SysRole filter) { - List resultList = sysRoleService.getListByFilter(filter); - return ResponseResult.success(BeanQuery.select( - "roleId as id", "roleName as name").executeFrom(resultList)); - } - - /** - * 根据字典Id集合,获取查询后的字典数据。 - * - * @param dictIds 字典Id集合。 - * @return 应答结果对象,包含字典形式的数据集合。 - */ - @PostMapping("/listDictByIds") - public ResponseResult>> listDictByIds( - @MyRequestBody(elementType = Long.class) List dictIds) { - List resultList = sysRoleService.getInList(new HashSet<>(dictIds)); - return ResponseResult.success(BeanQuery.select( - "roleId as id", "roleName as name").executeFrom(resultList)); - } - - /** - * 查询角色的权限资源地址列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param url url过滤条件。 - * @return 应答对象,包含从角色到权限资源的完整权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysPermWithDetail") - public ResponseResult>> listSysPermByWithDetail(Long roleId, String url) { - if (MyCommonUtil.isBlankOrNull(roleId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysRoleService.getSysPermListWithDetail(roleId, url)); - } - - /** - * 查询角色的权限字列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param permCode 权限字名称过滤条件。 - * @return 应答对象,包含从角色到权限字的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysPermCodeWithDetail") - public ResponseResult>> listSysPermCodeWithDetail(Long roleId, String permCode) { - if (MyCommonUtil.isBlankOrNull(roleId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysRoleService.getSysPermCodeListWithDetail(roleId, permCode)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysUserController.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysUserController.java deleted file mode 100644 index 44919377..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/controller/SysUserController.java +++ /dev/null @@ -1,359 +0,0 @@ -package com.orangeforms.webadmin.upms.controller; - -import com.alibaba.fastjson.TypeReference; -import cn.hutool.core.util.ReflectUtil; -import com.orangeforms.common.core.upload.BaseUpDownloader; -import com.orangeforms.common.core.upload.UpDownloaderFactory; -import com.orangeforms.common.core.upload.UploadResponseInfo; -import com.orangeforms.common.core.upload.UploadStoreInfo; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import com.github.pagehelper.page.PageMethod; -import com.orangeforms.webadmin.upms.vo.*; -import com.orangeforms.webadmin.upms.dto.*; -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.webadmin.upms.service.*; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.*; -import com.orangeforms.common.core.constant.*; -import com.orangeforms.common.core.annotation.MyRequestBody; -import com.orangeforms.common.redis.cache.SessionCacheHelper; -import com.orangeforms.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; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletResponse; -import java.util.*; - -/** - * 用户管理操作控制器类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Api(tags = "用户管理管理接口") -@Slf4j -@RestController -@RequestMapping("/admin/upms/sysUser") -public class SysUserController { - - @Autowired - private SysUserService sysUserService; - @Autowired - private PasswordEncoder passwordEncoder; - @Autowired - private ApplicationConfig appConfig; - @Autowired - private SessionCacheHelper cacheHelper; - @Autowired - private UpDownloaderFactory upDownloaderFactory; - - /** - * 新增用户操作。 - * - * @param sysUserDto 新增用户对象。 - * @param dataPermIdListString 逗号分隔的数据权限Id列表。 - * @param roleIdListString 逗号分隔的角色Id列表。 - * @return 应答结果对象,包含新增用户的主键Id。 - */ - @ApiOperationSupport(ignoreParameters = { - "sysUserDto.userId", - "sysUserDto.createTimeStart", - "sysUserDto.createTimeEnd"}) - @OperationLog(type = SysOperationLogType.ADD) - @PostMapping("/add") - public ResponseResult add( - @MyRequestBody SysUserDto sysUserDto, - @MyRequestBody String dataPermIdListString, - @MyRequestBody String roleIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, false); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysUser sysUser = MyModelUtil.copyTo(sysUserDto, SysUser.class); - CallResult result = sysUserService.verifyRelatedData( - sysUser, null, roleIdListString, dataPermIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set roleIdSet = result.getData().getObject("roleIdSet", new TypeReference>() {}); - Set dataPermIdSet = result.getData().getObject("dataPermIdSet", new TypeReference>() {}); - sysUserService.saveNew(sysUser, roleIdSet, dataPermIdSet); - return ResponseResult.success(sysUser.getUserId()); - } - - /** - * 更新用户操作。 - * - * @param sysUserDto 更新用户对象。 - * @param dataPermIdListString 逗号分隔的数据权限Id列表。 - * @param roleIdListString 逗号分隔的角色Id列表。 - * @return 应答结果对象。 - */ - @ApiOperationSupport(ignoreParameters = { - "sysUserDto.createTimeStart", - "sysUserDto.createTimeEnd"}) - @OperationLog(type = SysOperationLogType.UPDATE) - @PostMapping("/update") - public ResponseResult update( - @MyRequestBody SysUserDto sysUserDto, - @MyRequestBody String dataPermIdListString, - @MyRequestBody String roleIdListString) { - String errorMessage = MyCommonUtil.getModelValidationError(sysUserDto, true); - if (errorMessage != null) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, errorMessage); - } - SysUser originalUser = sysUserService.getById(sysUserDto.getUserId()); - if (originalUser == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysUser sysUser = MyModelUtil.copyTo(sysUserDto, SysUser.class); - CallResult result = sysUserService.verifyRelatedData( - sysUser, originalUser, roleIdListString, dataPermIdListString); - if (!result.isSuccess()) { - return ResponseResult.error(ErrorCodeEnum.DATA_VALIDATED_FAILED, result.getErrorMessage()); - } - Set roleIdSet = result.getData().getObject("roleIdSet", new TypeReference>() {}); - Set dataPermIdSet = result.getData().getObject("dataPermIdSet", new TypeReference>() {}); - if (!sysUserService.update(sysUser, originalUser, roleIdSet, dataPermIdSet)) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } - - /** - * 重置密码操作。 - * - * @param userId 指定用户主键Id。 - * @return 应答结果对象。 - */ - @PostMapping("/resetPassword") - public ResponseResult resetPassword(@MyRequestBody Long userId) { - if (MyCommonUtil.existBlankArgument(userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - if (!sysUserService.changePassword(userId, appConfig.getDefaultUserPassword())) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - return ResponseResult.success(); - } - - /** - * 删除用户管理数据。 - * - * @param userId 删除对象主键Id。 - * @return 应答结果对象。 - */ - @OperationLog(type = SysOperationLogType.DELETE) - @PostMapping("/delete") - public ResponseResult delete(@MyRequestBody Long userId) { - String errorMessage; - if (MyCommonUtil.existBlankArgument(userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return this.doDelete(userId); - } - - /** - * 列出符合过滤条件的用户管理列表。 - * - * @param sysUserDtoFilter 过滤对象。 - * @param orderParam 排序参数。 - * @param pageParam 分页参数。 - * @return 应答结果对象,包含查询结果集。 - */ - @PostMapping("/list") - public ResponseResult> list( - @MyRequestBody SysUserDto sysUserDtoFilter, - @MyRequestBody MyOrderParam orderParam, - @MyRequestBody MyPageParam pageParam) { - if (pageParam != null) { - PageMethod.startPage(pageParam.getPageNum(), pageParam.getPageSize()); - } - SysUser sysUserFilter = MyModelUtil.copyTo(sysUserDtoFilter, SysUser.class); - String orderBy = MyOrderParam.buildOrderBy(orderParam, SysUser.class); - List sysUserList = sysUserService.getSysUserListWithRelation(sysUserFilter, orderBy); - return ResponseResult.success(MyPageUtil.makeResponseData(sysUserList, SysUser.INSTANCE)); - } - - /** - * 查看指定用户管理对象详情。 - * - * @param userId 指定对象主键Id。 - * @return 应答结果对象,包含对象详情。 - */ - @GetMapping("/view") - public ResponseResult view(@RequestParam Long userId) { - if (MyCommonUtil.existBlankArgument(userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - // 这里查看用户数据时候,需要把用户多对多关联的角色和数据权限Id一并查出。 - SysUser sysUser = sysUserService.getByIdWithRelation(userId, MyRelationParam.full()); - if (sysUser == null) { - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - SysUserVo sysUserVo = SysUser.INSTANCE.fromModel(sysUser); - return ResponseResult.success(sysUserVo); - } - - /** - * 附件文件下载。 - * 这里将图片和其他类型的附件文件放到不同的父目录下,主要为了便于今后图片文件的迁移。 - * - * @param userId 附件所在记录的主键Id。 - * @param fieldName 附件所属的字段名。 - * @param filename 文件名。如果没有提供该参数,就从当前记录的指定字段中读取。 - * @param asImage 下载文件是否为图片。 - * @param response Http 应答对象。 - */ - @OperationLog(type = SysOperationLogType.DOWNLOAD, saveResponse = false) - @GetMapping("/download") - public void download( - @RequestParam(required = false) Long userId, - @RequestParam String fieldName, - @RequestParam String filename, - @RequestParam Boolean asImage, - HttpServletResponse response) { - if (MyCommonUtil.existBlankArgument(fieldName, filename, asImage)) { - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return; - } - // 使用try来捕获异常,是为了保证一旦出现异常可以返回500的错误状态,便于调试。 - // 否则有可能给前端返回的是200的错误码。 - try { - // 如果请求参数中没有包含主键Id,就判断该文件是否为当前session上传的。 - if (userId == null) { - if (!cacheHelper.existSessionUploadFile(filename)) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN); - return; - } - } else { - SysUser sysUser = sysUserService.getById(userId); - if (sysUser == null) { - ResponseResult.output(HttpServletResponse.SC_NOT_FOUND); - return; - } - String fieldJsonData = (String) ReflectUtil.getFieldValue(sysUser, fieldName); - if (fieldJsonData == null) { - ResponseResult.output(HttpServletResponse.SC_BAD_REQUEST); - return; - } - if (!BaseUpDownloader.containFile(fieldJsonData, filename)) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN); - return; - } - } - UploadStoreInfo storeInfo = MyModelUtil.getUploadStoreInfo(SysUser.class, fieldName); - if (!storeInfo.isSupportUpload()) { - ResponseResult.output(HttpServletResponse.SC_NOT_IMPLEMENTED, - ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FIELD)); - return; - } - BaseUpDownloader upDownloader = upDownloaderFactory.get(storeInfo.getStoreType()); - upDownloader.doDownload(appConfig.getUploadFileBaseDir(), - SysUser.class.getSimpleName(), fieldName, filename, asImage, response); - } catch (Exception e) { - response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - log.error(e.getMessage(), e); - } - } - - /** - * 文件上传操作。 - * - * @param fieldName 上传文件名。 - * @param asImage 是否作为图片上传。如果是图片,今后下载的时候无需权限验证。否则就是附件上传,下载时需要权限验证。 - * @param uploadFile 上传文件对象。 - */ - @OperationLog(type = SysOperationLogType.UPLOAD, saveResponse = false) - @PostMapping("/upload") - public void upload( - @RequestParam String fieldName, - @RequestParam Boolean asImage, - @RequestParam("uploadFile") MultipartFile uploadFile) throws Exception { - UploadStoreInfo storeInfo = MyModelUtil.getUploadStoreInfo(SysUser.class, fieldName); - // 这里就会判断参数中指定的字段,是否支持上传操作。 - if (!storeInfo.isSupportUpload()) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, - ResponseResult.error(ErrorCodeEnum.INVALID_UPLOAD_FIELD)); - return; - } - // 根据字段注解中的存储类型,通过工厂方法获取匹配的上传下载实现类,从而解耦。 - BaseUpDownloader upDownloader = upDownloaderFactory.get(storeInfo.getStoreType()); - UploadResponseInfo responseInfo = upDownloader.doUpload(null, - appConfig.getUploadFileBaseDir(), SysUser.class.getSimpleName(), fieldName, asImage, uploadFile); - if (responseInfo.getUploadFailed()) { - ResponseResult.output(HttpServletResponse.SC_FORBIDDEN, - ResponseResult.error(ErrorCodeEnum.UPLOAD_FAILED, responseInfo.getErrorMessage())); - return; - } - cacheHelper.putSessionUploadFile(responseInfo.getFilename()); - ResponseResult.output(ResponseResult.success(responseInfo)); - } - - /** - * 查询用户的权限资源地址列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param url url过滤条件。 - * @return 应答对象,包含从用户到权限资源的完整权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysPermWithDetail") - public ResponseResult>> listSysPermWithDetail(Long userId, String url) { - if (MyCommonUtil.isBlankOrNull(userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysUserService.getSysPermListWithDetail(userId, url)); - } - - /** - * 查询用户的权限字列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param permCode 权限字名称过滤条件。 - * @return 应答对象,包含从用户到权限字的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysPermCodeWithDetail") - public ResponseResult>> listSysPermCodeWithDetail(Long userId, String permCode) { - if (MyCommonUtil.isBlankOrNull(userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysUserService.getSysPermCodeListWithDetail(userId, permCode)); - } - - /** - * 查询用户的菜单列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param menuName 菜单名称过滤条件。 - * @return 应答对象,包含从用户到菜单的权限分配路径信息的查询结果列表。 - */ - @GetMapping("/listSysMenuWithDetail") - public ResponseResult>> listSysMenuWithDetail(Long userId, String menuName) { - if (MyCommonUtil.isBlankOrNull(userId)) { - return ResponseResult.error(ErrorCodeEnum.ARGUMENT_NULL_EXIST); - } - return ResponseResult.success(sysUserService.getSysMenuListWithDetail(userId, menuName)); - } - - private ResponseResult doDelete(Long userId) { - String errorMessage; - // 验证关联Id的数据合法性 - SysUser originalSysUser = sysUserService.getById(userId); - if (originalSysUser == null) { - // NOTE: 修改下面方括号中的话述 - errorMessage = "数据验证失败,当前 [对象] 并不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - if (!sysUserService.remove(userId)) { - errorMessage = "数据操作失败,删除的对象不存在,请刷新后重试!"; - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST, errorMessage); - } - return ResponseResult.success(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermDeptMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermDeptMapper.java deleted file mode 100644 index 1e4688fa..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermDeptMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysDataPermDept; - -/** - * 数据权限与部门关系数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDataPermDeptMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermMapper.java deleted file mode 100644 index 4238d6a4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermMapper.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysDataPerm; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 数据权限数据访问操作接口。 - * NOTE: 该对象一定不能被 @EnableDataPerm 注解标注,否则会导致无限递归。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDataPermMapper extends BaseDaoMapper { - - /** - * 获取数据权限列表。 - * - * @param sysDataPermFilter 过滤对象。 - * @param orderBy 排序字符串。 - * @return 过滤后的数据权限列表。 - */ - List getSysDataPermList( - @Param("sysDataPermFilter") SysDataPerm sysDataPermFilter, @Param("orderBy") String orderBy); - - /** - * 获取指定用户的数据权限列表。 - * - * @param userId 用户Id。 - * @return 数据权限列表。 - */ - List getSysDataPermListByUserId(@Param("userId") Long userId); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermUserMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermUserMapper.java deleted file mode 100644 index 0c1d78d9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDataPermUserMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysDataPermUser; - -/** - * 数据权限与用户关系数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDataPermUserMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptMapper.java deleted file mode 100644 index 4bb57574..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptMapper.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysDept; -import org.apache.ibatis.annotations.Param; - -import java.util.*; - -/** - * 部门管理数据操作访问接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDeptMapper extends BaseDaoMapper { - - /** - * 批量插入对象列表。 - * - * @param sysDeptList 新增对象列表。 - */ - void insertList(List sysDeptList); - - /** - * 获取过滤后的对象列表。 - * - * @param sysDeptFilter 主表过滤对象。 - * @param orderBy 排序字符串,order by从句的参数。 - * @return 对象列表。 - */ - List getSysDeptList( - @Param("sysDeptFilter") SysDept sysDeptFilter, @Param("orderBy") String orderBy); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptRelationMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptRelationMapper.java deleted file mode 100644 index 8919b6b5..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysDeptRelationMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysDeptRelation; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 部门关系树关联关系表访问接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDeptRelationMapper extends BaseDaoMapper { - - /** - * 将myDeptId的所有子部门,与其父部门parentDeptId解除关联关系。 - * - * @param parentDeptId myDeptId的父部门Id。 - * @param myDeptId 当前部门。 - */ - void removeBetweenChildrenAndParents( - @Param("parentDeptId") Long parentDeptId, @Param("myDeptId") Long myDeptId); - - /** - * 批量插入部门关联数据。 - * 由于目前版本(3.4.1)的Mybatis Plus没有提供真正的批量插入,为了保证效率需要自己实现。 - * 目前我们仅仅给出MySQL和PostgresSQL的insert list实现作为参考,其他数据库需要自行修改。 - * - * @param deptRelationList 部门关联关系数据列表。 - */ - void insertList(List deptRelationList); - - /** - * 批量插入当前部门的所有父部门列表,包括自己和自己的关系。 - * - * @param parentDeptId myDeptId的父部门Id。 - * @param myDeptId 当前部门。 - */ - void insertParentList(@Param("parentDeptId") Long parentDeptId, @Param("myDeptId") Long myDeptId); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuMapper.java deleted file mode 100644 index 6650446a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuMapper.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysMenu; -import org.apache.ibatis.annotations.Param; - -import java.util.*; - -/** - * 菜单数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysMenuMapper extends BaseDaoMapper { - - /** - * 获取登录用户的菜单列表。 - * - * @param userId 登录用户。 - * @return 菜单列表。 - */ - List getMenuListByUserId(@Param("userId") Long userId); - - /** - * 获取当前用户有权访问的在线表单菜单,仅返回类型为BUTTON的菜单。 - * - * @param userId 指定的用户。 - * @param menuType 菜单类型,NULL则返回全部类型。 - * @return 在线表单关联的菜单列表。 - */ - List getOnlineMenuListByUserId( - @Param("userId") Long userId, @Param("menuType") Integer menuType); - - /** - * 查询菜单的权限资源地址列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param url 权限资源地址过滤条件。 - * @return 包含从菜单到权限资源的权限分配路径信息的查询结果列表。 - */ - List> getSysPermListWithDetail( - @Param("menuId") Long menuId, @Param("url") String url); - - /** - * 查询菜单的用户列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param loginName 登录名。 - * @return 包含从菜单到用户的完整权限分配路径信息的查询结果列表。 - */ - List> getSysUserListWithDetail( - @Param("menuId") Long menuId, @Param("loginName") String loginName); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuPermCodeMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuPermCodeMapper.java deleted file mode 100644 index 8e905514..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysMenuPermCodeMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysMenuPermCode; - -/** - * 菜单与权限字关系数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysMenuPermCodeMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodeMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodeMapper.java deleted file mode 100644 index 534aee18..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodeMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysPermCode; -import org.apache.ibatis.annotations.Param; - -import java.util.List; -import java.util.Map; - -/** - * 权限字数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermCodeMapper extends BaseDaoMapper { - - /** - * 获取用户的所有权限字列表。 - * - * @param userId 用户Id。 - * @return 该用户的权限字列表。 - */ - List getPermCodeListByUserId(@Param("userId") Long userId); - - /** - * 查询权限字的用户列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param loginName 登录名。 - * @return 包含从权限字到用户的完整权限分配路径信息的查询结果列表。 - */ - List> getSysUserListWithDetail( - @Param("permCodeId") Long permCodeId, @Param("loginName") String loginName); - - /** - * 查询权限字的角色列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param roleName 角色名。 - * @return 包含从权限字到角色的权限分配路径信息的查询结果列表。 - */ - List> getSysRoleListWithDetail( - @Param("permCodeId") Long permCodeId, @Param("roleName") String roleName); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodePermMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodePermMapper.java deleted file mode 100644 index 9547713d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermCodePermMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysPermCodePerm; - -/** - * 权限字与权限资源关系数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermCodePermMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermMapper.java deleted file mode 100644 index 3a4b0879..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermMapper.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysPerm; -import org.apache.ibatis.annotations.Param; - -import java.util.*; - -/** - * 权限资源数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermMapper extends BaseDaoMapper { - - /** - * 获取用户的权限列表。 - * - * @param userId 用户Id。 - * @return 该用户的权限标识列表。 - */ - List getPermListByUserId(@Param("userId") Long userId); - - /** - * 查询权限资源地址的用户列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param loginName 登录名。 - * @return 包含从权限资源到用户的完整权限分配路径信息的查询结果列表。 - */ - List> getSysUserListWithDetail( - @Param("permId") Long permId, @Param("loginName") String loginName); - - /** - * 查询权限资源地址的角色列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param roleName 角色名。 - * @return 包含从权限资源到角色的权限分配路径信息的查询结果列表。 - */ - List> getSysRoleListWithDetail( - @Param("permId") Long permId, @Param("roleName") String roleName); - - /** - * 查询权限资源地址的菜单列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param menuName 菜单名。 - * @return 包含从权限资源到菜单的权限分配路径信息的查询结果列表。 - */ - List> getSysMenuListWithDetail( - @Param("permId") Long permId, @Param("menuName") String menuName); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermModuleMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermModuleMapper.java deleted file mode 100644 index dbefdbcc..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermModuleMapper.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysPermModule; - -import java.util.List; - -/** - * 权限资源模块数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermModuleMapper extends BaseDaoMapper { - - /** - * 获取整个权限模块和权限关联后的全部数据。 - * - * @return 关联的权限模块和权限资源列表。 - */ - List getPermModuleAndPermList(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermWhitelistMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermWhitelistMapper.java deleted file mode 100644 index 0a937fba..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysPermWhitelistMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysPermWhitelist; - -/** - * 权限资源白名单数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermWhitelistMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMapper.java deleted file mode 100644 index 0b80cd2f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMapper.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysRole; -import org.apache.ibatis.annotations.Param; - -import java.util.*; - -/** - * 角色数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysRoleMapper extends BaseDaoMapper { - - /** - * 获取对象列表,过滤条件中包含like和between条件。 - * - * @param sysRoleFilter 过滤对象。 - * @param orderBy 排序字符串,order by从句的参数。 - * @return 对象列表。 - */ - List getSysRoleList(@Param("sysRoleFilter") SysRole sysRoleFilter, @Param("orderBy") String orderBy); - - /** - * 查询角色的权限资源地址列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param url url过滤条件。 - * @return 包含从角色到权限资源的完整权限分配路径信息的查询结果列表。 - */ - List> getSysPermListWithDetail( - @Param("roleId") Long roleId, @Param("url") String url); - - /** - * 查询角色的权限字列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param permCode 权限字名称过滤条件。 - * @return 包含从角色到权限字的权限分配路径信息的查询结果列表。 - */ - List> getSysPermCodeListWithDetail( - @Param("roleId") Long roleId, @Param("permCode") String permCode); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMenuMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMenuMapper.java deleted file mode 100644 index 8545ba39..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysRoleMenuMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysRoleMenu; - -/** - * 角色与菜单操作关联关系数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysRoleMenuMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserMapper.java deleted file mode 100644 index c2f5f1a4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserMapper.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysUser; -import org.apache.ibatis.annotations.Param; - -import java.util.*; - -/** - * 用户管理数据操作访问接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysUserMapper extends BaseDaoMapper { - - /** - * 批量插入对象列表。 - * - * @param sysUserList 新增对象列表。 - */ - void insertList(List sysUserList); - - /** - * 获取过滤后的对象列表。 - * - * @param sysUserFilter 主表过滤对象。 - * @param orderBy 排序字符串,order by从句的参数。 - * @return 对象列表。 - */ - List getSysUserList( - @Param("sysUserFilter") SysUser sysUserFilter, @Param("orderBy") String orderBy); - - /** - * 根据角色Id,获取关联的用户Id列表。 - * - * @param roleId 关联的角色Id。 - * @param sysUserFilter 用户过滤条件对象。 - * @param orderBy order by从句的参数。 - * @return 和RoleId关联的用户列表。 - */ - List getSysUserListByRoleId( - @Param("roleId") Long roleId, - @Param("sysUserFilter") SysUser sysUserFilter, - @Param("orderBy") String orderBy); - - /** - * 根据角色Id,获取和当前角色Id没有建立多对多关联关系的用户Id列表。 - * - * @param roleId 关联的角色Id。 - * @param sysUserFilter 用户过滤条件对象。 - * @param orderBy order by从句的参数。 - * @return 和RoleId没有建立关联关系的用户列表。 - */ - List getNotInSysUserListByRoleId( - @Param("roleId") Long roleId, - @Param("sysUserFilter") SysUser sysUserFilter, - @Param("orderBy") String orderBy); - - /** - * 根据数据权限Id,获取关联的用户Id列表。 - * - * @param dataPermId 关联的数据权限Id。 - * @param sysUserFilter 用户过滤条件对象。 - * @param orderBy order by从句的参数。 - * @return 和DataPermId关联的用户列表。 - */ - List getSysUserListByDataPermId( - @Param("dataPermId") Long dataPermId, - @Param("sysUserFilter") SysUser sysUserFilter, - @Param("orderBy") String orderBy); - - /** - * 根据数据权限Id,获取和当前数据权限Id没有建立多对多关联关系的用户Id列表。 - * - * @param dataPermId 关联的数据权限Id。 - * @param sysUserFilter 用户过滤条件对象。 - * @param orderBy order by从句的参数。 - * @return 和DataPermId没有建立关联关系的用户列表。 - */ - List getNotInSysUserListByDataPermId( - @Param("dataPermId") Long dataPermId, - @Param("sysUserFilter") SysUser sysUserFilter, - @Param("orderBy") String orderBy); - - /** - * 查询用户的权限资源地址列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param url url过滤条件。 - * @return 包含从用户到权限资源的完整权限分配路径信息的查询结果列表。 - */ - List> getSysPermListWithDetail( - @Param("userId") Long userId, @Param("url") String url); - - /** - * 查询用户的权限字列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param permCode 权限字名称过滤条件。 - * @return 包含从用户到权限字的权限分配路径信息的查询结果列表。 - */ - List> getSysPermCodeListWithDetail( - @Param("userId") Long userId, @Param("permCode") String permCode); - - /** - * 查询用户的菜单列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param menuName 菜单名称过滤条件。 - * @return 包含从用户到菜单的权限分配路径信息的查询结果列表。 - */ - List> getSysMenuListWithDetail( - @Param("userId") Long userId, @Param("menuName") String menuName); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserRoleMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserRoleMapper.java deleted file mode 100644 index 3f9b20bd..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/SysUserRoleMapper.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.webadmin.upms.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.model.SysUserRole; - -/** - * 用户与角色关联关系数据访问操作接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysUserRoleMapper extends BaseDaoMapper { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermDeptMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermDeptMapper.xml deleted file mode 100644 index d3b228e6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermDeptMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermMapper.xml deleted file mode 100644 index 0da8d0b2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermMapper.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - AND zz_sys_data_perm.rule_type = #{sysDataPermFilter.ruleType} - - - - AND COALESCE(zz_sys_data_perm.data_perm_name, '') LIKE #{safeSearchString} - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermUserMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermUserMapper.xml deleted file mode 100644 index 2530c39f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDataPermUserMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptMapper.xml deleted file mode 100644 index ef63bdc9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptMapper.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - - - - - - INSERT INTO zz_sys_dept - (dept_id, - dept_name, - show_order, - parent_id, - deleted_flag, - create_user_id, - update_user_id, - create_time, - update_time) - VALUES - - (#{item.deptId}, - #{item.deptName}, - #{item.showOrder}, - #{item.parentId}, - #{item.deletedFlag}, - #{item.createUserId}, - #{item.updateUserId}, - #{item.createTime}, - #{item.updateTime}) - - - - - - - - AND zz_sys_dept.deleted_flag = ${@com.orangeforms.common.core.constant.GlobalDeletedFlag@NORMAL} - - - - - - - - AND zz_sys_dept.dept_name LIKE #{safeSysDeptDeptName} - - - AND zz_sys_dept.parent_id = #{sysDeptFilter.parentId} - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptRelationMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptRelationMapper.xml deleted file mode 100644 index 6dfc6df6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysDeptRelationMapper.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - DELETE a FROM zz_sys_dept_relation a - INNER JOIN zz_sys_dept_relation b ON a.dept_id = b.dept_id - WHERE a.parent_dept_id = #{parentDeptId} AND b.parent_dept_id = #{myDeptId} - - - - INSERT INTO zz_sys_dept_relation(parent_dept_id, dept_id) VALUES - - (#{item.parentDeptId}, #{item.deptId}) - - - - - INSERT INTO zz_sys_dept_relation(parent_dept_id, dept_id) - SELECT t.parent_dept_id, #{myDeptId} FROM zz_sys_dept_relation t - WHERE t.dept_id = #{parentDeptId} - UNION ALL - SELECT #{myDeptId}, #{myDeptId} - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuMapper.xml deleted file mode 100644 index ed50e0ba..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuMapper.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuPermCodeMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuPermCodeMapper.xml deleted file mode 100644 index f3c00688..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysMenuPermCodeMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodeMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodeMapper.xml deleted file mode 100644 index af7ac527..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodeMapper.xml +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodePermMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodePermMapper.xml deleted file mode 100644 index 2b35a883..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermCodePermMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermMapper.xml deleted file mode 100644 index 2f303296..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermMapper.xml +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermModuleMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermModuleMapper.xml deleted file mode 100644 index 7331ec2a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermModuleMapper.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermWhitelistMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermWhitelistMapper.xml deleted file mode 100644 index 00d0c6d4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysPermWhitelistMapper.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMapper.xml deleted file mode 100644 index 99b8b589..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMapper.xml +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - AND role_name LIKE #{safeRoleName} - - - - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMenuMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMenuMapper.xml deleted file mode 100644 index 6bf30195..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysRoleMenuMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserMapper.xml deleted file mode 100644 index 221d18f7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserMapper.xml +++ /dev/null @@ -1,246 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - INSERT INTO zz_sys_user - (user_id, - login_name, - password, - show_name, - dept_id, - user_type, - head_image_url, - user_status, - deleted_flag, - create_user_id, - update_user_id, - create_time, - update_time) - VALUES - - (#{item.userId}, - #{item.loginName}, - #{item.password}, - #{item.showName}, - #{item.deptId}, - #{item.userType}, - #{item.headImageUrl}, - #{item.userStatus}, - #{item.deletedFlag}, - #{item.createUserId}, - #{item.updateUserId}, - #{item.createTime}, - #{item.updateTime}) - - - - - - - - AND zz_sys_user.deleted_flag = ${@com.orangeforms.common.core.constant.GlobalDeletedFlag@NORMAL} - - - - - - - - AND zz_sys_user.login_name LIKE #{safeSysUserLoginName} - - - - AND zz_sys_user.show_name LIKE #{safeSysUserShowName} - - - AND zz_sys_user.dept_id = #{sysUserFilter.deptId} - - - AND zz_sys_user.user_status = #{sysUserFilter.userStatus} - - - AND zz_sys_user.create_time >= #{sysUserFilter.createTimeStart} - - - AND zz_sys_user.create_time <= #{sysUserFilter.createTimeEnd} - - - - - - - - - - - - - - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserRoleMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserRoleMapper.xml deleted file mode 100644 index c4993db0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dao/mapper/SysUserRoleMapper.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDeptDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDeptDto.java deleted file mode 100644 index 4f8ef049..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDeptDto.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 数据权限与部门关联Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("数据权限与部门关联Dto") -@Data -public class SysDataPermDeptDto { - - /** - * 数据权限Id。 - */ - @ApiModelProperty(value = "数据权限Id", required = true) - private Long dataPermId; - - /** - * 关联部门Id。 - */ - @ApiModelProperty(value = "关联部门Id", required = true) - private Long deptId; -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDto.java deleted file mode 100644 index c35b45a0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDataPermDto.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.validator.ConstDictRef; -import com.orangeforms.common.datafilter.constant.DataPermRuleType; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.*; - -/** - * 数据权限Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("数据权限Dto") -@Data -public class SysDataPermDto { - - /** - * 数据权限Id。 - */ - @ApiModelProperty(value = "数据权限Id", required = true) - @NotNull(message = "数据权限Id不能为空!", groups = {UpdateGroup.class}) - private Long dataPermId; - - /** - * 显示名称。 - */ - @ApiModelProperty(value = "显示名称", required = true) - @NotBlank(message = "数据权限名称不能为空!") - private String dataPermName; - - /** - * 数据权限规则类型(0: 全部可见 1: 只看自己 2: 只看本部门 3: 本部门及子部门 4: 多部门及子部门 5: 自定义部门列表)。 - */ - @ApiModelProperty(value = "数据权限规则类型", required = true) - @NotNull(message = "数据权限规则类型不能为空!") - @ConstDictRef(constDictClass = DataPermRuleType.class) - private Integer ruleType; - - /** - * 部门Id列表(逗号分隔)。 - */ - @ApiModelProperty(hidden = true) - private String deptIdListString; - - /** - * 搜索字符串。 - */ - @ApiModelProperty(value = "LIKE 模糊搜索字符串") - private String searchString; -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDeptDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDeptDto.java deleted file mode 100644 index b9ea3277..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysDeptDto.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.UpdateGroup; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.*; - -import java.util.Date; - -/** - * SysDeptDto对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("SysDeptDto对象") -@Data -public class SysDeptDto { - - /** - * 部门Id。 - */ - @ApiModelProperty(value = "部门Id", required = true) - @NotNull(message = "数据验证失败,部门Id不能为空!", groups = {UpdateGroup.class}) - private Long deptId; - - /** - * 部门名称。 - */ - @ApiModelProperty(value = "部门名称", required = true) - @NotBlank(message = "数据验证失败,部门名称不能为空!") - private String deptName; - - /** - * 显示顺序。 - */ - @ApiModelProperty(value = "显示顺序", required = true) - @NotNull(message = "数据验证失败,显示顺序不能为空!") - private Integer showOrder; - - /** - * 父部门Id。 - */ - @ApiModelProperty(value = "父部门Id") - private Long parentId; - - /** - * 创建者Id。 - */ - @ApiModelProperty(value = "创建者Id") - private Long createUserId; - - /** - * 更新者Id。 - */ - @ApiModelProperty(value = "更新者Id") - private Long updateUserId; - - /** - * 创建时间。 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新时间。 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysMenuDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysMenuDto.java deleted file mode 100644 index 8c624df4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysMenuDto.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.ConstDictRef; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.webadmin.upms.model.constant.SysMenuType; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * 菜单Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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; - - /** - * 前端表单路由名称,仅用于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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysOperationLogDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysOperationLogDto.java deleted file mode 100644 index 4e93ef5e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysOperationLogDto.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 操作日志记录表 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("操作日志Dto") -@Data -public class SysOperationLogDto { - - /** - * 主键Id。 - */ - @ApiModelProperty(value = "主键Id") - private Long logId; - - /** - * 操作类型。 - * 常量值定义可参考SysOperationLogType对象。 - */ - @ApiModelProperty(value = "操作类型") - private Integer operationType; - - /** - * 每次请求的Id。 - * 对于微服务之间的调用,在同一个请求的调用链中,该值是相同的。 - */ - @ApiModelProperty(value = "每次请求的Id") - private String traceId; - - /** - * HTTP 请求地址。 - */ - @ApiModelProperty(value = "HTTP 请求地址") - private String requestUrl; - - /** - * 应答状态。 - */ - @ApiModelProperty(value = "应答状态") - private Boolean success; - - /** - * 操作员名称。 - */ - @ApiModelProperty(value = "操作员名称") - private String operatorName; - - /** - * 调用时长最小值。 - */ - @ApiModelProperty(value = "调用时长最小值") - private Long elapseMin; - - /** - * 调用时长最大值。 - */ - @ApiModelProperty(value = "调用时长最大值") - private Long elapseMax; - - /** - * 操作开始时间。 - */ - @ApiModelProperty(value = "操作开始时间") - private String operationTimeStart; - - /** - * 操作开始时间。 - */ - @ApiModelProperty(value = "操作开始时间") - private String operationTimeEnd; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermCodeDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermCodeDto.java deleted file mode 100644 index 7b8d616d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermCodeDto.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.ConstDictRef; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.webadmin.upms.model.constant.SysPermCodeType; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * 权限字Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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; - - /** - * 显示名称。 - */ - @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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermDto.java deleted file mode 100644 index 15d468de..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermDto.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.UpdateGroup; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * 权限资源Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermModuleDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermModuleDto.java deleted file mode 100644 index 42b34591..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysPermModuleDto.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.ConstDictRef; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.webadmin.upms.model.constant.SysPermModuleType; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * 权限资源模块Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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; - - /** - * 权限模块在当前层级下的顺序,由小到大。 - */ - @ApiModelProperty(value = "显示顺序", required = true) - @NotNull(message = "权限模块显示顺序不能为空!") - private Integer showOrder; -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysRoleDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysRoleDto.java deleted file mode 100644 index 08d1e6f3..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysRoleDto.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.UpdateGroup; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.*; - -/** - * 角色Dto。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysUserDto.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysUserDto.java deleted file mode 100644 index c65fd2c6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/dto/SysUserDto.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.orangeforms.webadmin.upms.dto; - -import com.orangeforms.common.core.validator.AddGroup; -import com.orangeforms.common.core.validator.UpdateGroup; -import com.orangeforms.common.core.validator.ConstDictRef; -import com.orangeforms.webadmin.upms.model.constant.SysUserType; -import com.orangeforms.webadmin.upms.model.constant.SysUserStatus; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.*; - -import java.util.Date; - -/** - * SysUserDto对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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; - - /** - * 用户部门Id。 - */ - @ApiModelProperty(value = "用户部门Id", required = true) - @NotNull(message = "数据验证失败,用户部门Id不能为空!") - private Long deptId; - - /** - * 用户类型(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; - - /** - * 用户头像的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; - - /** - * 创建者Id。 - */ - @ApiModelProperty(value = "创建者Id") - private Long createUserId; - - /** - * 更新者Id。 - */ - @ApiModelProperty(value = "更新者Id") - private Long updateUserId; - - /** - * 创建时间。 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新时间。 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; - - /** - * createTime 范围过滤起始值(>=)。 - */ - @ApiModelProperty(value = "createTime 范围过滤起始值(>=)") - private String createTimeStart; - - /** - * createTime 范围过滤结束值(<=)。 - */ - @ApiModelProperty(value = "createTime 范围过滤结束值(<=)") - private String createTimeEnd; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPerm.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPerm.java deleted file mode 100644 index 000fa1a6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPerm.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.util.MyCommonUtil; -import com.orangeforms.common.core.annotation.RelationManyToMany; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.webadmin.upms.vo.SysDataPermVo; -import lombok.Data; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; - -import java.util.*; - -/** - * 数据权限实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_data_perm") -public class SysDataPerm { - - /** - * 主键Id。 - */ - @TableId(value = "data_perm_id") - private Long dataPermId; - - /** - * 显示名称。 - */ - @TableField(value = "data_perm_name") - private String dataPermName; - - /** - * 数据权限规则类型(0: 全部可见 1: 只看自己 2: 只看本部门 3: 本部门及子部门 4: 多部门及子部门 5: 自定义部门列表)。 - */ - @TableField(value = "rule_type") - private Integer ruleType; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @TableField(exist = false) - private String deptIdListString; - - @RelationManyToMany( - relationMapperName = "sysDataPermDeptMapper", - relationMasterIdField = "dataPermId", - relationModelClass = SysDataPermDept.class) - @TableField(exist = false) - private List dataPermDeptList; - - @TableField(exist = false) - private String searchString; - - public void setSearchString(String searchString) { - this.searchString = MyCommonUtil.replaceSqlWildcard(searchString); - } - - @Mapper - public interface SysDataPermModelMapper extends BaseModelMapper { - /** - * 转换VO对象到实体对象。 - * - * @param sysDataPermVo 域对象。 - * @return 实体对象。 - */ - @Mapping(target = "dataPermDeptList", expression = "java(mapToBean(sysDataPermVo.getDataPermDeptList(), com.orangeforms.webadmin.upms.model.SysDataPermDept.class))") - @Override - SysDataPerm toModel(SysDataPermVo sysDataPermVo); - /** - * 转换实体对象到VO对象。 - * - * @param sysDataPerm 实体对象。 - * @return 域对象。 - */ - @Mapping(target = "dataPermDeptList", expression = "java(beanToMap(sysDataPerm.getDataPermDeptList(), false))") - @Override - SysDataPermVo fromModel(SysDataPerm sysDataPerm); - } - public static final SysDataPermModelMapper INSTANCE = Mappers.getMapper(SysDataPerm.SysDataPermModelMapper.class); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermDept.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermDept.java deleted file mode 100644 index 6b2d3591..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermDept.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; -import lombok.ToString; - -/** - * 数据权限与部门关联实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ToString(of = {"deptId"}) -@TableName(value = "zz_sys_data_perm_dept") -public class SysDataPermDept { - - /** - * 数据权限Id。 - */ - @TableField(value = "data_perm_id") - private Long dataPermId; - - /** - * 关联部门Id。 - */ - @TableField(value = "dept_id") - private Long deptId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermUser.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermUser.java deleted file mode 100644 index e4e21820..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDataPermUser.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -/** - * 数据权限与用户关联实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_data_perm_user") -public class SysDataPermUser { - - /** - * 数据权限Id。 - */ - @TableField(value = "data_perm_id") - private Long dataPermId; - - /** - * 用户Id。 - */ - @TableField(value = "user_id") - private Long userId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDept.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDept.java deleted file mode 100644 index ab89f380..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDept.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.webadmin.upms.vo.SysDeptVo; -import lombok.Data; -import org.mapstruct.*; -import org.mapstruct.factory.Mappers; - -import java.util.Date; - -/** - * SysDept实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_dept") -public class SysDept { - - /** - * 部门Id。 - */ - @TableId(value = "dept_id") - private Long deptId; - - /** - * 部门名称。 - */ - @TableField(value = "dept_name") - private String deptName; - - /** - * 显示顺序。 - */ - @TableField(value = "show_order") - private Integer showOrder; - - /** - * 父部门Id。 - */ - @TableField(value = "parent_id") - private Long parentId; - - /** - * 逻辑删除标记字段(1: 正常 -1: 已删除)。 - */ - @TableLogic - @TableField(value = "deleted_flag") - private Integer deletedFlag; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @Mapper - public interface SysDeptModelMapper extends BaseModelMapper { - } - public static final SysDeptModelMapper INSTANCE = Mappers.getMapper(SysDeptModelMapper.class); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDeptRelation.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDeptRelation.java deleted file mode 100644 index 69d012fd..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysDeptRelation.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 部门关联实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@AllArgsConstructor -@NoArgsConstructor -@TableName(value = "zz_sys_dept_relation") -public class SysDeptRelation { - - /** - * 上级部门Id。 - */ - @TableField(value = "parent_dept_id") - private Long parentDeptId; - - /** - * 部门Id。 - */ - @TableField(value = "dept_id") - private Long deptId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenu.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenu.java deleted file mode 100644 index ed2e8cd5..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenu.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.annotation.RelationManyToMany; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.webadmin.upms.vo.SysMenuVo; -import lombok.Data; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; - -import java.util.*; - -/** - * 菜单实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_menu") -public class SysMenu { - - /** - * 菜单Id。 - */ - @TableId(value = "menu_id") - private Long menuId; - - /** - * 父菜单Id,目录菜单的父菜单为null。 - */ - @TableField(value = "parent_id") - private Long parentId; - - /** - * 菜单显示名称。 - */ - @TableField(value = "menu_name") - private String menuName; - - /** - * 菜单类型(0: 目录 1: 菜单 2: 按钮 3: UI片段)。 - */ - @TableField(value = "menu_type") - private Integer menuType; - - /** - * 前端表单路由名称,仅用于menu_type为1的菜单类型。 - */ - @TableField(value = "form_router_name") - private String formRouterName; - - /** - * 在线表单主键Id,仅用于在线表单绑定的菜单。 - */ - @TableField(value = "online_form_id") - private Long onlineFormId; - - /** - * 在线表单菜单的权限控制类型,具体值可参考SysOnlineMenuPermType常量对象。 - */ - @TableField(value = "online_menu_perm_type") - private Integer onlineMenuPermType; - - /** - * 菜单显示顺序 (值越小,排序越靠前)。 - */ - @TableField(value = "show_order") - private Integer showOrder; - - /** - * 菜单图标。 - */ - private String icon; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @RelationManyToMany( - relationMapperName = "sysMenuPermCodeMapper", - relationMasterIdField = "menuId", - relationModelClass = SysMenuPermCode.class) - @TableField(exist = false) - private List sysMenuPermCodeList; - - @Mapper - public interface SysMenuModelMapper extends BaseModelMapper { - /** - * 转换VO对象到实体对象。 - * - * @param sysMenuVo 域对象。 - * @return 实体对象。 - */ - @Mapping(target = "sysMenuPermCodeList", expression = "java(mapToBean(sysMenuVo.getSysMenuPermCodeList(), com.orangeforms.webadmin.upms.model.SysMenuPermCode.class))") - @Override - SysMenu toModel(SysMenuVo sysMenuVo); - /** - * 转换实体对象到VO对象。 - * - * @param sysMenu 实体对象。 - * @return 域对象。 - */ - @Mapping(target = "sysMenuPermCodeList", expression = "java(beanToMap(sysMenu.getSysMenuPermCodeList(), false))") - @Override - SysMenuVo fromModel(SysMenu sysMenu); - } - public static final SysMenuModelMapper INSTANCE = Mappers.getMapper(SysMenu.SysMenuModelMapper.class); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenuPermCode.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenuPermCode.java deleted file mode 100644 index c239a156..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysMenuPermCode.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -/** - * 菜单与权限字关联实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_menu_perm_code") -public class SysMenuPermCode { - - /** - * 关联菜单Id。 - */ - @TableField(value = "menu_id") - private Long menuId; - - /** - * 关联权限字Id。 - */ - @TableField(value = "perm_code_id") - private Long permCodeId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPerm.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPerm.java deleted file mode 100644 index f0d61652..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPerm.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.annotation.RelationDict; -import lombok.Data; - -import java.util.*; - -/** - * 权限资源实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_perm") -public class SysPerm { - - /** - * 权限资源Id。 - */ - @TableId(value = "perm_id") - private Long permId; - - /** - * 权限所在的权限模块Id。 - */ - @TableField(value = "module_id") - private Long moduleId; - - /** - * 权限名称。 - */ - @TableField(value = "perm_name") - private String permName; - - /** - * 关联的URL。 - */ - private String url; - - /** - * 权限在当前模块下的顺序,由小到大。 - */ - @TableField(value = "show_order") - private Integer showOrder; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @RelationDict( - masterIdField = "moduleId", - slaveServiceName = "SysPermModuleService", - slaveModelClass = SysPermModule.class, - slaveIdField = "moduleId", - slaveNameField = "moduleName") - @TableField(exist = false) - private Map moduleIdDictMap; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCode.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCode.java deleted file mode 100644 index a6b05b22..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCode.java +++ /dev/null @@ -1,113 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.annotation.RelationManyToMany; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.webadmin.upms.vo.SysPermCodeVo; -import lombok.Data; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; - -import java.util.*; - -/** - * 权限字实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_perm_code") -public class SysPermCode { - - /** - * 权限字Id。 - */ - @TableId(value = "perm_code_id") - private Long permCodeId; - - /** - * 上级权限字Id。 - */ - @TableField(value = "parent_id") - private Long parentId; - - /** - * 权限字标识(一般为有含义的英文字符串)。 - */ - @TableField(value = "perm_code") - private String permCode; - - /** - * 权限类型(0: 表单 1: UI片段 2: 操作)。 - */ - @TableField(value = "perm_code_type") - private Integer permCodeType; - - /** - * 显示名称。 - */ - @TableField(value = "show_name") - private String showName; - - /** - * 显示顺序(数值越小,越靠前)。 - */ - @TableField(value = "show_order") - private Integer showOrder; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @RelationManyToMany( - relationMapperName = "sysPermCodePermMapper", - relationMasterIdField = "permCodeId", - relationModelClass = SysPermCodePerm.class) - @TableField(exist = false) - private List sysPermCodePermList; - - @Mapper - public interface SysPermCodeModelMapper extends BaseModelMapper { - /** - * 转换VO对象到实体对象。 - * - * @param sysPermCodeVo 域对象。 - * @return 实体对象。 - */ - @Mapping(target = "sysPermCodePermList", expression = "java(mapToBean(sysPermCodeVo.getSysPermCodePermList(), com.orangeforms.webadmin.upms.model.SysPermCodePerm.class))") - @Override - SysPermCode toModel(SysPermCodeVo sysPermCodeVo); - /** - * 转换实体对象到VO对象。 - * - * @param sysPermCode 实体对象。 - * @return 域对象。 - */ - @Mapping(target = "sysPermCodePermList", expression = "java(beanToMap(sysPermCode.getSysPermCodePermList(), false))") - @Override - SysPermCodeVo fromModel(SysPermCode sysPermCode); - } - public static final SysPermCodeModelMapper INSTANCE = Mappers.getMapper(SysPermCode.SysPermCodeModelMapper.class); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCodePerm.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCodePerm.java deleted file mode 100644 index af675c52..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermCodePerm.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -/** - * 权限字与权限资源关联实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_perm_code_perm") -public class SysPermCodePerm { - - /** - * 权限字Id。 - */ - @TableField(value = "perm_code_id") - private Long permCodeId; - - /** - * 权限Id。 - */ - @TableField(value = "perm_id") - private Long permId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermModule.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermModule.java deleted file mode 100644 index 41e9646d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermModule.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -import java.util.*; - -/** - * 权限模块实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_perm_module") -public class SysPermModule { - - /** - * 权限模块Id。 - */ - @TableId(value = "module_id") - private Long moduleId; - - /** - * 上级权限模块Id。 - */ - @TableField(value = "parent_id") - private Long parentId; - - /** - * 权限模块名称。 - */ - @TableField(value = "module_name") - private String moduleName; - - /** - * 权限模块类型(0: 普通模块 1: Controller模块)。 - */ - @TableField(value = "module_type") - private Integer moduleType; - - /** - * 权限模块在当前层级下的顺序,由小到大。 - */ - @TableField(value = "show_order") - private Integer showOrder; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @TableField(exist = false) - private List sysPermList; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermWhitelist.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermWhitelist.java deleted file mode 100644 index 26eb1ef1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysPermWhitelist.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -/** - * 白名单实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_perm_whitelist") -public class SysPermWhitelist { - - /** - * 权限资源的URL。 - */ - @TableId(value = "perm_url") - private String permUrl; - - /** - * 权限资源所属模块名字(通常是Controller的名字)。 - */ - @TableField(value = "module_name") - private String moduleName; - - /** - * 权限的名称。 - */ - @TableField(value = "perm_name") - private String permName; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRole.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRole.java deleted file mode 100644 index 02dd6d57..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRole.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.annotation.RelationManyToMany; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.webadmin.upms.vo.SysRoleVo; -import lombok.Data; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.factory.Mappers; - -import java.util.*; - -/** - * 角色实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_role") -public class SysRole { - - /** - * 角色Id。 - */ - @TableId(value = "role_id") - private Long roleId; - - /** - * 角色名称。 - */ - @TableField(value = "role_name") - private String roleName; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - @RelationManyToMany( - relationMapperName = "sysRoleMenuMapper", - relationMasterIdField = "roleId", - relationModelClass = SysRoleMenu.class) - @TableField(exist = false) - private List sysRoleMenuList; - - @Mapper - public interface SysRoleModelMapper extends BaseModelMapper { - /** - * 转换VO对象到实体对象。 - * - * @param sysRoleVo 域对象。 - * @return 实体对象。 - */ - @Mapping(target = "sysRoleMenuList", expression = "java(mapToBean(sysRoleVo.getSysRoleMenuList(), com.orangeforms.webadmin.upms.model.SysRoleMenu.class))") - @Override - SysRole toModel(SysRoleVo sysRoleVo); - /** - * 转换实体对象到VO对象。 - * - * @param sysRole 实体对象。 - * @return 域对象。 - */ - @Mapping(target = "sysRoleMenuList", expression = "java(beanToMap(sysRole.getSysRoleMenuList(), false))") - @Override - SysRoleVo fromModel(SysRole sysRole); - } - public static final SysRoleModelMapper INSTANCE = Mappers.getMapper(SysRole.SysRoleModelMapper.class); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRoleMenu.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRoleMenu.java deleted file mode 100644 index 1033cd61..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysRoleMenu.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -/** - * 角色菜单实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_role_menu") -public class SysRoleMenu { - - /** - * 角色Id。 - */ - @TableField(value = "role_id") - private Long roleId; - - /** - * 菜单Id。 - */ - @TableField(value = "menu_id") - private Long menuId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUser.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUser.java deleted file mode 100644 index f473618f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUser.java +++ /dev/null @@ -1,184 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.webadmin.upms.model.constant.SysUserType; -import com.orangeforms.webadmin.upms.model.constant.SysUserStatus; -import com.orangeforms.common.core.upload.UploadStoreTypeEnum; -import com.orangeforms.common.core.annotation.*; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.webadmin.upms.vo.SysUserVo; -import lombok.Data; -import org.mapstruct.*; -import org.mapstruct.factory.Mappers; - -import java.util.Date; -import java.util.Map; -import java.util.List; - -/** - * SysUser实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_user") -public class SysUser { - - /** - * 用户Id。 - */ - @TableId(value = "user_id") - private Long userId; - - /** - * 登录用户名。 - */ - @TableField(value = "login_name") - private String loginName; - - /** - * 用户密码。 - */ - private String password; - - /** - * 用户显示名称。 - */ - @TableField(value = "show_name") - private String showName; - - /** - * 用户部门Id。 - */ - @TableField(value = "dept_id") - private Long deptId; - - /** - * 用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)。 - */ - @TableField(value = "user_type") - private Integer userType; - - /** - * 用户头像的Url。 - */ - @UploadFlagColumn(storeType = UploadStoreTypeEnum.LOCAL_SYSTEM) - @TableField(value = "head_image_url") - private String headImageUrl; - - /** - * 用户状态(0: 正常 1: 锁定)。 - */ - @TableField(value = "user_status") - private Integer userStatus; - - /** - * 逻辑删除标记字段(1: 正常 -1: 已删除)。 - */ - @TableLogic - @TableField(value = "deleted_flag") - private Integer deletedFlag; - - /** - * 创建者Id。 - */ - @TableField(value = "create_user_id") - private Long createUserId; - - /** - * 更新者Id。 - */ - @TableField(value = "update_user_id") - private Long updateUserId; - - /** - * 创建时间。 - */ - @TableField(value = "create_time") - private Date createTime; - - /** - * 更新时间。 - */ - @TableField(value = "update_time") - private Date updateTime; - - /** - * createTime 范围过滤起始值(>=)。 - */ - @TableField(exist = false) - private String createTimeStart; - - /** - * createTime 范围过滤结束值(<=)。 - */ - @TableField(exist = false) - private String createTimeEnd; - - /** - * 多对多用户角色数据集合。 - */ - @RelationManyToMany( - relationMapperName = "sysUserRoleMapper", - relationMasterIdField = "userId", - relationModelClass = SysUserRole.class) - @TableField(exist = false) - private List sysUserRoleList; - - /** - * 多对多用户数据权限数据集合。 - */ - @RelationManyToMany( - relationMapperName = "sysDataPermUserMapper", - relationMasterIdField = "userId", - relationModelClass = SysDataPermUser.class) - @TableField(exist = false) - private List sysDataPermUserList; - - @RelationDict( - masterIdField = "deptId", - slaveServiceName = "sysDeptService", - slaveModelClass = SysDept.class, - slaveIdField = "deptId", - slaveNameField = "deptName") - @TableField(exist = false) - private Map deptIdDictMap; - - @RelationConstDict( - masterIdField = "userType", - constantDictClass = SysUserType.class) - @TableField(exist = false) - private Map userTypeDictMap; - - @RelationConstDict( - masterIdField = "userStatus", - constantDictClass = SysUserStatus.class) - @TableField(exist = false) - private Map userStatusDictMap; - - @Mapper - public interface SysUserModelMapper extends BaseModelMapper { - /** - * 转换Vo对象到实体对象。 - * - * @param sysUserVo 域对象。 - * @return 实体对象。 - */ - @Mapping(target = "sysUserRoleList", expression = "java(mapToBean(sysUserVo.getSysUserRoleList(), com.orangeforms.webadmin.upms.model.SysUserRole.class))") - @Mapping(target = "sysDataPermUserList", expression = "java(mapToBean(sysUserVo.getSysDataPermUserList(), com.orangeforms.webadmin.upms.model.SysDataPermUser.class))") - @Override - SysUser toModel(SysUserVo sysUserVo); - /** - * 转换实体对象到VO对象。 - * - * @param sysUser 实体对象。 - * @return 域对象。 - */ - @Mapping(target = "sysUserRoleList", expression = "java(beanToMap(sysUser.getSysUserRoleList(), false))") - @Mapping(target = "sysDataPermUserList", expression = "java(beanToMap(sysUser.getSysDataPermUserList(), false))") - @Override - SysUserVo fromModel(SysUser sysUser); - } - public static final SysUserModelMapper INSTANCE = Mappers.getMapper(SysUserModelMapper.class); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUserRole.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUserRole.java deleted file mode 100644 index fb9ce6cd..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/SysUserRole.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.webadmin.upms.model; - -import com.baomidou.mybatisplus.annotation.*; -import lombok.Data; - -/** - * 用户角色实体对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName(value = "zz_sys_user_role") -public class SysUserRole { - - /** - * 用户Id。 - */ - @TableField(value = "user_id") - private Long userId; - - /** - * 角色Id。 - */ - @TableField(value = "role_id") - private Long roleId; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysMenuType.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysMenuType.java deleted file mode 100644 index bfef282a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysMenuType.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.orangeforms.webadmin.upms.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 菜单类型常量对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysMenuType { - - /** - * 目录菜单。 - */ - public static final int TYPE_DIRECTORY = 0; - /** - * 普通菜单。 - */ - public static final int TYPE_MENU = 1; - /** - * 表单片段类型。 - */ - public static final int TYPE_UI_FRAGMENT = 2; - /** - * 按钮类型。 - */ - public static final int TYPE_BUTTON = 3; - - private static final Map DICT_MAP = new HashMap<>(4); - static { - DICT_MAP.put(TYPE_DIRECTORY, "目录菜单"); - DICT_MAP.put(TYPE_MENU, "普通菜单"); - DICT_MAP.put(TYPE_UI_FRAGMENT, "表单片段类型"); - DICT_MAP.put(TYPE_BUTTON, "按钮类型"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysMenuType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysOnlineMenuPermType.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysOnlineMenuPermType.java deleted file mode 100644 index 4133d6be..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysOnlineMenuPermType.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.orangeforms.webadmin.upms.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 菜单关联在线表单的控制权限类型。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysOnlineMenuPermType { - - /** - * 查看。 - */ - public static final int TYPE_VIEW = 0; - /** - * 编辑。 - */ - public static final int TYPE_EDIT = 1; - - private static final Map DICT_MAP = new HashMap<>(4); - static { - DICT_MAP.put(TYPE_VIEW, "查看"); - DICT_MAP.put(TYPE_EDIT, "编辑"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysOnlineMenuPermType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermCodeType.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermCodeType.java deleted file mode 100644 index ef31a6c1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermCodeType.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.orangeforms.webadmin.upms.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 权限字类型常量对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysPermCodeType { - - /** - * 表单权限字。 - */ - public static final int TYPE_FORM = 0; - /** - * 表单片段布局权限字。 - */ - public static final int TYPE_FRAGMENT = 1; - /** - * 操作权限字。 - */ - public static final int TYPE_OPERATION = 2; - - private static final Map DICT_MAP = new HashMap<>(3); - static { - DICT_MAP.put(TYPE_FORM, "表单权限字"); - DICT_MAP.put(TYPE_FRAGMENT, "表单片段布局权限字"); - DICT_MAP.put(TYPE_OPERATION, "操作权限字"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysPermCodeType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermModuleType.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermModuleType.java deleted file mode 100644 index 643b0aeb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysPermModuleType.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.orangeforms.webadmin.upms.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 权限资源模块类型常量对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysPermModuleType { - - /** - * 普通模块。 - */ - public static final int TYPE_NORMAL = 0; - /** - * controller接口模块。 - */ - public static final int TYPE_CONTROLLER = 1; - - private static final Map DICT_MAP = new HashMap<>(2); - static { - DICT_MAP.put(TYPE_NORMAL, "普通模块"); - DICT_MAP.put(TYPE_CONTROLLER, "controller接口模块"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysPermModuleType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserStatus.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserStatus.java deleted file mode 100644 index ef0c3546..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserStatus.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.orangeforms.webadmin.upms.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 用户状态常量字典对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysUserStatus { - - /** - * 正常状态。 - */ - public static final int STATUS_NORMAL = 0; - /** - * 锁定状态。 - */ - public static final int STATUS_LOCKED = 1; - - private static final Map DICT_MAP = new HashMap<>(2); - static { - DICT_MAP.put(STATUS_NORMAL, "正常状态"); - DICT_MAP.put(STATUS_LOCKED, "锁定状态"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysUserStatus() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserType.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserType.java deleted file mode 100644 index 750bcc99..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/model/constant/SysUserType.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.orangeforms.webadmin.upms.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 用户类型常量字典对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysUserType { - - /** - * 管理员。 - */ - public static final int TYPE_ADMIN = 0; - /** - * 系统操作员。 - */ - public static final int TYPE_SYSTEM = 1; - /** - * 普通操作员。 - */ - public static final int TYPE_OPERATOR = 2; - - private static final Map DICT_MAP = new HashMap<>(3); - static { - DICT_MAP.put(TYPE_ADMIN, "管理员"); - DICT_MAP.put(TYPE_SYSTEM, "系统操作员"); - DICT_MAP.put(TYPE_OPERATOR, "普通操作员"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysUserType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDataPermService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDataPermService.java deleted file mode 100644 index 67239065..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDataPermService.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.model.*; - -import java.util.*; - -/** - * 数据权限数据服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDataPermService extends IBaseService { - - /** - * 保存新增的数据权限对象。 - * - * @param dataPerm 新增的数据权限对象。 - * @param deptIdSet 关联的部门Id列表。 - * @return 新增后的数据权限对象。 - */ - SysDataPerm saveNew(SysDataPerm dataPerm, Set deptIdSet); - - /** - * 更新数据权限对象。 - * - * @param dataPerm 更新的数据权限对象。 - * @param originalDataPerm 原有的数据权限对象。 - * @param deptIdSet 关联的部门Id列表。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysDataPerm dataPerm, SysDataPerm originalDataPerm, Set deptIdSet); - - /** - * 删除指定数据权限。 - * - * @param dataPermId 数据权限主键Id。 - * @return 删除成功返回true,否则false。 - */ - boolean remove(Long dataPermId); - - /** - * 获取数据权限列表。 - * - * @param filter 数据权限过滤对象。 - * @param orderBy 排序参数。 - * @return 数据权限查询列表。 - */ - List getSysDataPermList(SysDataPerm filter, String orderBy); - - /** - * 将指定用户的指定会话的数据权限集合存入缓存。 - * - * @param sessionId 会话Id。 - * @param userId 用户主键Id。 - * @param deptId 用户所属部门主键Id。 - * @return 查询并缓存后的数据权限集合。返回格式为,Map。 - */ - Map putDataPermCache(String sessionId, Long userId, Long deptId); - - /** - * 将指定会话的数据权限集合从缓存中移除。 - * - * @param sessionId 会话Id。 - */ - void removeDataPermCache(String sessionId); - - /** - * 获取指定用户Id的数据权限列表。并基于权限规则类型进行了一级分组。 - * - * @param userId 指定的用户Id。 - * @param deptId 用户所属部门主键Id。 - * @return 合并优化后的数据权限列表。返回格式为,Map。 - */ - Map getSysDataPermListByUserId(Long userId, Long deptId); - - /** - * 添加用户和数据权限之间的多对多关联关系。 - * - * @param dataPermId 数据权限Id。 - * @param userIdSet 关联的用户Id列表。 - */ - void addDataPermUserList(Long dataPermId, Set userIdSet); - - /** - * 移除用户和数据权限之间的多对多关联关系。 - * - * @param dataPermId 数据权限主键Id。 - * @param userId 用户主键Id。 - * @return true移除成功,否则false。 - */ - boolean removeDataPermUser(Long dataPermId, Long userId); - - /** - * 验证数据权限对象关联菜单数据是否都合法。 - * - * @param dataPerm 数据权限关对象。 - * @param deptIdListString 与数据权限关联的部门Id列表。 - * @return 验证结果。 - */ - CallResult verifyRelatedData(SysDataPerm dataPerm, String deptIdListString); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDeptService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDeptService.java deleted file mode 100644 index 6253365b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysDeptService.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.common.core.base.service.IBaseService; - -import java.util.*; - -/** - * 部门管理数据操作服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysDeptService extends IBaseService { - - /** - * 保存新增的部门对象。 - * - * @param sysDept 新增的部门对象。 - * @param parentSysDept 上级部门对象。 - * @return 新增后的部门对象。 - */ - SysDept saveNew(SysDept sysDept, SysDept parentSysDept); - - /** - * 更新部门对象。 - * - * @param sysDept 更新的部门对象。 - * @param originalSysDept 原有的部门对象。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysDept sysDept, SysDept originalSysDept); - - /** - * 删除指定数据。 - * - * @param deptId 主键Id。 - * @return 成功返回true,否则false。 - */ - boolean remove(Long deptId); - - /** - * 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSysDeptListWithRelation)方法。 - * - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - List getSysDeptList(SysDept filter, String orderBy); - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。 - * 如果仅仅需要获取主表数据,请移步(getSysDeptList),以便获取更好的查询性能。 - * - * @param filter 主表过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - List getSysDeptListWithRelation(SysDept filter, String orderBy); - - /** - * 判断指定对象是否包含下级对象。 - * - * @param deptId 主键Id。 - * @return 存在返回true,否则false。 - */ - boolean hasChildren(Long deptId); - - /** - * 判断指定部门Id是否包含用户对象。 - * - * @param deptId 部门主键Id。 - * @return 存在返回true,否则false。 - */ - boolean hasChildrenUser(Long deptId); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysMenuService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysMenuService.java deleted file mode 100644 index 35754d90..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysMenuService.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.model.SysMenu; - -import java.util.*; - -/** - * 菜单数据服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysMenuService extends IBaseService { - - /** - * 保存新增的菜单对象。 - * - * @param sysMenu 新增的菜单对象。 - * @param permCodeIdSet 权限字Id列表。 - * @return 新增后的菜单对象。 - */ - SysMenu saveNew(SysMenu sysMenu, Set permCodeIdSet); - - /** - * 更新菜单对象。 - * - * @param sysMenu 更新的菜单对象。 - * @param originalSysMenu 原有的菜单对象。 - * @param permCodeIdSet 权限字Id列表。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set permCodeIdSet); - - /** - * 删除指定的菜单。 - * - * @param menu 菜单对象。 - * @return 删除成功返回true,否则false。 - */ - boolean remove(SysMenu menu); - - /** - * 获取全部菜单列表。 - * - * @return 全部菜单列表。 - */ - Collection getAllMenuList(); - - /** - * 获取指定用户Id的菜单列表,已去重。 - * - * @param userId 用户主键Id。 - * @return 用户关联的菜单列表。 - */ - Collection getMenuListByUserId(Long userId); - - /** - * 判断当前菜单是否存在子菜单。 - * - * @param menuId 菜单主键Id。 - * @return 存在返回true,否则false。 - */ - boolean hasChildren(Long menuId); - - /** - * 验证菜单对象关联的数据是否都合法。 - * - * @param sysMenu 当前操作的对象。 - * @param originalSysMenu 原有对象。 - * @param permCodeIdListString 逗号分隔的权限Id列表。 - * @return 验证结果。 - */ - CallResult verifyRelatedData(SysMenu sysMenu, SysMenu originalSysMenu, String permCodeIdListString); - - /** - * 查询菜单的权限资源地址列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param url 权限资源地址过滤条件。 - * @return 包含从菜单到权限资源的权限分配路径信息的查询结果列表。 - */ - List> getSysPermListWithDetail(Long menuId, String url); - - /** - * 查询菜单的用户列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param loginName 登录名。 - * @return 包含从菜单到用户的完整权限分配路径信息的查询结果列表。 - */ - List> getSysUserListWithDetail(Long menuId, String loginName); - - /** - * 获取指定类型的所有在线表单的菜单。 - * - * @param menuType 菜单类型,NULL则返回全部类型。 - * @return 在线表单关联的菜单列表。 - */ - List getAllOnlineMenuList(Integer menuType); - - /** - * 获取当前用户有权访问的在线表单菜单,仅返回类型为BUTTON的菜单。 - * - * @param userId 指定的用户。 - * @param menuType 菜单类型,NULL则返回全部类型。 - * @return 在线表单关联的菜单列表。 - */ - List getOnlineMenuListByUserId(Long userId, Integer menuType); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermCodeService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermCodeService.java deleted file mode 100644 index f41e01a7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermCodeService.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.model.SysPermCode; - -import java.util.*; - -/** - * 权限字数据服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermCodeService extends IBaseService { - - /** - * 获取指定用户的权限字列表,已去重。 - * - * @param userId 用户主键Id。 - * @return 用户关联的权限字列表。 - */ - Collection getPermCodeListByUserId(Long userId); - - /** - * 获取所有权限字数据列表,已去重。 - * - * @return 全部权限字列表。 - */ - Collection getAllPermCodeList(); - - /** - * 保存新增的权限字对象。 - * - * @param sysPermCode 新增的权限字对象。 - * @param permIdSet 权限资源Id列表。 - * @return 新增后的权限字对象。 - */ - SysPermCode saveNew(SysPermCode sysPermCode, Set permIdSet); - - /** - * 更新权限字对象。 - * - * @param sysPermCode 更新的权限字对象。 - * @param originalSysPermCode 原有的权限字对象。 - * @param permIdSet 权限资源Id列表。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set permIdSet); - - /** - * 删除指定的权限字。 - * - * @param permCodeId 权限字主键Id。 - * @return 删除成功返回true,否则false。 - */ - boolean remove(Long permCodeId); - - /** - * 判断当前权限字是否存在下级权限字对象。 - * - * @param permCodeId 权限字主键Id。 - * @return 存在返回true,否则false。 - */ - boolean hasChildren(Long permCodeId); - - /** - * 验证权限字对象关联的数据是否都合法。 - * - * @param sysPermCode 当前操作的对象。 - * @param originalSysPermCode 原有对象。 - * @param permIdListString 逗号分隔的权限资源Id列表。 - * @return 验证结果。 - */ - CallResult verifyRelatedData(SysPermCode sysPermCode, SysPermCode originalSysPermCode, String permIdListString); - - /** - * 查询权限字的用户列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param loginName 登录名。 - * @return 包含从权限字到用户的完整权限分配路径信息的查询结果列表。 - */ - List> getSysUserListWithDetail(Long permCodeId, String loginName); - - /** - * 查询权限字的角色列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param roleName 角色名。 - * @return 包含从权限字到角色的权限分配路径信息的查询结果列表。 - */ - List> getSysRoleListWithDetail(Long permCodeId, String roleName); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermModuleService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermModuleService.java deleted file mode 100644 index bc96f0c2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermModuleService.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.webadmin.upms.model.SysPermModule; - -import java.util.*; - -/** - * 权限资源模块数据服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermModuleService extends IBaseService { - - /** - * 保存新增的权限资源模块对象。 - * - * @param sysPermModule 新增的权限资源模块对象。 - * @return 新增后的权限资源模块对象。 - */ - SysPermModule saveNew(SysPermModule sysPermModule); - - /** - * 更新权限资源模块对象。 - * - * @param sysPermModule 更新的权限资源模块对象。 - * @param originalSysPermModule 原有的权限资源模块对象。 - * @return 更新成功返回true,否则false - */ - boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule); - - /** - * 删除指定的权限资源模块。 - * - * @param moduleId 权限资源模块主键Id。 - * @return 删除成功返回true,否则false。 - */ - boolean remove(Long moduleId); - - /** - * 获取权限模块资源及其关联的权限资源列表。 - * - * @return 权限资源模块及其关联的权限资源列表。 - */ - List getPermModuleAndPermList(); - - /** - * 判断是否存在下级权限资源模块。 - * - * @param moduleId 权限资源模块主键Id。 - * @return 存在返回true,否则false。 - */ - boolean hasChildren(Long moduleId); - - /** - * 判断是否存在权限数据。 - * - * @param moduleId 权限资源模块主键Id。 - * @return 存在返回true,否则false。 - */ - boolean hasModulePerms(Long moduleId); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermService.java deleted file mode 100644 index acf8f70f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermService.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.webadmin.upms.model.SysPerm; - -import java.util.*; - -/** - * 权限资源数据服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermService extends IBaseService { - - /** - * 保存新增的权限资源对象。 - * - * @param perm 新增的权限资源对象。 - * @return 新增后的权限资源对象。 - */ - SysPerm saveNew(SysPerm perm); - - /** - * 更新权限资源对象。 - * - * @param perm 更新的权限资源对象。 - * @param originalPerm 原有的权限资源对象。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysPerm perm, SysPerm originalPerm); - - /** - * 删除权限资源。 - * - * @param permId 权限资源主键Id。 - * @return 删除成功返回true,否则false。 - */ - boolean remove(Long permId); - - /** - * 获取权限数据列表。 - * - * @param sysPermFilter 过滤对象。 - * @return 权限列表。 - */ - List getPermListWithRelation(SysPerm sysPermFilter); - - /** - * 将指定用户的指定会话的权限集合存入缓存。 - * - * @param sessionId 会话Id。 - * @param userId 用户主键Id。 - * @return 查询并缓存后的权限集合。 - */ - Collection putUserSysPermCache(String sessionId, Long userId); - - /** - * 把在线表单的权限URL集合,存放到权限URL的缓存中。 - * - * @param sessionId 会话Id。 - * @param permUrlSet URL集合。 - */ - void putOnlinePermToCache(String sessionId, Set permUrlSet); - - /** - * 将指定会话的权限集合从缓存中移除。 - * - * @param sessionId 会话Id。 - */ - void removeUserSysPermCache(String sessionId); - - /** - * 获取与指定用户关联的权限资源列表,已去重。 - * - * @param userId 关联的用户主键Id。 - * @return 与指定用户Id关联的权限资源列表。 - */ - Collection getPermListByUserId(Long userId); - - /** - * 查询权限资源地址的用户列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param loginName 登录名。 - * @return 包含从权限资源到用户的完整权限分配路径信息的查询结果列表。 - */ - List> getSysUserListWithDetail(Long permId, String loginName); - - /** - * 查询权限资源地址的角色列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param roleName 角色名。 - * @return 包含从权限资源到角色的权限分配路径信息的查询结果列表。 - */ - List> getSysRoleListWithDetail(Long permId, String roleName); - - /** - * 查询权限资源地址的菜单列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param menuName 菜单名。 - * @return 包含从权限资源到菜单的权限分配路径信息的查询结果列表。 - */ - List> getSysMenuListWithDetail(Long permId, String menuName); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermWhitelistService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermWhitelistService.java deleted file mode 100644 index ba84fc7b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysPermWhitelistService.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.webadmin.upms.model.SysPermWhitelist; - -import java.util.List; - -/** - * 权限资源白名单数据服务接口。 - * 白名单中的权限资源,可以不受权限控制,任何用户皆可访问,一般用于常用的字典数据列表接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysPermWhitelistService extends IBaseService { - - /** - * 获取白名单权限资源的列表。 - * - * @return 白名单权限资源地址列表。 - */ - List getWhitelistPermList(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysRoleService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysRoleService.java deleted file mode 100644 index aa2624e1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysRoleService.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.model.SysRole; -import com.orangeforms.webadmin.upms.model.SysUserRole; - -import java.util.*; - -/** - * 角色数据服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysRoleService extends IBaseService { - - /** - * 保存新增的角色对象。 - * - * @param role 新增的角色对象。 - * @param menuIdSet 菜单Id列表。 - * @return 新增后的角色对象。 - */ - SysRole saveNew(SysRole role, Set menuIdSet); - - /** - * 更新角色对象。 - * - * @param role 更新的角色对象。 - * @param originalRole 原有的角色对象。 - * @param menuIdSet 菜单Id列表。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysRole role, SysRole originalRole, Set menuIdSet); - - /** - * 删除指定角色。 - * - * @param roleId 角色主键Id。 - * @return 删除成功返回true,否则false。 - */ - boolean remove(Long roleId); - - /** - * 获取角色列表。 - * - * @param filter 角色过滤对象。 - * @param orderBy 排序参数。 - * @return 角色列表。 - */ - List getSysRoleList(SysRole filter, String orderBy); - - /** - * 获取用户的用户角色对象列表。 - * - * @param userId 用户Id。 - * @return 用户角色对象列表。 - */ - List getSysUserRoleListByUserId(Long userId); - - /** - * 批量新增用户角色关联。 - * - * @param userRoleList 用户角色关系数据列表。 - */ - void addUserRoleList(List userRoleList); - - /** - * 移除指定用户和指定角色的关联关系。 - * - * @param roleId 角色主键Id。 - * @param userId 用户主键Id。 - * @return 移除成功返回true,否则false。 - */ - boolean removeUserRole(Long roleId, Long userId); - - /** - * 验证角色对象关联的数据是否都合法。 - * - * @param sysRole 当前操作的对象。 - * @param originalSysRole 原有对象。 - * @param menuIdListString 逗号分隔的menuId列表。 - * @return 验证结果。 - */ - CallResult verifyRelatedData(SysRole sysRole, SysRole originalSysRole, String menuIdListString); - - /** - * 查询角色的权限资源地址列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param url url过滤条件。 - * @return 包含从角色到权限资源的完整权限分配路径信息的查询结果列表。 - */ - List> getSysPermListWithDetail(Long roleId, String url); - - /** - * 查询角色的权限字列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param permCode 权限字名称过滤条件。 - * @return 包含从角色到权限字的权限分配路径信息的查询结果列表。 - */ - List> getSysPermCodeListWithDetail(Long roleId, String permCode); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysUserService.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysUserService.java deleted file mode 100644 index 1e16d067..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/SysUserService.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.orangeforms.webadmin.upms.service; - -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.common.core.base.service.IBaseService; - -import java.util.*; - -/** - * 用户管理数据操作服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysUserService extends IBaseService { - - /** - * 获取指定登录名的用户对象。 - * - * @param loginName 指定登录用户名。 - * @return 用户对象。 - */ - SysUser getSysUserByLoginName(String loginName); - - /** - * 保存新增的用户对象。 - * - * @param user 新增的用户对象。 - * @param roleIdSet 用户角色Id集合。 - * @param dataPermIdSet 数据权限Id集合。 - * @return 新增后的用户对象。 - */ - SysUser saveNew(SysUser user, Set roleIdSet, Set dataPermIdSet); - - /** - * 更新用户对象。 - * - * @param user 更新的用户对象。 - * @param originalUser 原有的用户对象。 - * @param roleIdSet 用户角色Id列表。 - * @param dataPermIdSet 数据权限Id集合。 - * @return 更新成功返回true,否则false。 - */ - boolean update(SysUser user, SysUser originalUser, Set roleIdSet, Set dataPermIdSet); - - /** - * 修改用户密码。 - * @param userId 用户主键Id。 - * @param newPass 新密码。 - * @return 成功返回true,否则false。 - */ - boolean changePassword(Long userId, String newPass); - - /** - * 修改用户头像。 - * - * @param userId 用户主键Id。 - * @param newHeadImage 新的头像信息。 - * @return 成功返回true,否则false。 - */ - boolean changeHeadImage(Long userId, String newHeadImage); - - /** - * 删除指定数据。 - * - * @param userId 主键Id。 - * @return 成功返回true,否则false。 - */ - boolean remove(Long userId); - - /** - * 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSysUserListWithRelation)方法。 - * - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - List getSysUserList(SysUser filter, String orderBy); - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。 - * 如果仅仅需要获取主表数据,请移步(getSysUserList),以便获取更好的查询性能。 - * - * @param filter 主表过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - List getSysUserListWithRelation(SysUser filter, String orderBy); - - /** - * 获取指定角色的用户列表。 - * - * @param roleId 角色主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - List getSysUserListByRoleId(Long roleId, SysUser filter, String orderBy); - - /** - * 获取不属于指定角色的用户列表。 - * - * @param roleId 角色主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - List getNotInSysUserListByRoleId(Long roleId, SysUser filter, String orderBy); - - /** - * 获取指定数据权限的用户列表。 - * - * @param dataPermId 数据权限主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - List getSysUserListByDataPermId(Long dataPermId, SysUser filter, String orderBy); - - /** - * 获取不属于指定数据权限的用户列表。 - * - * @param dataPermId 数据权限主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - List getNotInSysUserListByDataPermId(Long dataPermId, SysUser filter, String orderBy); - - /** - * 查询用户的权限资源地址列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param url url过滤条件。 - * @return 包含从用户到权限资源的完整权限分配路径信息的查询结果列表。 - */ - List> getSysPermListWithDetail(Long userId, String url); - - /** - * 查询用户的权限字列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param permCode 权限字名称过滤条件。 - * @return 包含从用户到权限字的权限分配路径信息的查询结果列表。 - */ - List> getSysPermCodeListWithDetail(Long userId, String permCode); - - /** - * 查询用户的菜单列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param menuName 菜单名称过滤条件。 - * @return 包含从用户到菜单的权限分配路径信息的查询结果列表。 - */ - List> getSysMenuListWithDetail(Long userId, String menuName); - - /** - * 验证用户对象关联的数据是否都合法。 - * - * @param sysUser 当前操作的对象。 - * @param originalSysUser 原有对象。 - * @param roleIds 逗号分隔的角色Id列表字符串。 - * @param dataPermIds 逗号分隔的数据权限Id列表字符串。 - * @return 验证结果。 - */ - CallResult verifyRelatedData( - SysUser sysUser, SysUser originalSysUser, String roleIds, String dataPermIds); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDataPermServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDataPermServiceImpl.java deleted file mode 100644 index 0cb952b8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDataPermServiceImpl.java +++ /dev/null @@ -1,334 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.orangeforms.common.datafilter.constant.DataPermRuleType; -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.core.util.RedisKeyUtil; -import com.orangeforms.webadmin.config.ApplicationConfig; -import com.orangeforms.webadmin.upms.dao.SysDataPermDeptMapper; -import com.orangeforms.webadmin.upms.dao.SysDataPermMapper; -import com.orangeforms.webadmin.upms.dao.SysDataPermUserMapper; -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.webadmin.upms.service.SysDataPermService; -import com.orangeforms.webadmin.upms.service.SysDeptService; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.collections4.CollectionUtils; -import org.redisson.api.RBucket; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -/** - * 数据权限数据服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysDataPermService") -public class SysDataPermServiceImpl extends BaseService implements SysDataPermService { - - @Autowired - private SysDataPermMapper sysDataPermMapper; - @Autowired - private SysDataPermDeptMapper sysDataPermDeptMapper; - @Autowired - private SysDataPermUserMapper sysDataPermUserMapper; - @Autowired - private SysDeptService sysDeptService; - @Autowired - private RedissonClient redissonClient; - @Autowired - private ApplicationConfig applicationConfig; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysDataPermMapper; - } - - /** - * 保存新增的数据权限对象。 - * - * @param dataPerm 新增的数据权限对象。 - * @param deptIdSet 关联的部门Id列表。 - * @return 新增后的数据权限对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysDataPerm saveNew(SysDataPerm dataPerm, Set deptIdSet) { - dataPerm.setDataPermId(idGenerator.nextLongId()); - MyModelUtil.fillCommonsForInsert(dataPerm); - sysDataPermMapper.insert(dataPerm); - this.insertRelationData(dataPerm, deptIdSet); - return dataPerm; - } - - /** - * 更新数据权限对象。 - * - * @param dataPerm 更新的数据权限对象。 - * @param originalDataPerm 原有的数据权限对象。 - * @param deptIdSet 关联的部门Id列表。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysDataPerm dataPerm, SysDataPerm originalDataPerm, Set deptIdSet) { - MyModelUtil.fillCommonsForUpdate(dataPerm, originalDataPerm); - UpdateWrapper uw = this.createUpdateQueryForNullValue(dataPerm, dataPerm.getDataPermId()); - if (sysDataPermMapper.update(dataPerm, uw) != 1) { - return false; - } - SysDataPermDept dataPermDept = new SysDataPermDept(); - dataPermDept.setDataPermId(dataPerm.getDataPermId()); - sysDataPermDeptMapper.delete(new QueryWrapper<>(dataPermDept)); - this.insertRelationData(dataPerm, deptIdSet); - return true; - } - - /** - * 删除指定数据权限。 - * - * @param dataPermId 数据权限主键Id。 - * @return 删除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long dataPermId) { - if (sysDataPermMapper.deleteById(dataPermId) != 1) { - return false; - } - SysDataPermDept dataPermDept = new SysDataPermDept(); - dataPermDept.setDataPermId(dataPermId); - sysDataPermDeptMapper.delete(new QueryWrapper<>(dataPermDept)); - SysDataPermUser dataPermUser = new SysDataPermUser(); - dataPermUser.setDataPermId(dataPermId); - sysDataPermUserMapper.delete(new QueryWrapper<>(dataPermUser)); - return true; - } - - /** - * 获取数据权限列表。 - * - * @param filter 数据权限过滤对象。 - * @param orderBy 排序参数。 - * @return 数据权限查询列表。 - */ - @Override - public List getSysDataPermList(SysDataPerm filter, String orderBy) { - return sysDataPermMapper.getSysDataPermList(filter, orderBy); - } - - /** - * 将指定用户的指定会话的数据权限集合存入缓存。 - * - * @param sessionId 会话Id。 - * @param userId 用户主键Id。 - * @param deptId 用户所属部门主键Id。 - * @return 查询并缓存后的数据权限集合。返回格式为,Map。 - */ - @Override - public Map putDataPermCache(String sessionId, Long userId, Long deptId) { - Map dataPermMap = this.getSysDataPermListByUserId(userId, deptId); - if (dataPermMap.size() > 0) { - String dataPermSessionKey = RedisKeyUtil.makeSessionDataPermIdKey(sessionId); - RBucket bucket = redissonClient.getBucket(dataPermSessionKey); - bucket.set(JSON.toJSONString(dataPermMap), - applicationConfig.getSessionExpiredSeconds(), TimeUnit.SECONDS); - } - return dataPermMap; - } - - /** - * 将指定会话的数据权限集合从缓存中移除。 - * - * @param sessionId 会话Id。 - */ - @Override - public void removeDataPermCache(String sessionId) { - String sessionPermKey = RedisKeyUtil.makeSessionDataPermIdKey(sessionId); - redissonClient.getBucket(sessionPermKey).deleteAsync(); - } - - /** - * 获取指定用户Id的数据权限列表。并基于权限规则类型进行了一级分组。 - * - * @param userId 指定的用户Id。 - * @param deptId 用户所属部门主键Id。 - * @return 合并优化后的数据权限列表。返回格式为,Map。 - */ - @Override - public Map getSysDataPermListByUserId(Long userId, Long deptId) { - List dataPermList = sysDataPermMapper.getSysDataPermListByUserId(userId); - dataPermList.forEach(dataPerm -> { - if (CollectionUtils.isNotEmpty(dataPerm.getDataPermDeptList())) { - Set deptIdSet = dataPerm.getDataPermDeptList().stream() - .map(SysDataPermDept::getDeptId).collect(Collectors.toSet()); - dataPerm.setDeptIdListString(StringUtils.join(deptIdSet, ",")); - } - }); - // 为了更方便进行后续的合并优化处理,这里再基于规则类型进行分组。ruleMap的key是规则类型。 - Map> ruleMap = - dataPermList.stream().collect(Collectors.groupingBy(SysDataPerm::getRuleType)); - Map resultMap = new HashMap<>(ruleMap.size()); - // 如有有ALL存在,就可以直接退出了,没有必要在处理后续的规则了。 - if (ruleMap.containsKey(DataPermRuleType.TYPE_ALL)) { - resultMap.put(DataPermRuleType.TYPE_ALL, "null"); - return resultMap; - } - // 这里优先合并最复杂的多部门及子部门场景。 - String deptIds = processMultiDeptAndChildren(ruleMap, deptId); - if (deptIds != null) { - resultMap.put(DataPermRuleType.TYPE_MULTI_DEPT_AND_CHILD_DEPT, deptIds); - } - // 合并当前部门及子部门的优化 - if (ruleMap.get(DataPermRuleType.TYPE_DEPT_AND_CHILD_DEPT) != null) { - // 需要与仅仅当前部门规则进行合并。 - ruleMap.remove(DataPermRuleType.TYPE_DEPT_ONLY); - resultMap.put(DataPermRuleType.TYPE_DEPT_AND_CHILD_DEPT, "null"); - } - // 合并自定义部门了。 - deptIds = processMultiDept(ruleMap, deptId); - if (deptIds != null) { - resultMap.put(DataPermRuleType.TYPE_CUSTOM_DEPT_LIST, deptIds); - } - // 最后处理当前部门和当前用户。 - if (ruleMap.get(DataPermRuleType.TYPE_DEPT_ONLY) != null) { - resultMap.put(DataPermRuleType.TYPE_DEPT_ONLY, "null"); - } - if (ruleMap.get(DataPermRuleType.TYPE_USER_ONLY) != null) { - resultMap.put(DataPermRuleType.TYPE_USER_ONLY, "null"); - } - return resultMap; - } - - private String processMultiDeptAndChildren(Map> ruleMap, Long deptId) { - List parentDeptList = ruleMap.get(DataPermRuleType.TYPE_MULTI_DEPT_AND_CHILD_DEPT); - if (parentDeptList == null) { - return null; - } - Set deptIdSet = new HashSet<>(); - for (SysDataPerm parentDept : parentDeptList) { - deptIdSet.addAll(Arrays.stream(StringUtils.split( - parentDept.getDeptIdListString(), ",")).map(Long::valueOf).collect(Collectors.toSet())); - } - // 在合并所有的多父部门Id之后,需要判断是否有本部门及子部门的规则。如果有,就继续合并。 - if (ruleMap.containsKey(DataPermRuleType.TYPE_DEPT_AND_CHILD_DEPT)) { - // 如果多父部门列表中包含当前部门,那么可以直接删除该规则了,如果没包含,就加入到多部门的DEPT_ID的IN LIST中。 - deptIdSet.add(deptId); - ruleMap.remove(DataPermRuleType.TYPE_DEPT_AND_CHILD_DEPT); - } - // 需要与仅仅当前部门规则进行合并。 - if (ruleMap.containsKey(DataPermRuleType.TYPE_DEPT_ONLY)) { - if (deptIdSet.contains(deptId)) { - ruleMap.remove(DataPermRuleType.TYPE_DEPT_ONLY); - } - } - return StringUtils.join(deptIdSet, ','); - } - - private String processMultiDept(Map> ruleMap, Long deptId) { - List customDeptList = ruleMap.get(DataPermRuleType.TYPE_CUSTOM_DEPT_LIST); - if (customDeptList == null) { - return null; - } - Set deptIdSet = new HashSet<>(); - for (SysDataPerm customDept : customDeptList) { - deptIdSet.addAll(Arrays.stream(StringUtils.split( - customDept.getDeptIdListString(), ",")).map(Long::valueOf).collect(Collectors.toSet())); - } - if (ruleMap.containsKey(DataPermRuleType.TYPE_DEPT_ONLY)) { - deptIdSet.add(deptId); - ruleMap.remove(DataPermRuleType.TYPE_DEPT_ONLY); - } - return StringUtils.join(deptIdSet, ','); - } - - /** - * 添加用户和数据权限之间的多对多关联关系。 - * - * @param dataPermId 数据权限Id。 - * @param userIdSet 关联的用户Id列表。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public void addDataPermUserList(Long dataPermId, Set userIdSet) { - for (Long userId : userIdSet) { - SysDataPermUser dataPermUser = new SysDataPermUser(); - dataPermUser.setDataPermId(dataPermId); - dataPermUser.setUserId(userId); - sysDataPermUserMapper.insert(dataPermUser); - } - } - - /** - * 移除用户和数据权限之间的多对多关联关系。 - * - * @param dataPermId 数据权限主键Id。 - * @param userId 用户主键Id。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean removeDataPermUser(Long dataPermId, Long userId) { - SysDataPermUser dataPermUser = new SysDataPermUser(); - dataPermUser.setDataPermId(dataPermId); - dataPermUser.setUserId(userId); - return sysDataPermUserMapper.delete(new QueryWrapper<>(dataPermUser)) == 1; - } - - /** - * 验证数据权限对象关联菜单数据是否都合法。 - * - * @param dataPerm 数据权限关对象。 - * @param deptIdListString 与数据权限关联的部门Id列表。 - * @return 验证结果。 - */ - @Override - public CallResult verifyRelatedData(SysDataPerm dataPerm, String deptIdListString) { - JSONObject jsonObject = new JSONObject(); - if (dataPerm.getRuleType() == DataPermRuleType.TYPE_MULTI_DEPT_AND_CHILD_DEPT - || dataPerm.getRuleType() == DataPermRuleType.TYPE_CUSTOM_DEPT_LIST) { - if (StringUtils.isBlank(deptIdListString)) { - return CallResult.error("数据验证失败,部门列表不能为空!"); - } - Set deptIdSet = Arrays.stream(StringUtils.split( - deptIdListString, ",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysDeptService.existAllPrimaryKeys(deptIdSet)) { - return CallResult.error("数据验证失败,存在不合法的部门数据,请刷新后重试!"); - } - jsonObject.put("deptIdSet", deptIdSet); - } - return CallResult.ok(jsonObject); - } - - private void insertRelationData(SysDataPerm dataPerm, Set deptIdSet) { - if (CollectionUtils.isNotEmpty(deptIdSet)) { - for (Long deptId : deptIdSet) { - SysDataPermDept dataPermDept = new SysDataPermDept(); - dataPermDept.setDataPermId(dataPerm.getDataPermId()); - dataPermDept.setDeptId(deptId); - sysDataPermDeptMapper.insert(dataPermDept); - } - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDeptServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDeptServiceImpl.java deleted file mode 100644 index 0cd089cc..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysDeptServiceImpl.java +++ /dev/null @@ -1,237 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.*; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.orangeforms.webadmin.upms.service.*; -import com.orangeforms.webadmin.upms.dao.*; -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.constant.GlobalDeletedFlag; -import com.orangeforms.common.core.object.MyRelationParam; -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.github.pagehelper.Page; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.ObjectUtils; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.*; - -/** - * 部门管理数据操作服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysDeptService") -public class SysDeptServiceImpl extends BaseService implements SysDeptService { - - @Autowired - private SysDeptMapper sysDeptMapper; - @Autowired - private SysDeptRelationMapper sysDeptRelationMapper; - @Autowired - private SysUserService sysUserService; - @Autowired - private SysDataPermDeptMapper sysDataPermDeptMapper; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回当前Service的主表Mapper对象。 - * - * @return 主表Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysDeptMapper; - } - - /** - * 保存新增的部门对象。 - * - * @param sysDept 新增的部门对象。 - * @param parentSysDept 上级部门对象。 - * @return 新增后的部门对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysDept saveNew(SysDept sysDept, SysDept parentSysDept) { - sysDept.setDeptId(idGenerator.nextLongId()); - sysDept.setDeletedFlag(GlobalDeletedFlag.NORMAL); - MyModelUtil.fillCommonsForInsert(sysDept); - sysDeptMapper.insert(sysDept); - // 同步插入部门关联关系数据 - if (parentSysDept == null) { - sysDeptRelationMapper.insert(new SysDeptRelation(sysDept.getDeptId(), sysDept.getDeptId())); - } else { - sysDeptRelationMapper.insertParentList(parentSysDept.getDeptId(), sysDept.getDeptId()); - } - return sysDept; - } - - /** - * 更新部门对象。 - * - * @param sysDept 更新的部门对象。 - * @param originalSysDept 原有的部门对象。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysDept sysDept, SysDept originalSysDept) { - MyModelUtil.fillCommonsForUpdate(sysDept, originalSysDept); - UpdateWrapper uw = this.createUpdateQueryForNullValue(sysDept, sysDept.getDeptId()); - if (sysDeptMapper.update(sysDept, uw) == 0) { - return false; - } - if (ObjectUtils.notEqual(sysDept.getParentId(), originalSysDept.getParentId())) { - this.updateParentRelation(sysDept, originalSysDept); - } - return true; - } - - private void updateParentRelation(SysDept sysDept, SysDept originalSysDept) { - // 1. 在删除当前部门与原有父部门的关联关系之前,先将原有的所有父部门Id缓存。 - List originalParentIdList = new LinkedList<>(); - if (originalSysDept.getParentId() != null) { - SysDept originalParentDept = getById(originalSysDept.getParentId()); - while (originalParentDept != null) { - originalParentIdList.add(originalParentDept.getDeptId()); - if (originalParentDept.getParentId() == null) { - break; - } - originalParentDept = getById(originalParentDept.getParentId()); - } - } - // 删除其子部门与其原有父部门之间的关联关系。 - for (Long parentDeptId : originalParentIdList) { - sysDeptRelationMapper.removeBetweenChildrenAndParents(parentDeptId, sysDept.getDeptId()); - } - // 2. 将当前部门与原有的父部门列表解除关系。 - SysDeptRelation filter = new SysDeptRelation(); - filter.setDeptId(sysDept.getDeptId()); - sysDeptRelationMapper.delete(new QueryWrapper<>(filter)); - // 3. 将当前部门和新的父部门列表建立关联关系。 - // 在插入与新父部门的关联关系 - List deptRelationList = new LinkedList<>(); - // 先插入自己和自己的关系。 - deptRelationList.add(new SysDeptRelation(sysDept.getDeptId(), sysDept.getDeptId())); - SysDept parentSysDept = null; - if (sysDept.getParentId() != null) { - parentSysDept = getById(sysDept.getParentId()); - } - List newParentIdList = new LinkedList<>(); - // 再插入直接父部门,以及父部门的父部门,并向上以此类推。 - while (parentSysDept != null) { - newParentIdList.add(parentSysDept.getDeptId()); - deptRelationList.add( - new SysDeptRelation(parentSysDept.getDeptId(), sysDept.getDeptId())); - if (parentSysDept.getParentId() == null) { - break; - } - parentSysDept = getById(parentSysDept.getParentId()); - } - sysDeptRelationMapper.insertList(deptRelationList); - // 4. 将当前部门的子部门与其新的父部门建立关联关系 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(MyModelUtil.mapToColumnName("parentDeptId", SysDeptRelation.class), sysDept.getDeptId()); - queryWrapper.ne(MyModelUtil.mapToColumnName("deptId", SysDeptRelation.class), sysDept.getDeptId()); - List childRelationList = sysDeptRelationMapper.selectList(queryWrapper); - List newChildrenAndParentList = new LinkedList<>(); - for (Long newParentId : newParentIdList) { - for (SysDeptRelation childDeptRelation : childRelationList) { - newChildrenAndParentList.add(new SysDeptRelation(newParentId, childDeptRelation.getDeptId())); - } - } - if (CollectionUtils.isNotEmpty(newChildrenAndParentList)) { - sysDeptRelationMapper.insertList(newChildrenAndParentList); - } - } - - /** - * 删除指定数据。 - * - * @param deptId 主键Id。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long deptId) { - if (sysDeptMapper.deleteById(deptId) == 0) { - return false; - } - // 这里删除当前部门及其父部门的关联关系。 - // 当前部门和子部门的关系无需在这里删除,因为包含子部门时不能删除父部门。 - SysDeptRelation deptRelation = new SysDeptRelation(); - deptRelation.setDeptId(deptId); - sysDeptRelationMapper.delete(new QueryWrapper<>(deptRelation)); - SysDataPermDept dataPermDept = new SysDataPermDept(); - dataPermDept.setDeptId(deptId); - sysDataPermDeptMapper.delete(new QueryWrapper<>(dataPermDept)); - return true; - } - - /** - * 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSysDeptListWithRelation)方法。 - * - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - @Override - public List getSysDeptList(SysDept filter, String orderBy) { - return sysDeptMapper.getSysDeptList(filter, orderBy); - } - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。 - * 如果仅仅需要获取主表数据,请移步(getSysDeptList),以便获取更好的查询性能。 - * - * @param filter 主表过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - @Override - public List getSysDeptListWithRelation(SysDept filter, String orderBy) { - List resultList = sysDeptMapper.getSysDeptList(filter, orderBy); - // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 - // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 - int batchSize = resultList instanceof Page ? 0 : 1000; - this.buildRelationForDataList(resultList, MyRelationParam.normal(), batchSize); - return resultList; - } - - /** - * 判断指定对象是否包含下级对象。 - * - * @param deptId 主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean hasChildren(Long deptId) { - SysDept filter = new SysDept(); - filter.setParentId(deptId); - return getCountByFilter(filter) > 0; - } - - /** - * 判断指定部门Id是否包含用户对象。 - * - * @param deptId 部门主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean hasChildrenUser(Long deptId) { - SysUser sysUser = new SysUser(); - sysUser.setDeptId(deptId); - return sysUserService.getCountByFilter(sysUser) > 0; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysMenuServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysMenuServiceImpl.java deleted file mode 100644 index 9c8dfbf4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysMenuServiceImpl.java +++ /dev/null @@ -1,331 +0,0 @@ -package com.orangeforms.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.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.dao.SysMenuMapper; -import com.orangeforms.webadmin.upms.dao.SysMenuPermCodeMapper; -import com.orangeforms.webadmin.upms.dao.SysRoleMenuMapper; -import com.orangeforms.webadmin.upms.model.SysMenu; -import com.orangeforms.webadmin.upms.model.SysMenuPermCode; -import com.orangeforms.webadmin.upms.model.SysRoleMenu; -import com.orangeforms.webadmin.upms.model.constant.SysMenuType; -import com.orangeforms.webadmin.upms.model.constant.SysOnlineMenuPermType; -import com.orangeforms.webadmin.upms.service.SysMenuService; -import com.orangeforms.webadmin.upms.service.SysPermCodeService; -import lombok.extern.slf4j.Slf4j; -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 java.util.*; -import java.util.stream.Collectors; - -/** - * 菜单数据服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysMenuService") -public class SysMenuServiceImpl extends BaseService implements SysMenuService { - - @Autowired - private SysMenuMapper sysMenuMapper; - @Autowired - private SysRoleMenuMapper sysRoleMenuMapper; - @Autowired - private SysMenuPermCodeMapper sysMenuPermCodeMapper; - @Autowired - private SysPermCodeService sysPermCodeService; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysMenuMapper; - } - - /** - * 保存新增的菜单对象。 - * - * @param sysMenu 新增的菜单对象。 - * @param permCodeIdSet 权限字Id列表。 - * @return 新增后的菜单对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysMenu saveNew(SysMenu sysMenu, Set permCodeIdSet) { - sysMenu.setMenuId(idGenerator.nextLongId()); - MyModelUtil.fillCommonsForInsert(sysMenu); - sysMenuMapper.insert(sysMenu); - if (permCodeIdSet != null) { - for (Long permCodeId : permCodeIdSet) { - SysMenuPermCode menuPermCode = new SysMenuPermCode(); - menuPermCode.setMenuId(sysMenu.getMenuId()); - menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeMapper.insert(menuPermCode); - } - } - // 判断当前菜单是否为指向在线表单的菜单,并将根据约定,动态插入两个子菜单。 - if (sysMenu.getOnlineFormId() != null) { - SysMenu viewSubMenu = new SysMenu(); - viewSubMenu.setMenuId(idGenerator.nextLongId()); - viewSubMenu.setParentId(sysMenu.getMenuId()); - viewSubMenu.setMenuType(SysMenuType.TYPE_BUTTON); - viewSubMenu.setMenuName("查看"); - viewSubMenu.setShowOrder(0); - viewSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); - viewSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_VIEW); - MyModelUtil.fillCommonsForInsert(viewSubMenu); - sysMenuMapper.insert(viewSubMenu); - SysMenu editSubMenu = new SysMenu(); - editSubMenu.setMenuId(idGenerator.nextLongId()); - editSubMenu.setParentId(sysMenu.getMenuId()); - editSubMenu.setMenuType(SysMenuType.TYPE_BUTTON); - editSubMenu.setMenuName("编辑"); - editSubMenu.setShowOrder(1); - editSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); - editSubMenu.setOnlineMenuPermType(SysOnlineMenuPermType.TYPE_EDIT); - MyModelUtil.fillCommonsForInsert(editSubMenu); - sysMenuMapper.insert(editSubMenu); - } - return sysMenu; - } - - /** - * 更新菜单对象。 - * - * @param sysMenu 更新的菜单对象。 - * @param originalSysMenu 原有的菜单对象。 - * @param permCodeIdSet 权限字Id列表。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysMenu sysMenu, SysMenu originalSysMenu, Set permCodeIdSet) { - MyModelUtil.fillCommonsForUpdate(sysMenu, originalSysMenu); - sysMenu.setMenuType(originalSysMenu.getMenuType()); - 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(new QueryWrapper<>(deletedMenuPermCode)); - if (permCodeIdSet != null) { - for (Long permCodeId : permCodeIdSet) { - SysMenuPermCode menuPermCode = new SysMenuPermCode(); - menuPermCode.setMenuId(sysMenu.getMenuId()); - menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeMapper.insert(menuPermCode); - } - } - // 如果当前菜单的在线表单Id变化了,就需要同步更新他的内置子菜单也同步更新。 - if (ObjectUtil.notEqual(originalSysMenu.getOnlineFormId(), sysMenu.getOnlineFormId())) { - SysMenu onlineSubMenu = new SysMenu(); - onlineSubMenu.setOnlineFormId(sysMenu.getOnlineFormId()); - sysMenuMapper.update(onlineSubMenu, - new QueryWrapper().lambda().eq(SysMenu::getParentId, sysMenu.getMenuId())); - } - return true; - } - - /** - * 删除指定的菜单。 - * - * @param menu 菜单对象。 - * @return 删除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(SysMenu menu) { - Long menuId = menu.getMenuId(); - if (sysMenuMapper.deleteById(menuId) != 1) { - return false; - } - SysRoleMenu roleMenu = new SysRoleMenu(); - roleMenu.setMenuId(menuId); - sysRoleMenuMapper.delete(new QueryWrapper<>(roleMenu)); - SysMenuPermCode menuPermCode = new SysMenuPermCode(); - menuPermCode.setMenuId(menuId); - sysMenuPermCodeMapper.delete(new QueryWrapper<>(menuPermCode)); - // 如果为指向在线表单的菜单,则连同删除子菜单 - if (menu.getOnlineFormId() != null) { - sysMenuMapper.delete(new QueryWrapper().lambda().eq(SysMenu::getParentId, menuId)); - } - return true; - } - - /** - * 获取全部菜单列表。 - * - * @return 全部菜单列表。 - */ - @Override - public Collection getAllMenuList() { - 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); - } - - /** - * 获取指定用户Id的菜单列表,已去重。 - * - * @param userId 用户主键Id。 - * @return 用户关联的菜单列表。 - */ - @Override - public Collection getMenuListByUserId(Long userId) { - List menuList = sysMenuMapper.getMenuListByUserId(userId); - LinkedHashMap menuMap = new LinkedHashMap<>(); - for (SysMenu menu : menuList) { - menuMap.put(menu.getMenuId(), menu); - } - return menuMap.values(); - } - - /** - * 判断当前菜单是否存在子菜单。 - * - * @param menuId 菜单主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean hasChildren(Long menuId) { - SysMenu menu = new SysMenu(); - menu.setParentId(menuId); - return this.getCountByFilter(menu) > 0; - } - - /** - * 验证菜单对象关联的数据是否都合法。 - * - * @param sysMenu 当前操作的对象。 - * @param originalSysMenu 原有对象。 - * @param permCodeIdListString 逗号分隔的权限Id列表。 - * @return 验证结果。 - */ - @Override - public CallResult verifyRelatedData(SysMenu sysMenu, SysMenu originalSysMenu, String permCodeIdListString) { - // menu、ui fragment和button类型的menu不能没有parentId - if (sysMenu.getParentId() == null) { - if (sysMenu.getMenuType() != SysMenuType.TYPE_DIRECTORY) { - return CallResult.error("数据验证失败,当前类型菜单项的上级菜单不能为空!"); - } - } - if (this.needToVerify(sysMenu, originalSysMenu, SysMenu::getParentId)) { - String errorMessage = checkErrorOfNonDirectoryMenu(sysMenu); - if (errorMessage != null) { - return CallResult.error(errorMessage); - } - } - JSONObject jsonObject = null; - if (StringUtils.isNotBlank(permCodeIdListString)) { - Set permCodeIdSet = Arrays.stream( - permCodeIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysPermCodeService.existAllPrimaryKeys(permCodeIdSet)) { - return CallResult.error("数据验证失败,存在不合法的权限字,请刷新后重试!"); - } - jsonObject = new JSONObject(); - jsonObject.put("permCodeIdSet", permCodeIdSet); - } - return CallResult.ok(jsonObject); - } - - /** - * 查询菜单的权限资源地址列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param url 权限资源地址过滤条件。 - * @return 包含从菜单到权限资源的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysPermListWithDetail(Long menuId, String url) { - return sysMenuMapper.getSysPermListWithDetail(menuId, url); - } - - /** - * 查询菜单的用户列表。同时返回详细的分配路径。 - * - * @param menuId 菜单Id。 - * @param loginName 登录名。 - * @return 包含从菜单到用户的完整权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysUserListWithDetail(Long menuId, String loginName) { - return sysMenuMapper.getSysUserListWithDetail(menuId, loginName); - } - - /** - * 获取指定类型的所有在线表单的菜单。 - * - * @param menuType 菜单类型,NULL则返回全部类型。 - * @return 在线表单关联的菜单列表。 - */ - @Override - public List getAllOnlineMenuList(Integer menuType) { - LambdaQueryWrapper queryWrapper = - new QueryWrapper().lambda().isNotNull(SysMenu::getOnlineFormId); - if (menuType != null) { - queryWrapper.eq(SysMenu::getMenuType, menuType); - } - return sysMenuMapper.selectList(queryWrapper); - } - - /** - * 获取当前用户有权访问的在线表单菜单,仅返回类型为BUTTON的菜单。 - * - * @param userId 指定的用户。 - * @param menuType 菜单类型,NULL则返回全部类型。 - * @return 在线表单关联的菜单列表。 - */ - @Override - public List getOnlineMenuListByUserId(Long userId, Integer menuType) { - return sysMenuMapper.getOnlineMenuListByUserId(userId, menuType); - } - - private String checkErrorOfNonDirectoryMenu(SysMenu sysMenu) { - // 判断父节点是否存在 - SysMenu parentSysMenu = getById(sysMenu.getParentId()); - if (parentSysMenu == null) { - return "数据验证失败,关联的上级菜单并不存在,请刷新后重试!"; - } - // 逐个判断每种类型的菜单,他的父菜单的合法性,先从目录类型和菜单类型开始 - if (sysMenu.getMenuType() == SysMenuType.TYPE_DIRECTORY - || sysMenu.getMenuType() == SysMenuType.TYPE_MENU) { - // 他们的上级只能是目录 - if (parentSysMenu.getMenuType() != SysMenuType.TYPE_DIRECTORY) { - return "数据验证失败,当前类型菜单项的上级菜单只能是目录类型!"; - } - } else if (sysMenu.getMenuType() == SysMenuType.TYPE_UI_FRAGMENT) { - // ui fragment的上级只能是menu类型 - if (parentSysMenu.getMenuType() != SysMenuType.TYPE_MENU) { - return "数据验证失败,当前类型菜单项的上级菜单只能是菜单类型和按钮类型!"; - } - } else if (sysMenu.getMenuType() == SysMenuType.TYPE_BUTTON) { - // button的上级只能是menu和ui fragment - if (parentSysMenu.getMenuType() != SysMenuType.TYPE_MENU - && parentSysMenu.getMenuType() != SysMenuType.TYPE_UI_FRAGMENT) { - return "数据验证失败,当前类型菜单项的上级菜单只能是菜单类型和UI片段类型!"; - } - } - return null; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermCodeServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermCodeServiceImpl.java deleted file mode 100644 index 98710206..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermCodeServiceImpl.java +++ /dev/null @@ -1,224 +0,0 @@ -package com.orangeforms.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.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.dao.SysMenuPermCodeMapper; -import com.orangeforms.webadmin.upms.dao.SysPermCodeMapper; -import com.orangeforms.webadmin.upms.dao.SysPermCodePermMapper; -import com.orangeforms.webadmin.upms.model.SysMenuPermCode; -import com.orangeforms.webadmin.upms.model.SysPermCode; -import com.orangeforms.webadmin.upms.model.SysPermCodePerm; -import com.orangeforms.webadmin.upms.service.SysPermCodeService; -import com.orangeforms.webadmin.upms.service.SysPermService; -import lombok.extern.slf4j.Slf4j; -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 java.util.*; -import java.util.stream.Collectors; - -/** - * 权限字数据服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysPermCodeService") -public class SysPermCodeServiceImpl extends BaseService implements SysPermCodeService { - - @Autowired - private SysPermCodeMapper sysPermCodeMapper; - @Autowired - private SysPermCodePermMapper sysPermCodePermMapper; - @Autowired - private SysMenuPermCodeMapper sysMenuPermCodeMapper; - @Autowired - private SysPermService sysPermService; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysPermCodeMapper; - } - - /** - * 获取指定用户的权限字列表,已去重。 - * - * @param userId 用户主键Id。 - * @return 用户关联的权限字列表。 - */ - @Override - public Collection getPermCodeListByUserId(Long userId) { - List permCodeList = sysPermCodeMapper.getPermCodeListByUserId(userId); - return new HashSet<>(permCodeList); - } - - /** - * 获取所有权限字数据列表,已去重。 - * - * @return 全部权限字列表。 - */ - @Override - public Collection getAllPermCodeList() { - List permCodeList = this.getAllList(); - return permCodeList.stream().map(SysPermCode::getPermCode).collect(Collectors.toSet()); - } - - /** - * 保存新增的权限字对象。 - * - * @param sysPermCode 新增的权限字对象。 - * @param permIdSet 权限资源Id列表。 - * @return 新增后的权限字对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysPermCode saveNew(SysPermCode sysPermCode, Set permIdSet) { - sysPermCode.setPermCodeId(idGenerator.nextLongId()); - MyModelUtil.fillCommonsForInsert(sysPermCode); - sysPermCodeMapper.insert(sysPermCode); - if (permIdSet != null) { - for (Long permId : permIdSet) { - SysPermCodePerm permCodePerm = new SysPermCodePerm(); - permCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); - permCodePerm.setPermId(permId); - sysPermCodePermMapper.insert(permCodePerm); - } - } - return sysPermCode; - } - - /** - * 更新权限字对象。 - * - * @param sysPermCode 更新的权限字对象。 - * @param originalSysPermCode 原有的权限字对象。 - * @param permIdSet 权限资源Id列表。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysPermCode sysPermCode, SysPermCode originalSysPermCode, Set permIdSet) { - MyModelUtil.fillCommonsForUpdate(sysPermCode, originalSysPermCode); - sysPermCode.setParentId(originalSysPermCode.getParentId()); - 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(new QueryWrapper<>(deletedPermCodePerm)); - if (permIdSet != null) { - for (Long permId : permIdSet) { - SysPermCodePerm permCodePerm = new SysPermCodePerm(); - permCodePerm.setPermCodeId(sysPermCode.getPermCodeId()); - permCodePerm.setPermId(permId); - sysPermCodePermMapper.insert(permCodePerm); - } - } - return true; - } - - /** - * 删除指定的权限字。 - * - * @param permCodeId 权限字主键Id。 - * @return 删除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long permCodeId) { - if (sysPermCodeMapper.deleteById(permCodeId) != 1) { - return false; - } - SysMenuPermCode menuPermCode = new SysMenuPermCode(); - menuPermCode.setPermCodeId(permCodeId); - sysMenuPermCodeMapper.delete(new QueryWrapper<>(menuPermCode)); - SysPermCodePerm permCodePerm = new SysPermCodePerm(); - permCodePerm.setPermCodeId(permCodeId); - sysPermCodePermMapper.delete(new QueryWrapper<>(permCodePerm)); - return true; - } - - /** - * 判断当前权限字是否存在下级权限字对象。 - * - * @param permCodeId 权限字主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean hasChildren(Long permCodeId) { - SysPermCode permCode = new SysPermCode(); - permCode.setParentId(permCodeId); - return this.getCountByFilter(permCode) > 0; - } - - /** - * 验证权限字对象关联的数据是否都合法。 - * - * @param sysPermCode 当前操作的对象。 - * @param originalSysPermCode 原有对象。 - * @param permIdListString 逗号分隔的权限资源Id列表。 - * @return 验证结果。 - */ - @Override - public CallResult verifyRelatedData( - SysPermCode sysPermCode, SysPermCode originalSysPermCode, String permIdListString) { - if (this.needToVerify(sysPermCode, originalSysPermCode, SysPermCode::getParentId)) { - if (getById(sysPermCode.getParentId()) == null) { - return CallResult.error("数据验证失败,关联的上级权限字并不存在,请刷新后重试!"); - } - } - JSONObject jsonObject = null; - if (StringUtils.isNotBlank(permIdListString)) { - Set permIdSet = Arrays.stream( - permIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysPermService.existAllPrimaryKeys(permIdSet)) { - return CallResult.error("数据验证失败,存在不合法的权限资源,请刷新后重试!"); - } - jsonObject = new JSONObject(); - jsonObject.put("permIdSet", permIdSet); - } - return CallResult.ok(jsonObject); - } - - /** - * 查询权限字的用户列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param loginName 登录名。 - * @return 包含从权限字到用户的完整权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysUserListWithDetail(Long permCodeId, String loginName) { - return sysPermCodeMapper.getSysUserListWithDetail(permCodeId, loginName); - } - - /** - * 查询权限字的角色列表。同时返回详细的分配路径。 - * - * @param permCodeId 权限字Id。 - * @param roleName 角色名。 - * @return 包含从权限字到角色的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysRoleListWithDetail(Long permCodeId, String roleName) { - return sysPermCodeMapper.getSysRoleListWithDetail(permCodeId, roleName); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermModuleServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermModuleServiceImpl.java deleted file mode 100644 index bb1849fc..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermModuleServiceImpl.java +++ /dev/null @@ -1,122 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.webadmin.upms.dao.SysPermModuleMapper; -import com.orangeforms.webadmin.upms.model.SysPerm; -import com.orangeforms.webadmin.upms.model.SysPermModule; -import com.orangeforms.webadmin.upms.service.SysPermModuleService; -import com.orangeforms.webadmin.upms.service.SysPermService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 权限资源模块数据服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysPermModuleService") -public class SysPermModuleServiceImpl extends BaseService implements SysPermModuleService { - - @Autowired - private SysPermModuleMapper sysPermModuleMapper; - @Autowired - private SysPermService sysPermService; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysPermModuleMapper; - } - - /** - * 保存新增的权限资源模块对象。 - * - * @param sysPermModule 新增的权限资源模块对象。 - * @return 新增后的权限资源模块对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysPermModule saveNew(SysPermModule sysPermModule) { - sysPermModule.setModuleId(idGenerator.nextLongId()); - MyModelUtil.fillCommonsForInsert(sysPermModule); - sysPermModuleMapper.insert(sysPermModule); - return sysPermModule; - } - - /** - * 更新权限资源模块对象。 - * - * @param sysPermModule 更新的权限资源模块对象。 - * @param originalSysPermModule 原有的权限资源模块对象。 - * @return 更新成功返回true,否则false - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysPermModule sysPermModule, SysPermModule originalSysPermModule) { - MyModelUtil.fillCommonsForUpdate(sysPermModule, originalSysPermModule); - return sysPermModuleMapper.updateById(sysPermModule) != 0; - } - - /** - * 删除指定的权限资源模块。 - * - * @param moduleId 权限资源模块主键Id。 - * @return 删除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long moduleId) { - return sysPermModuleMapper.deleteById(moduleId) == 1; - } - - /** - * 获取权限模块资源及其关联的权限资源列表。 - * - * @return 权限资源模块及其关联的权限资源列表。 - */ - @Override - public List getPermModuleAndPermList() { - return sysPermModuleMapper.getPermModuleAndPermList(); - } - - /** - * 判断是否存在下级权限资源模块。 - * - * @param moduleId 权限资源模块主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean hasChildren(Long moduleId) { - SysPermModule permModule = new SysPermModule(); - permModule.setParentId(moduleId); - return this.getCountByFilter(permModule) > 0; - } - - /** - * 判断是否存在权限数据。 - * - * @param moduleId 权限资源模块主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean hasModulePerms(Long moduleId) { - SysPerm filter = new SysPerm(); - filter.setModuleId(moduleId); - return sysPermService.getCountByFilter(filter) > 0; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermServiceImpl.java deleted file mode 100644 index 3b8e2442..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermServiceImpl.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import cn.hutool.core.util.ObjectUtil; -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.object.MyRelationParam; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.core.util.RedisKeyUtil; -import com.orangeforms.webadmin.config.ApplicationConfig; -import com.orangeforms.webadmin.upms.service.*; -import com.orangeforms.webadmin.upms.dao.SysPermCodePermMapper; -import com.orangeforms.webadmin.upms.dao.SysPermMapper; -import com.orangeforms.webadmin.upms.model.SysPerm; -import com.orangeforms.webadmin.upms.model.SysPermCodePerm; -import com.orangeforms.webadmin.upms.model.SysPermModule; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.redisson.api.RSet; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; - -/** - * 权限资源数据服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysPermService") -public class SysPermServiceImpl extends BaseService implements SysPermService { - - @Autowired - private SysPermMapper sysPermMapper; - @Autowired - private SysPermCodePermMapper sysPermCodePermMapper; - @Autowired - private SysPermModuleService sysPermModuleService; - @Autowired - private SysUserService sysUserService; - @Autowired - private IdGeneratorWrapper idGenerator; - @Autowired - private RedissonClient redissonClient; - @Autowired - private ApplicationConfig applicationConfig; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysPermMapper; - } - - /** - * 保存新增的权限资源对象。 - * - * @param perm 新增的权限资源对象。 - * @return 新增后的权限资源对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysPerm saveNew(SysPerm perm) { - perm.setPermId(idGenerator.nextLongId()); - MyModelUtil.fillCommonsForInsert(perm); - sysPermMapper.insert(perm); - return perm; - } - - /** - * 更新权限资源对象。 - * - * @param perm 更新的权限资源对象。 - * @param originalPerm 原有的权限资源对象。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysPerm perm, SysPerm originalPerm) { - MyModelUtil.fillCommonsForUpdate(perm, originalPerm); - return sysPermMapper.updateById(perm) != 0; - } - - /** - * 删除权限资源。 - * - * @param permId 权限资源主键Id。 - * @return 删除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long permId) { - if (sysPermMapper.deleteById(permId) != 1) { - return false; - } - SysPermCodePerm permCodePerm = new SysPermCodePerm(); - permCodePerm.setPermId(permId); - sysPermCodePermMapper.delete(new QueryWrapper<>(permCodePerm)); - return true; - } - - /** - * 获取权限数据列表。 - * - * @param sysPermFilter 过滤对象。 - * @return 权限列表。 - */ - @Override - public List getPermListWithRelation(SysPerm sysPermFilter) { - 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; - } - - /** - * 将指定用户的指定会话的权限集合存入缓存。 - * - * @param sessionId 会话Id。 - * @param userId 用户主键Id。 - * @return 查询并缓存后的权限集合。 - */ - @Override - public Collection putUserSysPermCache(String sessionId, Long userId) { - Collection permList = this.getPermListByUserId(userId); - if (CollectionUtils.isEmpty(permList)) { - return permList; - } - String sessionPermKey = RedisKeyUtil.makeSessionPermIdKey(sessionId); - RSet redisPermSet = redissonClient.getSet(sessionPermKey); - redisPermSet.addAll(permList.stream().map(Object::toString).collect(Collectors.toSet())); - redisPermSet.expire(applicationConfig.getSessionExpiredSeconds(), TimeUnit.SECONDS); - return permList; - } - - /** - * 把在线表单的权限URL集合,存放到权限URL的缓存中。 - * - * @param sessionId 会话Id。 - * @param permUrlSet URL集合。 - */ - @Override - public void putOnlinePermToCache(String sessionId, Set permUrlSet) { - String sessionPermKey = RedisKeyUtil.makeSessionPermIdKey(sessionId); - redissonClient.getSet(sessionPermKey).addAll(permUrlSet); - } - - /** - * 将指定会话的权限集合从缓存中移除。 - * - * @param sessionId 会话Id。 - */ - @Override - public void removeUserSysPermCache(String sessionId) { - String sessionPermKey = RedisKeyUtil.makeSessionPermIdKey(sessionId); - redissonClient.getSet(sessionPermKey).deleteAsync(); - } - - /** - * 获取与指定用户关联的权限资源列表,已去重。 - * - * @param userId 关联的用户主键Id。 - * @return 与指定用户Id关联的权限资源列表。 - */ - @Override - public Collection getPermListByUserId(Long userId) { - List urlList = sysPermMapper.getPermListByUserId(userId); - return new HashSet<>(urlList); - } - - /** - * 验证权限资源对象关联的数据是否都合法。 - * - * @param sysPerm 当前操作的对象。 - * @param originalSysPerm 原有对象。 - * @return 验证结果。 - */ - @Override - public CallResult verifyRelatedData(SysPerm sysPerm, SysPerm originalSysPerm) { - if (this.needToVerify(sysPerm, originalSysPerm, SysPerm::getModuleId)) { - SysPermModule permModule = sysPermModuleService.getById(sysPerm.getModuleId()); - if (permModule == null) { - return CallResult.error("数据验证失败,关联的权限模块Id并不存在,请刷新后重试!"); - } - } - return CallResult.ok(); - } - - /** - * 查询权限资源地址的用户列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param loginName 登录名。 - * @return 包含从权限资源到用户的完整权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysUserListWithDetail(Long permId, String loginName) { - return sysPermMapper.getSysUserListWithDetail(permId, loginName); - } - - /** - * 查询权限资源地址的角色列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param roleName 角色名。 - * @return 包含从权限资源到角色的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysRoleListWithDetail(Long permId, String roleName) { - return sysPermMapper.getSysRoleListWithDetail(permId, roleName); - } - - /** - * 查询权限资源地址的菜单列表。同时返回详细的分配路径。 - * - * @param permId 权限资源Id。 - * @param menuName 菜单名。 - * @return 包含从权限资源到菜单的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysMenuListWithDetail(Long permId, String menuName) { - return sysPermMapper.getSysMenuListWithDetail(permId, menuName); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermWhitelistServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermWhitelistServiceImpl.java deleted file mode 100644 index da536d49..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysPermWhitelistServiceImpl.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.webadmin.upms.dao.SysPermWhitelistMapper; -import com.orangeforms.webadmin.upms.model.SysPermWhitelist; -import com.orangeforms.webadmin.upms.service.SysPermWhitelistService; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * 权限资源白名单数据服务类。 - * 白名单中的权限资源,可以不受权限控制,任何用户皆可访问,一般用于常用的字典数据列表接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysPermWhitelistService") -public class SysPermWhitelistServiceImpl extends BaseService implements SysPermWhitelistService { - - @Autowired - private SysPermWhitelistMapper sysPermWhitelistMapper; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysPermWhitelistMapper; - } - - /** - * 获取白名单权限资源的列表。 - * - * @return 白名单权限资源地址列表。 - */ - @Override - public List getWhitelistPermList() { - List dataList = this.getAllList(); - Function getterFunc = SysPermWhitelist::getPermUrl; - return dataList.stream() - .filter(x -> getterFunc.apply(x) != null).map(getterFunc).collect(Collectors.toList()); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysRoleServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysRoleServiceImpl.java deleted file mode 100644 index cafbcd87..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysRoleServiceImpl.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.alibaba.fastjson.JSONObject; -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.webadmin.upms.dao.SysRoleMapper; -import com.orangeforms.webadmin.upms.dao.SysRoleMenuMapper; -import com.orangeforms.webadmin.upms.dao.SysUserRoleMapper; -import com.orangeforms.webadmin.upms.model.SysRole; -import com.orangeforms.webadmin.upms.model.SysRoleMenu; -import com.orangeforms.webadmin.upms.model.SysUserRole; -import com.orangeforms.webadmin.upms.service.SysMenuService; -import com.orangeforms.webadmin.upms.service.SysRoleService; -import lombok.extern.slf4j.Slf4j; -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 java.util.*; -import java.util.stream.Collectors; - -/** - * 角色数据服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysRoleService") -public class SysRoleServiceImpl extends BaseService implements SysRoleService { - - @Autowired - private SysRoleMapper sysRoleMapper; - @Autowired - private SysRoleMenuMapper sysRoleMenuMapper; - @Autowired - private SysUserRoleMapper sysUserRoleMapper; - @Autowired - private SysMenuService sysMenuService; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 返回主对象的Mapper对象。 - * - * @return 主对象的Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysRoleMapper; - } - - /** - * 保存新增的角色对象。 - * - * @param role 新增的角色对象。 - * @param menuIdSet 菜单Id列表。 - * @return 新增后的角色对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysRole saveNew(SysRole role, Set menuIdSet) { - role.setRoleId(idGenerator.nextLongId()); - MyModelUtil.fillCommonsForInsert(role); - sysRoleMapper.insert(role); - if (menuIdSet != null) { - for (Long menuId : menuIdSet) { - SysRoleMenu roleMenu = new SysRoleMenu(); - roleMenu.setRoleId(role.getRoleId()); - roleMenu.setMenuId(menuId); - sysRoleMenuMapper.insert(roleMenu); - } - } - return role; - } - - /** - * 更新角色对象。 - * - * @param role 更新的角色对象。 - * @param originalRole 原有的角色对象。 - * @param menuIdSet 菜单Id列表。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysRole role, SysRole originalRole, Set menuIdSet) { - MyModelUtil.fillCommonsForUpdate(role, originalRole); - if (sysRoleMapper.updateById(role) != 1) { - return false; - } - SysRoleMenu deletedRoleMenu = new SysRoleMenu(); - deletedRoleMenu.setRoleId(role.getRoleId()); - sysRoleMenuMapper.delete(new QueryWrapper<>(deletedRoleMenu)); - if (menuIdSet != null) { - for (Long menuId : menuIdSet) { - SysRoleMenu roleMenu = new SysRoleMenu(); - roleMenu.setRoleId(role.getRoleId()); - roleMenu.setMenuId(menuId); - sysRoleMenuMapper.insert(roleMenu); - } - } - return true; - } - - /** - * 删除指定角色。 - * - * @param roleId 角色主键Id。 - * @return 删除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long roleId) { - if (sysRoleMapper.deleteById(roleId) != 1) { - return false; - } - SysRoleMenu roleMenu = new SysRoleMenu(); - roleMenu.setRoleId(roleId); - sysRoleMenuMapper.delete(new QueryWrapper<>(roleMenu)); - SysUserRole userRole = new SysUserRole(); - userRole.setRoleId(roleId); - sysUserRoleMapper.delete(new QueryWrapper<>(userRole)); - return true; - } - - /** - * 获取角色列表。 - * - * @param filter 角色过滤对象。 - * @param orderBy 排序参数。 - * @return 角色列表。 - */ - @Override - public List getSysRoleList(SysRole filter, String orderBy) { - return sysRoleMapper.getSysRoleList(filter, orderBy); - } - - @Override - public List getSysUserRoleListByUserId(Long userId) { - SysUserRole filter = new SysUserRole(); - filter.setUserId(userId); - return sysUserRoleMapper.selectList(new QueryWrapper<>(filter)); - } - - /** - * 批量新增用户角色关联。 - * - * @param userRoleList 用户角色关系数据列表。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public void addUserRoleList(List userRoleList) { - for (SysUserRole userRole : userRoleList) { - sysUserRoleMapper.insert(userRole); - } - } - - /** - * 移除指定用户和指定角色的关联关系。 - * - * @param roleId 角色主键Id。 - * @param userId 用户主键Id。 - * @return 移除成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean removeUserRole(Long roleId, Long userId) { - SysUserRole userRole = new SysUserRole(); - userRole.setRoleId(roleId); - userRole.setUserId(userId); - return sysUserRoleMapper.delete(new QueryWrapper<>(userRole)) == 1; - } - - /** - * 验证角色对象关联的数据是否都合法。 - * - * @param sysRole 当前操作的对象。 - * @param originalSysRole 原有对象。 - * @param menuIdListString 逗号分隔的menuId列表。 - * @return 验证结果。 - */ - @Override - public CallResult verifyRelatedData(SysRole sysRole, SysRole originalSysRole, String menuIdListString) { - JSONObject jsonObject = null; - if (StringUtils.isNotBlank(menuIdListString)) { - Set menuIdSet = Arrays.stream( - menuIdListString.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysMenuService.existAllPrimaryKeys(menuIdSet)) { - return CallResult.error("数据验证失败,存在不合法的菜单权限,请刷新后重试!"); - } - jsonObject = new JSONObject(); - jsonObject.put("menuIdSet", menuIdSet); - } - return CallResult.ok(jsonObject); - } - - /** - * 查询角色的权限资源地址列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param url url过滤条件。 - * @return 包含从角色到权限资源的完整权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysPermListWithDetail(Long roleId, String url) { - return sysRoleMapper.getSysPermListWithDetail(roleId, url); - } - - /** - * 查询角色的权限字列表。同时返回详细的分配路径。 - * - * @param roleId 角色Id。 - * @param permCode 权限字名称过滤条件。 - * @return 包含从角色到权限字的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysPermCodeListWithDetail(Long roleId, String permCode) { - return sysRoleMapper.getSysPermCodeListWithDetail(roleId, permCode); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysUserServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysUserServiceImpl.java deleted file mode 100644 index 941c9d7f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/service/impl/SysUserServiceImpl.java +++ /dev/null @@ -1,364 +0,0 @@ -package com.orangeforms.webadmin.upms.service.impl; - -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.*; -import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; -import com.orangeforms.webadmin.upms.service.*; -import com.orangeforms.webadmin.upms.dao.*; -import com.orangeforms.webadmin.upms.model.*; -import com.orangeforms.webadmin.upms.model.constant.SysUserStatus; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.constant.GlobalDeletedFlag; -import com.orangeforms.common.core.object.MyRelationParam; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import com.github.pagehelper.Page; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -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 java.util.*; -import java.util.stream.Collectors; - -/** - * 用户管理数据操作服务类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Service("sysUserService") -public class SysUserServiceImpl extends BaseService implements SysUserService { - - @Autowired - private SysUserMapper sysUserMapper; - @Autowired - private SysUserRoleMapper sysUserRoleMapper; - @Autowired - private SysDataPermUserMapper sysDataPermUserMapper; - @Autowired - private SysDeptService sysDeptService; - @Autowired - private SysRoleService sysRoleService; - @Autowired - private SysDataPermService sysDataPermService; - @Autowired - private IdGeneratorWrapper idGenerator; - @Autowired - private PasswordEncoder passwordEncoder; - - /** - * 返回当前Service的主表Mapper对象。 - * - * @return 主表Mapper对象。 - */ - @Override - protected BaseDaoMapper mapper() { - return sysUserMapper; - } - - /** - * 获取指定登录名的用户对象。 - * - * @param loginName 指定登录用户名。 - * @return 用户对象。 - */ - @Override - public SysUser getSysUserByLoginName(String loginName) { - SysUser filter = new SysUser(); - filter.setLoginName(loginName); - return sysUserMapper.selectOne(new QueryWrapper<>(filter)); - } - - /** - * 保存新增的用户对象。 - * - * @param user 新增的用户对象。 - * @param roleIdSet 用户角色Id集合。 - * @param dataPermIdSet 数据权限Id集合。 - * @return 新增后的用户对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public SysUser saveNew(SysUser user, Set roleIdSet, Set dataPermIdSet) { - user.setUserId(idGenerator.nextLongId()); - user.setPassword(passwordEncoder.encode(user.getPassword())); - user.setUserStatus(SysUserStatus.STATUS_NORMAL); - user.setDeletedFlag(GlobalDeletedFlag.NORMAL); - MyModelUtil.fillCommonsForInsert(user); - sysUserMapper.insert(user); - if (CollectionUtils.isNotEmpty(roleIdSet)) { - for (Long roleId : roleIdSet) { - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(user.getUserId()); - userRole.setRoleId(roleId); - sysUserRoleMapper.insert(userRole); - } - } - if (CollectionUtils.isNotEmpty(dataPermIdSet)) { - for (Long dataPermId : dataPermIdSet) { - SysDataPermUser dataPermUser = new SysDataPermUser(); - dataPermUser.setDataPermId(dataPermId); - dataPermUser.setUserId(user.getUserId()); - sysDataPermUserMapper.insert(dataPermUser); - } - } - return user; - } - - /** - * 更新用户对象。 - * - * @param user 更新的用户对象。 - * @param originalUser 原有的用户对象。 - * @param roleIdSet 用户角色Id列表。 - * @param dataPermIdSet 数据权限Id集合。 - * @return 更新成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(SysUser user, SysUser originalUser, Set roleIdSet, Set dataPermIdSet) { - user.setLoginName(originalUser.getLoginName()); - user.setPassword(originalUser.getPassword()); - MyModelUtil.fillCommonsForUpdate(user, originalUser); - 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(new QueryWrapper<>(deletedUserRole)); - if (CollectionUtils.isNotEmpty(roleIdSet)) { - for (Long roleId : roleIdSet) { - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(user.getUserId()); - userRole.setRoleId(roleId); - sysUserRoleMapper.insert(userRole); - } - } - // 先删除原有的DataPerm-User关联关系,在重新插入新的关联关系 - SysDataPermUser deletedDataPermUser = new SysDataPermUser(); - deletedDataPermUser.setUserId(user.getUserId()); - sysDataPermUserMapper.delete(new QueryWrapper<>(deletedDataPermUser)); - if (CollectionUtils.isNotEmpty(dataPermIdSet)) { - for (Long dataPermId : dataPermIdSet) { - SysDataPermUser dataPermUser = new SysDataPermUser(); - dataPermUser.setDataPermId(dataPermId); - dataPermUser.setUserId(user.getUserId()); - sysDataPermUserMapper.insert(dataPermUser); - } - } - return true; - } - - /** - * 修改用户密码。 - * @param userId 用户主键Id。 - * @param newPass 新密码。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean changePassword(Long userId, String newPass) { - SysUser updatedUser = new SysUser(); - updatedUser.setUserId(userId); - updatedUser.setPassword(passwordEncoder.encode(newPass)); - return sysUserMapper.updateById(updatedUser) == 1; - } - - @Transactional(rollbackFor = Exception.class) - @Override - public boolean changeHeadImage(Long userId, String newHeadImage) { - SysUser updatedUser = new SysUser(); - updatedUser.setUserId(userId); - updatedUser.setHeadImageUrl(newHeadImage); - return sysUserMapper.updateById(updatedUser) == 1; - } - - /** - * 删除指定数据。 - * - * @param userId 主键Id。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(Long userId) { - if (sysUserMapper.deleteById(userId) == 0) { - return false; - } - SysUserRole userRole = new SysUserRole(); - userRole.setUserId(userId); - sysUserRoleMapper.delete(new QueryWrapper<>(userRole)); - SysDataPermUser dataPermUser = new SysDataPermUser(); - dataPermUser.setUserId(userId); - sysDataPermUserMapper.delete(new QueryWrapper<>(dataPermUser)); - return true; - } - - /** - * 获取单表查询结果。由于没有关联数据查询,因此在仅仅获取单表数据的场景下,效率更高。 - * 如果需要同时获取关联数据,请移步(getSysUserListWithRelation)方法。 - * - * @param filter 过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - @Override - public List getSysUserList(SysUser filter, String orderBy) { - return sysUserMapper.getSysUserList(filter, orderBy); - } - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * 该查询会涉及到一对一从表的关联过滤,或一对多从表的嵌套关联过滤,因此性能不如单表过滤。 - * 如果仅仅需要获取主表数据,请移步(getSysUserList),以便获取更好的查询性能。 - * - * @param filter 主表过滤对象。 - * @param orderBy 排序参数。 - * @return 查询结果集。 - */ - @Override - public List getSysUserListWithRelation(SysUser filter, String orderBy) { - List resultList = sysUserMapper.getSysUserList(filter, orderBy); - // 在缺省生成的代码中,如果查询结果resultList不是Page对象,说明没有分页,那么就很可能是数据导出接口调用了当前方法。 - // 为了避免一次性的大量数据关联,规避因此而造成的系统运行性能冲击,这里手动进行了分批次读取,开发者可按需修改该值。 - int batchSize = resultList instanceof Page ? 0 : 1000; - this.buildRelationForDataList(resultList, MyRelationParam.normal(), batchSize); - return resultList; - } - - /** - * 获取指定角色的用户列表。 - * - * @param roleId 角色主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - @Override - public List getSysUserListByRoleId(Long roleId, SysUser filter, String orderBy) { - return sysUserMapper.getSysUserListByRoleId(roleId, filter, orderBy); - } - - /** - * 获取不属于指定角色的用户列表。 - * - * @param roleId 角色主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - @Override - public List getNotInSysUserListByRoleId(Long roleId, SysUser filter, String orderBy) { - return sysUserMapper.getNotInSysUserListByRoleId(roleId, filter, orderBy); - } - - /** - * 获取指定数据权限的用户列表。 - * - * @param dataPermId 数据权限主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - @Override - public List getSysUserListByDataPermId(Long dataPermId, SysUser filter, String orderBy) { - return sysUserMapper.getSysUserListByDataPermId(dataPermId, filter, orderBy); - } - - /** - * 获取不属于指定数据权限的用户列表。 - * - * @param dataPermId 数据权限主键Id。 - * @param filter 用户过滤对象。 - * @param orderBy 排序参数。 - * @return 用户列表。 - */ - @Override - public List getNotInSysUserListByDataPermId(Long dataPermId, SysUser filter, String orderBy) { - return sysUserMapper.getNotInSysUserListByDataPermId(dataPermId, filter, orderBy); - } - - /** - * 查询用户的权限资源地址列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param url url过滤条件。 - * @return 包含从用户到权限资源的完整权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysPermListWithDetail(Long userId, String url) { - return sysUserMapper.getSysPermListWithDetail(userId, url); - } - - /** - * 查询用户的权限字列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param permCode 权限字名称过滤条件。 - * @return 包含从用户到权限字的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysPermCodeListWithDetail(Long userId, String permCode) { - return sysUserMapper.getSysPermCodeListWithDetail(userId, permCode); - } - - /** - * 查询用户的菜单列表。同时返回详细的分配路径。 - * - * @param userId 用户Id。 - * @param menuName 菜单名称过滤条件。 - * @return 包含从用户到菜单的权限分配路径信息的查询结果列表。 - */ - @Override - public List> getSysMenuListWithDetail(Long userId, String menuName) { - return sysUserMapper.getSysMenuListWithDetail(userId, menuName); - } - - /** - * 验证用户对象关联的数据是否都合法。 - * - * @param sysUser 当前操作的对象。 - * @param originalSysUser 原有对象。 - * @param roleIds 逗号分隔的角色Id列表字符串。 - * @param dataPermIds 逗号分隔的数据权限Id列表字符串。 - * @return 验证结果。 - */ - @Override - public CallResult verifyRelatedData( - SysUser sysUser, SysUser originalSysUser, String roleIds, String dataPermIds) { - JSONObject jsonObject = new JSONObject(); - if (StringUtils.isBlank(roleIds)) { - return CallResult.error("数据验证失败,用户的角色数据不能为空!"); - } - Set roleIdSet = Arrays.stream( - roleIds.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysRoleService.existAllPrimaryKeys(roleIdSet)) { - return CallResult.error("数据验证失败,存在不合法的用户角色,请刷新后重试!"); - } - jsonObject.put("roleIdSet", roleIdSet); - if (StringUtils.isBlank(dataPermIds)) { - return CallResult.error("数据验证失败,用户的数据权限不能为空!"); - } - Set dataPermIdSet = Arrays.stream( - dataPermIds.split(",")).map(Long::valueOf).collect(Collectors.toSet()); - if (!sysDataPermService.existAllPrimaryKeys(dataPermIdSet)) { - return CallResult.error("数据验证失败,存在不合法的数据权限,请刷新后重试!"); - } - jsonObject.put("dataPermIdSet", dataPermIdSet); - //这里是基于字典的验证。 - if (this.needToVerify(sysUser, originalSysUser, SysUser::getDeptId) - && !sysDeptService.existId(sysUser.getDeptId())) { - return CallResult.error("数据验证失败,关联的用户部门Id并不存在,请刷新后重试!"); - } - return CallResult.ok(jsonObject); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermDeptVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermDeptVo.java deleted file mode 100644 index 7e8f90c4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermDeptVo.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 数据权限与部门关联VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("数据权限与部门关联VO") -@Data -public class SysDataPermDeptVo { - - /** - * 数据权限Id。 - */ - @ApiModelProperty(value = "数据权限Id") - private Long dataPermId; - - /** - * 关联部门Id。 - */ - @ApiModelProperty(value = "关联部门Id") - private Long deptId; -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermVo.java deleted file mode 100644 index fe2d9b67..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDataPermVo.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.*; - -/** - * 数据权限VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("数据权限VO") -@Data -public class SysDataPermVo { - - /** - * 数据权限Id。 - */ - @ApiModelProperty(value = "数据权限Id") - private Long dataPermId; - - /** - * 显示名称。 - */ - @ApiModelProperty(value = "显示名称") - private String dataPermName; - - /** - * 数据权限规则类型(0: 全部可见 1: 只看自己 2: 只看本部门 3: 本部门及子部门 4: 多部门及子部门 5: 自定义部门列表)。 - */ - @ApiModelProperty(value = "数据权限规则类型") - private Integer ruleType; - - /** - * 部门Id列表(逗号分隔)。 - */ - @ApiModelProperty(value = "部门Id列表") - private String deptIdListString; - - /** - * 创建者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> dataPermDeptList; -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDeptVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDeptVo.java deleted file mode 100644 index 54247f58..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysDeptVo.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * SysDeptVO视图对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("SysDeptVO视图对象") -@Data -public class SysDeptVo { - - /** - * 部门Id。 - */ - @ApiModelProperty(value = "部门Id") - private Long deptId; - - /** - * 部门名称。 - */ - @ApiModelProperty(value = "部门名称") - private String deptName; - - /** - * 显示顺序。 - */ - @ApiModelProperty(value = "显示顺序") - private Integer showOrder; - - /** - * 父部门Id。 - */ - @ApiModelProperty(value = "父部门Id") - private Long parentId; - - /** - * 创建者Id。 - */ - @ApiModelProperty(value = "创建者Id") - private Long createUserId; - - /** - * 更新者Id。 - */ - @ApiModelProperty(value = "更新者Id") - private Long updateUserId; - - /** - * 创建时间。 - */ - @ApiModelProperty(value = "创建时间") - private Date createTime; - - /** - * 更新时间。 - */ - @ApiModelProperty(value = "更新时间") - private Date updateTime; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysMenuVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysMenuVo.java deleted file mode 100644 index 8f5cb1aa..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysMenuVo.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.*; - -/** - * 菜单VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysOperationLogVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysOperationLogVo.java deleted file mode 100644 index fcd32483..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysOperationLogVo.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; - -/** - * 操作日志记录表 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("操作日志VO") -@Data -public class SysOperationLogVo { - - /** - * 操作日志主键Id。 - */ - @ApiModelProperty(value = "操作日志主键Id") - private Long logId; - - /** - * 日志描述。 - */ - @ApiModelProperty(value = "日志描述") - private String description; - - /** - * 操作类型。 - * 常量值定义可参考SysOperationLogType对象。 - */ - @ApiModelProperty(value = "操作类型") - private Integer operationType; - - /** - * 接口所在服务名称。 - * 通常为spring.application.name配置项的值。 - */ - @ApiModelProperty(value = "接口所在服务名称") - private String serviceName; - - /** - * 调用的controller全类名。 - * 之所以为独立字段,是为了便于查询和统计接口的调用频度。 - */ - @ApiModelProperty(value = "调用的controller全类名") - private String apiClass; - - /** - * 调用的controller中的方法。 - * 格式为:接口类名 + "." + 方法名。 - */ - @ApiModelProperty(value = "调用的controller中的方法") - private String apiMethod; - - /** - * 用户会话sessionId。 - * 主要是为了便于统计,以及跟踪查询定位问题。 - */ - @ApiModelProperty(value = "用户会话sessionId") - private String sessionId; - - /** - * 每次请求的Id。 - * 对于微服务之间的调用,在同一个请求的调用链中,该值是相同的。 - */ - @ApiModelProperty(value = "每次请求的Id") - private String traceId; - - /** - * 调用时长。 - */ - @ApiModelProperty(value = "调用时长") - private Long elapse; - - /** - * HTTP 请求方法,如GET。 - */ - @ApiModelProperty(value = "HTTP 请求方法") - private String requestMethod; - - /** - * HTTP 请求地址。 - */ - @ApiModelProperty(value = "HTTP 请求地址") - private String requestUrl; - - /** - * controller接口参数。 - */ - @ApiModelProperty(value = "controller接口参数") - private String requestArguments; - - /** - * controller应答结果。 - */ - @ApiModelProperty(value = "controller应答结果") - private String responseResult; - - /** - * 请求IP。 - */ - @ApiModelProperty(value = "请求IP") - private String requestIp; - - /** - * 应答状态。 - */ - @ApiModelProperty(value = "应答状态") - private Boolean success; - - /** - * 错误信息。 - */ - @ApiModelProperty(value = "错误信息") - private String errorMsg; - - /** - * 租户Id。 - * 仅用于多租户系统,是便于进行对租户的操作查询和统计分析。 - */ - @ApiModelProperty(value = "租户Id") - private Long tenantId; - - /** - * 操作员Id。 - */ - @ApiModelProperty(value = "操作员Id") - private Long operatorId; - - /** - * 操作员名称。 - */ - @ApiModelProperty(value = "操作员名称") - private String operatorName; - - /** - * 操作时间。 - */ - @ApiModelProperty(value = "操作时间") - private Date operationTime; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermCodeVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermCodeVo.java deleted file mode 100644 index 5b54cd74..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermCodeVo.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.*; - -/** - * 权限字VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermModuleVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermModuleVo.java deleted file mode 100644 index 545b7396..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermModuleVo.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.*; - -/** - * 权限资源模块VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermVo.java deleted file mode 100644 index 9a71557b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysPermVo.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.*; - -/** - * 权限资源VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysRoleVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysRoleVo.java deleted file mode 100644 index 6155534e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysRoleVo.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.*; - -/** - * 角色VO。 - * - * @author Jerry - * @date 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysUserVo.java b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysUserVo.java deleted file mode 100644 index bfc02745..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/java/com/orangeforms/webadmin/upms/vo/SysUserVo.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.orangeforms.webadmin.upms.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.util.Date; -import java.util.Map; -import java.util.List; - -/** - * SysUserVO视图对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ApiModel("SysUserVO视图对象") -@Data -public class SysUserVo { - - /** - * 用户Id。 - */ - @ApiModelProperty(value = "用户Id") - private Long userId; - - /** - * 登录用户名。 - */ - @ApiModelProperty(value = "登录用户名") - private String loginName; - - /** - * 用户显示名称。 - */ - @ApiModelProperty(value = "用户显示名称") - private String showName; - - /** - * 用户部门Id。 - */ - @ApiModelProperty(value = "用户部门Id") - private Long deptId; - - /** - * 用户类型(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; - - /** - * 多对多用户数据权限数据集合。 - */ - @ApiModelProperty(value = "多对多用户数据权限数据集合") - private List> sysDataPermUserList; - - /** - * deptId 字典关联数据。 - */ - @ApiModelProperty(value = "deptId 字典关联数据") - private Map deptIdDictMap; - - /** - * userType 常量字典关联数据。 - */ - @ApiModelProperty(value = "userType 常量字典关联数据") - private Map userTypeDictMap; - - /** - * userStatus 常量字典关联数据。 - */ - @ApiModelProperty(value = "userStatus 常量字典关联数据") - private Map userStatusDictMap; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaCacheService b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaCacheService deleted file mode 100644 index 08124325..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/META-INF/services/com.anji.captcha.service.CaptchaCacheService +++ /dev/null @@ -1 +0,0 @@ -com.orangeforms.webadmin.app.util.CaptchaCacheServiceRedisImpl \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application-dev.yml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application-dev.yml deleted file mode 100644 index 1f8caed0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application-dev.yml +++ /dev/null @@ -1,96 +0,0 @@ -spring: - # aj-captcha 对redis缓存的依赖。 - redis: - database: 2 - host: localhost - port: 6379 - password: '' - timeout: 60000 - datasource: - type: com.alibaba.druid.pool.DruidDataSource - druid: - url: jdbc:postgresql://localhost:5432/zzdemo-single?currentSchema=public - username: postgres - password: 123456 - driver-class-name: org.postgresql.Driver - name: application-webadmin - initialSize: 10 - minIdle: 10 - maxActive: 50 - maxWait: 60000 - timeBetweenEvictionRunsMillis: 60000 - minEvictableIdleTimeMillis: 300000 - poolPreparedStatements: true - maxPoolPreparedStatementPerConnectionSize: 20 - maxOpenPreparedStatements: 20 - validationQuery: SELECT 'x' - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 - filters: stat,wall - useGlobalDataSourceStat: true - web-stat-filter: - enabled: true - url-pattern: /* - exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*,/actuator/*" - stat-view-servlet: - enabled: true - urlPattern: /druid/* - resetEnable: true - -application: - # Jwt令牌加密的签名值。该值的长度要超过10个字符(过短会报错)。 - tokenSigningKey: DemoSinglePg-signing-key - # Jwt令牌在Http Header中的键名称。 - tokenHeaderKey: Authorization - # Jwt令牌刷新后在Http Header中的键名称。 - refreshedTokenHeaderKey: RefreshedToken - # Jwt令牌过期时间(毫秒)。 - expiration: 72000000 - # 初始化密码。 - defaultUserPassword: 123456 - # 缺省的文件上传根目录。 - uploadFileBaseDir: ./zz-resource/upload-files/app - # 跨域的IP(http://192.168.10.10:8086)白名单列表,多个IP之间逗号分隔(* 表示全部信任,空白表示禁用跨域信任)。 - credentialIpList: "*" - # Session的用户和数据权限在Redis中的过期时间(秒)。 - sessionExpiredSeconds: 86400 - -sequence: - # Snowflake 分布式Id生成算法所需的WorkNode参数值。 - snowflakeWorkNode: 1 - -# 存储session数据的Redis,所有服务均需要,因此放到公共配置中。 -# 根据实际情况,该Redis也可以用于存储其他数据。 -redis: - # redisson的配置。每个服务可以自己的配置文件中覆盖此选项。 - redisson: - # 如果该值为false,系统将不会创建RedissionClient的bean。 - enabled: true - # mode的可用值为,single/cluster/sentinel/master-slave - mode: single - # single: 单机模式 - # address: redis://localhost:6379 - # cluster: 集群模式 - # 每个节点逗号分隔,同时每个节点前必须以redis://开头。 - # address: redis://localhost:6379,redis://localhost:6378,... - # sentinel: - # 每个节点逗号分隔,同时每个节点前必须以redis://开头。 - # address: redis://localhost:6379,redis://localhost:6378,... - # master-slave: - # 每个节点逗号分隔,第一个为主节点,其余为从节点。同时每个节点前必须以redis://开头。 - # address: redis://localhost:6379,redis://localhost:6378,... - address: redis://localhost:6379 - # 链接超时,单位毫秒。 - timeout: 6000 - # 单位毫秒。分布式锁的超时检测时长。 - # 如果一次锁内操作超该毫秒数,或在释放锁之前异常退出,Redis会在该时长之后主动删除该锁使用的key。 - lockWatchdogTimeout: 60000 - # redis 密码,空可以不填。 - password: - pool: - # 连接池数量。 - poolSize: 20 - # 连接池中最小空闲数量。 - minIdle: 5 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application.yml b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application.yml deleted file mode 100644 index 47ff5f70..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/application.yml +++ /dev/null @@ -1,143 +0,0 @@ -logging: - level: - # 这里设置的日志级别优先于log4j2.xml文件Loggers中的日志级别。 - com.orangeforms: info - -server: - port: 8082 - tomcat: - uri-encoding: UTF-8 - threads: - max: 100 - min-spare: 10 - servlet: - encoding: - force: true - charset: UTF-8 - enabled: true - -# spring相关配置 -spring: - application: - name: application-webadmin - profiles: - active: dev - servlet: - multipart: - max-file-size: 50MB - max-request-size: 50MB - mvc: - converters: - preferred-json-mapper: fastjson - freemarker: - template-loader-path: classpath:/template/ - cache: false - charset: UTF-8 - check-template-location: true - content-type: text/html - expose-request-attributes: false - expose-session-attributes: false - request-context-attribute: request - suffix: .ftl - -mybatis-plus: - mapper-locations: classpath:com/orangeforms/webadmin/*/dao/mapper/*Mapper.xml,com/orangeforms/common/log/dao/mapper/*Mapper.xml - type-aliases-package: com.orangeforms.webadmin.*.model,com.orangeforms.common.log.model - global-config: - db-config: - logic-delete-value: -1 - logic-not-delete-value: 1 - -# 自动分页的配置 -pagehelper: - helperDialect: postgresql - reasonable: true - supportMethodsArguments: false - params: count=countSql - -common-core: - # 可选值为 mysql / postgresql - databaseType: postgresql - -swagger: - # 当enabled为false的时候,则可禁用swagger。 - enabled: true - # 工程的基础包名。 - basePackage: com.orangeforms - # 工程服务的基础包名。 - serviceBasePackage: com.orangeforms.webadmin - title: 橙单单体服务工程 - description: 橙单单体服务工程详情 - version: 1.0 - -datafilter: - tenant: - # 对于单体服务,该值始终为false。 - enabled: false - dataperm: - enabled: true - # 在拼接数据权限过滤的SQL时,我们会用到sys_dept_relation表,该表的前缀由此配置项指定。 - # 如果没有前缀,请使用 "" 。 - deptRelationTablePrefix: zz_ - -# 暴露监控端点 -management: - endpoints: - web: - exposure: - include: '*' - jmx: - exposure: - include: '*' - endpoint: - # 与中间件相关的健康详情也会被展示 - health: - show-details: always - configprops: - # 在/actuator/configprops中,所有包含password的配置,将用 * 隐藏。 - # 如果不想隐藏任何配置项的值,可以直接使用如下被注释的空值。 - # keys-to-sanitize: - keys-to-sanitize: password - server: - base-path: "/" - -common-log: - # 操作日志配置,对应配置文件common-log/OperationLogProperties.java - operation-log: - enabled: true - -aj: - captcha: - # 缓存local/redis.. - cache-type: redis - # 验证码类型default两种都实例化。 - type: default - # 右下角水印文字(我的水印) - water-mark: 我的水印 - #点选字体样式 默认Font.BOLD - font-style: 1 - #点选字体字体大小 - font-size: 25 - # 支持项目路径,以classpath:开头,取resource目录下路径,例:classpath:images/jigsaw - jigsaw: classpath:images/jigsaw - # 支持项目路径,以classpath:开头,取resource目录下路径,例:classpath:images/pic-click - pic-click: classpath:images/pic-click - history-data-clear-enable: false - # 接口请求次数一分钟限制是否开启 true|false - req-frequency-limit-enable: false - # 验证失败5次,get接口锁定 - req-get-lock-limit: 5 - # 验证失败后,锁定时间间隔,s - req-get-lock-seconds: 360 - # get接口一分钟内请求数限制 - req-get-minute-limit: 30 - # check接口一分钟内请求数限制 - req-check-minute-limit: 30 - # verify接口一分钟内请求数限制 - req-verify-minute-limit: 60 - # 校验滑动拼图允许误差偏移量(默认5像素) - slip-offset: 5 - # aes加密坐标开启或者禁用(true|false) - aes-status: true - # 滑动干扰项(0/1/2) - interference-options: 2 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg1.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg1.png deleted file mode 100644 index 028073aed11bdb66cb43d1274d892414fae9e940..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105636 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 `0QS?7Hdx@KK0Zseo_RHO4pE3WAEV#_et6$v;2O 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�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 Avj6}9 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg11.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg11.png deleted file mode 100644 index 914908e8979d4a1604c8f58a5c637108ef11b870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83599 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 VX(}qe;WdE#(bqB2uGMmg`5!!iHWB~; diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg12.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg12.png deleted file mode 100644 index f0f3ce581b624e3821b2e5249a3dc5bd8e9690e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78934 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 pywxcQ(c*w`1^AS&VQ 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%0D^SCr^jR$W(Q#m1$;Fp*V9aQbndq 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

7+izWGuOW2s@iMWXxWm0O7z|{X%H2S*F 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

J$K4TeBX#g{LW#wn!eT%MiXvaV*$3;r$ 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 yLgK!MESb4PIC&-L1%kBDJ18AX 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 Z{|9_$4_=z|LVN%K002ovPDHLkV1jt0mgWEe diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg18.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg18.png deleted file mode 100644 index a63f0ac7aac2ecdbfd16a3102289b63521d7182b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73061 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg19.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg19.png deleted file mode 100644 index fe9c4cc84d05df11ebc1bfaa5568108d542ebf18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85663 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%0D?e$zf6N*VqJ%2tE~(>wb`<% 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg20.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg20.png deleted file mode 100644 index 7db9563ca82db9c0bbb8141c0b7a1735f6b5231a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77849 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 >qt z03fE^?E$8vAOMkbSTT4-KruAvy6yJzOvi!imaE#L#9?GdkP7UIwu|BB#;$g>+^D&5 zJq*{|Sv7axeb2x3sG2QIB5240$vWD6X3|#`ngv84QqytlwsLkkKK;^2SN$gbz4v_E z0x$?VaA4qSX}Bf75Q0b`w#9N0Rk-)p@Tc2%X?_37y78?$ z58gYTefaUOU;c0ZHe9WpgZ7WUzx=J=)}ZaSvpBkn{OriDmVkWm%THeXPk;65KYg;Z zvAKJ%0b=iD*ml>i+avewM{f)<1XVMrm>CgFok2uWRI{R9j>HLk9V|hEvdy+s#EW|` z=OlB6X}KQcs-Dv*NSJqJissGUYCt6!ok-emJba?L2O#E$YXsG_G@cMR@AEwfp+rsE zBMQin-&Db?NQo|*n4gk2W|W(Tzc6z}6MVS*tt0TVEx5R#%4L%;QBiobibo4bk>Z3(_y7YHvykJI0fl-M#qv(HwyH^k%#Iqjy!t@cfJk;}{4) z%%Ub0%NT}HO}wwGhL9P-C$+4w-N+DqJ8SOWt>$w8m2NNt9Rs=6H%lAE`Vj$u0dICp zZhr5yee^B=&i8!Ns`Q3v`OHQ{0yINL6><(t*i{;VeGCq4h{JB&@w0n(AKE)DMf6 z5AGh1VfKc*<5%a>`DTgaeKU8pm(9)g7r*%Or%#^$?Z@KX@%P?)_~6Yr%Bx@fyuW@O zx-ENn|2N)*w6r}&&+M2P)POW90||TuBLbXass4i)g@qyb+eA{;Hv2#mQ}a(#kU16QbCMPzp! zHXEwj*@HK$*&>DksZtaG)6gRtGD#d#n?5om#+#h?wB)yZyc))jKZmH@?x#ne{XW0{ ztxDLD<6tC02(GTb6aO%7BgFQkb{%creD-h7KX|3zY5Bdk-R#fV&zjD>58Ia;^B1<5 zefH}wcOSm$K7Kjg+$?wPv#0-${kU=S87gvByI`BoUY}iF4>&ve?&Fj9zg4yKo7d-G z{M`q`<_5qB+~aqT0edNg*4oBjtvg6-0*DyQIX0uHN*Ynkfe{iK<=ys4UV9>M0SJhI zu&h5b$kOKpf?27%?17!LDTj=b2A~r^i-c2jDL{Ej=1PPv(5{kfpjzAbmh)GRT-T5$p-VUmTJvS@^fComMArZ4n3>rXXz?cV-C{rdXmimel z*fBLgL+13y4Zhrn``{H%n z?JSoDQjAZnlhMYlj@a+E>-7~gFOTo~#UfOdu>lf-GhskSSTTEYGepnT4AJ81sEQ*K zlB@Fe54BvxMpYTn%y}{sKtxbrHWfs2-bXY1?%VCMcH_E_b`0i5b#=vt5XLy{h@on# z#bSZzoU4fJ$#xhn@#2^L^I!HWxP1GMUv_`~$H%58f7R&+XP-U2=!0IBS5nPfd-A7&0BXZkucfa!|g^XLKArS>A(~Ar&GJ z0*kVUi(o>brr-=!XX>iiqJ7ky9@if~zx?oN|N5MC*CIBaIY}SNqBfi3)0j&<(^uKHxZ*5OM`*$R5m`LnKxiO@die9Zg4#o!JN`dEG}If;S>G zB$WW5NLDRpI)6l4Swse3>w2d=g7d^ozVf8bIid=XZEZ9%BkKr}!F8Taw=yqNG`0+cx_Z!?a!_B5%%!YngTJOC#rRC$h&GB;i(fLQu zo?LytsTRwYs($@?cX?%M_uoHx@9w>Bw;ji*iF{|~w5~x-Mbf~CH$Xr$)O55UHv=WV zT<~q?NhSlbyjEo&1rZWRqQo^h8wHRw7Gdbzwwi4O@i3H?C~@luTG71JqH${gWYazf zC|l1UefbiVG6+r4cwZ>FZJ%Ga%v*0LvDfM2?bE!}g19d>6(o@_)?~Pc&sBDL9t7e2 zzu|uD1pv)J2qGDyDiN82A(n>SeH1kSfJ0zGg-n?2lLX%P8pL}N9USlu=2{H~rVT>YXz@DqdH&qpg6};4b=wg2}N(|0dF!nJr!Qh&PWhC~1 zsV5GR$RwJG>IgcD>`VvKhy+$UKuvo|9M&eH;{a9VYLAFGV(rO!G*P*{iVVJ;spq<> zo2ISn8mLk7kr6@+-@4a4`v==Ue9%6>a0a^6_4@f@PF4Nr#qXbn`!A}^TCT?S{?YQi zH=5NQSI>t{XA-JKLv^JR$ZY*LfBorS{7txfm+zlmJvqDj?3t-&*Dl`l@2u|ZcDpf3 z5}0R1k;uph7EKM!F*387s+wfV1WW}~(GZC^b;eHJq6n6o&Wn9c=+3|(S7efbI5W{m zG%cl$Y2}{-%E{q$+>&dyeMmYmsod#WcBG{4RbT{%>3izMO`C~~_DvS$@wOM3|3>4y zWu>=RqMXr98x;;qCIx96SeqT#=oG_&@*rzzFV4w!P8KKn)nTem0xL3U8tD;C_KA}V zgrX)j-GaRR1%VHqkrA2DF;~GCveQ9gP7Rw1L|E4qGnt{p7)2p! zR5g>FvZgJt1=LyA0kHk5`00;938k1)l@yg-o_{X86)cZv2{D23WTMktI8M)JB^^Bo ze))Tjk*PAokV7a#ZoiSjq+0HI*muKcW~lTD?Gs5v*i*PL$*m-4OQnSh_U*5GPm-Z7 z?upsS$W8432@&k^&M;z!)s1UfjGwhrIV~T`%U<@xm_}@(zJX2r+4=mfMp`Ev(9BpfoZD zRR(insAP^KlaNJ~QQ|nn7?qLlF39flyhdb>qu+I?MubtE#yEs=X-Wigu_e^y$;0Ef zf9GU4K3zlOR_)QTXFni~ofkr#ng4tM^>n)_aN0TIJ) zC!d{f;upK48J#Sa^A)n2wacolkr{o%M4rWakM6g|@4Z~E-nw~l)or^l#@+Si@+a3} zxD2BcoK?*ku^-x*R81d7eSM}7q8K_K*PV78UbA7}-aYc~KHwiL-hTHjBBNQYN>`tp zzx?>=_WVWYUZWf9cixI&lpusg!~m)QYz72OuAa??lSb>BBWMV2hbV%CE;oxMossM~ z(*oQ)>Rr^0N=}Da$uqA%C*W=XKx(Bvx>P7+DvFj@wFlaHQA;wftG&pYMdNyr8c z$q_oF(nSQ806;#&x3(uu)s!^O^Pe-$B8s`UO+wUz5NePtraaC7GK-2|_ci5B^R%^b z`n6JYnVy;uky8_%acQ+DMBUR%x8HAZUS*COGV4@Sk(l!~mx=c>OSdj-FC|`#_{H6u}uNSltA?e==T8FnEA1X9Gf+3Xl!vH!c}hbId@k@{Z4$EbI<*Ui5@ z_gcZD_rv2Kjo@&0W8E*huZ~HSaCv3qY`&dv?b!?|rLPXR6T722Z_hPu7vb#c(Ox zi!N+p3?N}v-T#e8k5))FlF}=S?_W;@kl{F@O#s0!Q&q2_cPKr9+yVRwPF!EO5>e zew$(l7RIOym837Hh@9D_G}a^mSHXt9AO>Wm+ zrWZy8w4Cv#Rw2UuGsEFaWLZK~%Y1lYaf!KnQ5j&$TO=S2OGsw(4FQ?Cs@<~j#|^J) zt~_JH*i^3V^vdZC8(2CMQCVU=NYxWK9xD<80SOZOF?OR2QTm`ENQfe$W0WCkjKJuc z#@97DM+n@H)n+^1bha5WL=#Cc59+EvU7oG{_AGvKaS?XiFph*x>_+?OBX@H_&wtES zHD`Yu;51yH&U6m${`Ia|e{Lpzac^_){>=}6>tlcK*VmV?EDR;!b0by`>cT!t^sFIDM`{Brr`$)oliXvgE#@bJ{P z54tTgncJ;z{`tQkIP=R{yokHA&U4)lak%M+ZWA>s(K?J`J%JM8;{IxNbTozt0!b>* zG!g)sB4OQD@y?v)wVT!G8H0i$2P0Kvk|3fnH=HN9iUy#jMw*heGQhUSiI~R507`37 z_S)z$u@sv25SogZs0A@6W{g^h87jAbf^fH53)0yoBt-@g2b3vX#6n_Zv($Z{*)z8X z;qy@Zvlmn^3LCte|TT_fn%^Nr+p@6x&CyV{6?&CVE~X7YR`906aQ!`ZWsk4~$5>u-JQJ!tB7yXj5zn&xMJ z`?F}CH7aQU0u`S&RivcDiwwit?Z_2yc{ifQFBvs z?THA`On@2yWR_?lz!*US#(V}asu>Vy@}?+=rDGwpF9?800J*8u5Riz`NL|Xi6pb`V zE~nCqs3?je@kFlRt%G08)TVz%phCI;139#$sNk|H92k^2oQbi)y{#(b8o!uH;dl?t z*rqpeXrKj$;;r&&iPsrEARh2X6UU30X+k3AA}E$&$Zg~bpa5JxeHs4L0x%#$^Xby0 zW=kzpkpcjfIX5IGCUT6tmjErG8Vs_GD3}5wF#4vdW=*x6Rr8kXiqI2q-u<#K2Tvc{ z%nVc%qxvznyU=dY3ym`l6^vv-bcmAFy<v+C9ntkW{KfG}BPcPSRT^*ghI=gvsHO4NEqf)GZr?Ue9Naz|5?F?ofD^HFcvJnF) z)@DRFGYbJjz#&o>Fa(fjB6(MLs)m^f7$%js(oUzA6`3K6C^J`{&?{jgDl#NCRZYB6 z6cr=2w2Tlb^E*>~m{QRxiXs9bAptTYF&P_h83(0<{+=>ob^x0v&|B>DD-sZ2|H5LH z3FulOwC&){eI)?GSB$hg0~43bu;ilCvzOWwqQ@+NnkVB@XOV$n`qvWrleG@9 z+s55REj_6i7;kSFupx6w&O!rJBRkxk5I>6T4>p^RZTN`jd0_Pq9#qTuI9@0agy@u|K_{jyLt51_Gg#7 zUw$;czC8c(%U7>ITK(0NrfurGcia&l&!Zu@RouDxT0kFo!DpL|b)SXJdN*u$W9)1Q z>H<5DS-LW{1tEKfO(k>hYtPORGjJ+k6V(oD1OyBo`@n8Y3*__M{bHVYgq!tPHs1po8fp^2;S1HZFc3`I)G7}68G_8R%ky5&{LO3b{Dp=at1&E*~WACox>)!WUj-w%RCi4Le$&}3zB7vcq zQ}E!HcKqh(e#;M^5@i! z@VtMcI(hgeoG#w`;oEQBUA@{4!_U94zj$?a=RefHar)i&zqkJWA6##Oy!v8x^`(FP zN}dnlRe$wac*diGjRrTU8&$0?pxTb6{U{ou8Tf`>g^U#ga4KLW_P{x=Dr+mMJ$a9g zsPwy#BO(uMpopvl48|zLTB2fZMVR*APLvGhLL37jx{AnGzH-%K)+}3pRM)G@5mPed z+#wW2qDT~uq9Tbe1Wi4oi9N#PO|77+WId3Z2at%=F+_&64ZcLr!;p4}JNIc@u921y zYQ-!I7RU+e9@$b7)G3CS`I)bWP&*8(xqYKVNuHRSJy%qWCjTX41vOB!D3C=-L{c-> z{xTGkzSS#LW>rhu6FNrbG%2=+;i(d&kk(b8WAffLwVyYB*0{DI$A}1tJtoWCTe1K2 zU$Klke^X0LY8#w|HOv8dqK3FOMdHeoGLJ~!+&wxynH_((ZlB@y z!}!_f>sRaH>81fHy*?)sOn&ghe8D?fYp=r`Vf7al!WpMAM|{?xs|mnWw; z7cFg>Drb+D!@BGK>es_xd|G zdh|6l>?)rba!y^+fJ8u!v2xZ{SXWd#a-2r-Q_l=JBIbN+5X~X7V&y3&50^s?sS%~R zI$+w`p6)+`V@B_3R#mgQo;UTp_RG3D@;rAA52Bprg}G_sDQa}YY>N5G3_%GGkm~U=MK*LTF)n5i~{7LK5NRnzGqhwhQ>i5NZdG zBDMEr7Pr`EvVl^axz(^`Nn8Rjibb(8Y6u!7d6dKA>+L8C`Tbg&IW4somxK0!uR=>X zr~#-U5qolt_p{c|8dp`!1VE^TtG8R*&@JH~P-9UawGGmY#6V-ieapRv0jw7ZF-C#7 zZzGcs<2a_es7VAsa!eI7IY3CwOj&+S^K8{2SV-@-sGgz3=+@zUR}VWjAw&lB0BnhN z=9plg{Y|{S8J@SFd;XB6QLSTeXamBI zs|{17xFsFh|10K&A~ zR~51$9WX|iT8T=vkTB1LPX}qQI=jycC)%?}gerU!ON9HsLkXmadxH1STTH)pSS2cF z8TP}aM8!S}bF*i0_qphF7{Q`i6dj|EB^FuMC7&u!w`kx!#>nNN)H+6~Eh+V!OozR= zD8hz%&t)#o40H}NZ7gR}%vVH0-00B$QeZyS^z3HG5Vhk~Fpo&q0 z#BnT(j|YiS0hkzF;wKYlHMvlMQv1!g+R|F2;&RO-h;?$+TYuwY0JGFm<^dQX2|l6$ z5qSg$4>+Q3&}1JAtH+VAu=QLFXb`-rv;aomALWdP4)7zfZ`5&*D9_OABm2plIh zNIy55p3za>=uk{9#|i}#gQyr4RY5he5;>7P;5KuK1Rws4>Tc(vXj8)fR)#eYPRys$T%Q@vCQzBWyH|(?DVtz@?z%e-{pTk=A zHq)O{5-~MM=Q~76Q7FsT-|`B3-?JYDDw1OP^*C2w844&au?T>Wh}qTNw{wBD>vIqaxC5**=~%F-Bx;@11(*pRX_1U+yl} z!Zf-$_$a<5Y*4_h2i?R`qXq>r229!&2nI=~3qAQ7ohR?|oCm>vcr%?eB1C4YJk}M| zo+?K!1U zu-Jo+QDStU3Ys-LOb}4WB}W^ziYknhxx+$(!nAa(Xv3BlO)cmdpier02f?t=rI6^X zDgNz+s&5rq_d#-+zbhYe8tU0wIFv?+(xPz?()Q1oJ;lW0I!4D?jC1;w#Wg~K^=bWy z2GJlIQx=-Lqzw{tzJGoz;U;}%w5*V@7rDp%P;WN9gxwu;UHMt#o0ck1&QA@)h5pN- ztEAUzpz1}dplz^O0790EhX(t~deL5_k8undqN=7t6GMpo7`i_8osL0+LgL{$Z3;2f zy?vH+gEBRc-$b6U0w7b95a?R2Zm{oaGY8}mJVJ%&fE-W_kd)0U;yNt~AgH;d^AfhJ6LI|AO*1(X-lLL0-J*Lc?(nN1QAeLxzB0}%cd#oIKkIrQhVXDt* zYB^U_fV2#L6d0q85kdrsWzc8Z8wAB*(O}O)QRS)fY3zwnH4qzx02a(;-G-QCSHL1k z6fP_MlsWG-0aVLHxJ2oe5DHT|nwkfal>$y_WGaWI$aa82zd^q*_$!>JXRoKH`& z&uR6j<%oTlH%))f=>tMSxz3d?+0^JFja zd>Xaf{fLewio{4k$cZ`zm4tAocsj|ePxmt~AWF-^$PlM>g95;LLv^{>#jO8xUk4#6 z4}uz`CEV#JCA3b}8kkly6-0f@c=j)wb86z8<)=h6ldDO>qQGD*)EFd*ru-#IxIfL+ z!L7GDy+kQfrGG~RAYjUS5L1b5-@t^xM2?;Je%AO|!*xxbQ(|G$(@rmt>=O-0l|}0) zi_vByI3V$^uc`Canf5VuW9-K`jBy+#B*di}V;shiAnq7aAr13*a>?i^=eapz-ujpZ zc_hLRP(-93>?Uru)!0|29qMn z=?N`Bj3bW{#vma8s2yZ*?ASX`LoHi=lvQHp^2#`>25DbDLLKF}&Q4q1R6hYLYS~QDkw-f>K zz8D^3gnlqj=EyrkMDHuA!IN{QYEcuD3Sfk&PBlackwaAHlp+8i8I)-c07wJnFnt}K zQ8G*$tVuy9<@h2Fc5t)zobY6vCDa*|#1#R{0A-P6vJyfStPodwfwGjiWr&?7+H>Ai z0A&J|#Xcz)mMkw--iOdakmQ;}(tXe6VmLs3ITYqQmmh@t6OEMnlqX@%iH;%yBxc7| z<=V!zjjwB}e4Z>z&x2F>C)+2aHB(Nl6`cj0jo^jN^Vrb9&||XC&<(L0;xI}K62#IT zst{v8gmKU@nkH43G9R1KkfBZ90U@(;3Bq8iup~I8sy0U1=xz($uF}Y6Sz!a9%F74J zcXFQCqeHI1d0{sq?GUaI&N!Z}hTaf|C`K$4<2YJ3#$fKi-eE!B7S+)`u+Xps0^~U2IdLG3aKHkkSavSj$MsNiX4!8q#fY3*(;9ci+*rqQ6d_tiiChe)DTb= z%#evQ#?PacQ4~=ljxowO#vzQsf*Bw)m?0Y`>%cS#hNkQtbheQH*+NVirACi_&30#P7}iC|9b@-Z+31(VcDk7x>M_KP@WqPd(v z!3ZNLfgpNgVgm5Q4wB}On3!TjM8L#|M3ER-L`5KNYE8nBW^_=DJcxnCO3{!sFXTb_ zYN}aaQ(ae^8KudIla*!cK^CWS>c-RA+GXkR23hV3IHLYtrSB?%9 z%qJ`iIW0`C0UcO_)|%D|4mf(2in|7PWSzw>#9cq``p|W;A2g^Yr;-Ga#;75b@i?(-k&EC4VPSTbT2fu=!BkaK&}4@yB7wz~ zetLmql$7tAB`EL>QFMxX#W+*pWvZwgU!9DB zL*tnqdI(1|v&yOa4=G3gebg#->AaBEa$|qmhnOJ#ttx8qCn*L^7&kc!WFq1mmiMFt zA`^M%n#Q%QYZ`WL!kn;=V2CBe8vqiZL#WVdff|S%C{gfk@U|n{q3p)E>&I<3Zu`*p zI!045FcsApWsE98qZt(5iU-U`v&>w+O$HWKcQS6N?;4GDQcDK#8R&9D z*dTdgPoCKmyNDbOHb|EU=P2h4>vjl^q9~>jVF8G$7J|iCa`;kDQ?b)VSria_k*35@X843;~$XF?;6{eF#&UgQf`S zT#Ff@fdCqi0jXiiIVBG#m13NhL@9wX0EcJ6nOD%1)hPfWPAKoI_6d87x)nJOLP7e?6i#!mLaB(tH~iV- zJIfE;U$=degB?b4{HBK%UZ%K_Jb#Al5D^GbCt$KimVh}{<_R2CQwNaNZyD>pD}zG-Kt)P~O9YiDG6WMv15L8UiLp?~ z&6a>BMotYtMPoh(xfn=@Oe|o)iiUvBSH7+*U;Etc4(JFyQ{~ySOR}0NLqq_VX?4er zlFKqpU7n(*VvwcfG2dP^BQ?}KS#cl}QZ6LsnON6sr0zlha!Z#Rc4x|E8aI!-J<)CC@6Jsd1BBG&cR;@$e3&VUWRH{9(gB#5l3@v!>Gvk< z!>OK_C(v>q%EUiS??;i4m=fOR!@_J9!iK3NT9}+1|G@z;A~7jqbTqP!0HdV6^fH7v z3^E3Yu`HOhy~9-lf;5%1S7}PGTbSqxg_LtP`9K3CG*A%=wi{^}ya*XM1P@pvSBMp2 zL#}qdCWpidB#1rY2JF)8Ioc&@Uxk4{fk>4E&4?5<<07yvXMIWdhAML~&# z0YL$YKn2Vw@$rZX#E6bS5>bdq1IWgMFCX$dXrc80fM-GgK=>;F;P~QlTmu07r2&9- zTL9o*CIGX+%i>!%^$?ck~mLMLMt?~_GEHUV?zrl~x z@aKN}0SmxSQi#wG*NDwxXIi-}Zib`RC@~a&BL3A;V^HpzKs3a<dcG<|mm`S&UI*TZ3<39>>pQ{;5q0PliVU{h;5 zV#W(E?+_-}7zcCLn<=^@Bt`%@9lak&$;Hgn2BbB1m-KdM-n`#c&d@SJ0d zUPw`anh4O5{HGNH1CRV|-ciH_?y-ch+)BwV9kDbR!(k-}a{dV=tgU(URW+CyQ%XXs zKt{P-3Fw9eU7RhT()G~aO!@4$wpbm6&gb#j$$_7z8gJXt^xFn(H~2xKdcP~H;f6vI z^mNnViRsYNKpg(Xk87w2>`yz^!jcHWBgNbIlHjG~I7ktm8N%(Udk50IsHWx0N{|+* z&Y80QYTvw?^iaQG zlTF=BwK`)+m=^qrCt7Af8ZsZydihn+odRDBnY<@*(4%tKI)khwh#Bwl?wG|b)U>xX zd$+Fd?w&0@H&||NZw`6>{5hr|0Hcnq9?cnAUmD=@oH$!B2)lRi3fGl0Oyxo#RD4hX zMcRj=y4~Mf(Ee-W_mcV-jDq)+D0=M``OLDX1WodF_fXRLIVF8?t4bY^}_dM0tqtHHw4G^e!M zfKq0VuY7Sb@b2Q!`@GZd*nV|j_&@YvGx3~IMB8xoNOFKh6G5loS3v}omRg^3`d-nQ6!wp!G^3fJTirX z%IeiQmRF5MmKfdC`V|;`idJFoTBSh|{HNvicE#=~U&ZdqhfWoc#yAivJTTiN66yXy_ZZHdaqVbqff7ZXcTSRxECc7nLTX zp%q%JH*5JJMg7g9GTFMnp{3Sf0FcS7yWo9<2T4pH-Ir}L{SDfM>*#YPTw7wHtEQ9P zMCHi~$4wUW7s#LzB3T?>s@sUG^s@NdNSWzuY)bFLx&~n@9wj%~u9xke4;(dZyiN5p zYZ!TGg~{1+Zg>>$z-FG^m`9Bahc5v`;tSom+E4GdUre_jyfu?TJUicQOCB9>4eV5O zD>f$YDfIvY*#e`VUmWK6PF;7b3|B!*Dl?1QxEs@e)#^n_#&iS3XD9oU*YkIFSRX%{ z32WdB=mdXfBmX7-Y0M@{ipsj@WHWf^3?BO^#%87#fJ7}KT>7@Q?N}a>_4BLJMNm1x zc^0mZN4I7U`T~4|LmSsQd6(wTZ|Pd+e~Y&Z{CL&Z{%4;7+y%kHcGSA+RP(*cR0Q%K zvB?>Ccy{&;qi54#Aej%JIN#q1J4`}QgU6o6VRHHn@1l4NW25bqcoT1aY>e#HI@_Go zn3)PzhSW@XfKrknDk$iUpC&R8ATe1dowk?XwYds8Y8RNy^7#~vgeH`z;6PfwC@8K& zsE$!_17+tRA@BrE2U3fNW%ZvZM&sxbM!q%3XE@@B*4J44rxQYXqi+MQ$Bxng;AP3* ze1D&I*5K44$CNH>Uy0Xrqib))fGs+NW!9js5z}P8$rjRYfkcaGtsib%f_NTQ2ZX;j z|IpG1C5OyKXJJ$OhRIpgo^|#ib0tM!MqJ)%+C5Fhjf(EFTEaDn&S8;`nDzJGGTB~_*F0t_OqMer3T~(0-~if9lNi7KQ3Q^< zH3%B&-=Tuez;`$5#TmRIP{=KIitVlLB|DW^Dkxh2C?)660^ zyL3FBR7G0(+7t8*^+p9%<8y<#2V9pt>=Z9BJ16|6660C5PC0;GYn?Zomp z@&*N6Ql?-7TxpgLV5BI4KG_y;eral}PjC+oeXz@t8$N z>}@`OrID>T&$E?T18DC9yieE8c6}t-&UL*w`=O3eW38 z1n#>z24>LR!d&&A0<(@ zC-N^KE>aTfLFtEAhBZ)>sVEL(?O0ra7=Vu6@CBoA=0XaYoQwEjy>&h!5nWpGhUc@- zq{qYzGiO%kE63pq8YSnOYDjlvASi_Q!<<)x@ZChL4Rh%RANA++%C6&y$Dam_VIDS1 z-E#P*na1^iiPm$)6qt<*>IUCoovDILv|4tQUyxtzy$5jbnSZKlyL-=rG#mo-4V|5KLj%K(W_Ci}Pd=3hy72L^OcS~vUR4Am_*NLpU$t&;d-;Pq&4!?u;UYCV zK{jy+15qqD@LA0!X?g1Zq1UHqzE38Rv%vNUUUB1SMR!tLQi*7pLaX|Sv9-qfmy&_b1% zmr)v@)wHPOzIGi>#YJ=$Ccz3-Vt+g#ummIc;f}Y;;E`%m{x+SkCA^j$W8YNi24#Q{ zfFU%nbbgLb=GX~PpCAUKq8-Bg{ANuCd_O4P>fY*0w-ADwTA5n=vD2C2u)hVq@Erf{ zJmOe6Z9N6C15^~rx8nRLoRUJX@sJz6s5;>V>p@r4h}{jtZfTxMF&P*ag8casy+WOU zCR^OmUc4c5m-X&>ErnJEAV6Os$iV*;9fNJC8gA8u`WcWPy*TV+3;Vt1{Wwo)!qCbF zs$=O+!kcPFe)#D&MvD>{_ut-pam_Fp98MD@bPAfaX?wuC^Rj>9T|1hA`Uhm}x@CN2 znmRu}{+4S8aWNA1m+fLB<8kQmLB>&!y1fEpc9sS}6`&EBMF4RE(b9UKa)&xQ{~Z2a z-hKN+0l4hirZg#GU@|{gJnEdyrgV*^SjGZ~BF}Ur*Vg67%X+rrdpOYih64wO#XF%V zLlbvf|9mHJj6btLu_(*w9W2jmxN;i|Hv)28v$wasR{oqX4IJe>%R(zOJV1mkTgxZx zeIK6tbS~3f*n76P)_2@xd2^&+U)^n*;qw9YM?G`O{?>-~#})h=UAq{IT{%rpi8nl* zpWQaoyXD2`<{ER%q#k21q|;Dq2~)deyWfzA7=j~26t7cABm!=RYXFUI+b=t6VH*A@ zCvy<$VVdq~*DukW151%w0nx4KNWaGTHSRud_vR~bRlTcQvD{k@`edwxgx5$z&d|5v z&aKYQ>VJ$FO_;8T7PWNM+cZ4Ee3ttX%IoLoE&dNubJ90&C72aT>>q-Q6_st&b=qY{ zpO@ULN!x>(r9E4XP8QU4aGd+l;yS%G`8KX>hkCYxX#MmlWT(wVq7OVHCmdu)j_~lv z%|Z=Av>X`|7@zTBoLxNoji7atc)W*{n)2r1J8jZcTkZ$3*RaCcgI_cf+ICtFq;-2b z7p>j(oVZ7(wD${<#hwh>Xq6G^#6Y&AvK5hXAKr)~jzj?mxhM1-P#P5%`4|(5o6E}2 zIyLr>JEvl+=vs9i2SbL97ELj0R4h!$H!cm3JV7 z7K@J%CyV3H`IK5;G?y!+RoC@Q1&~eD)FLThJ62x?TN8z)m~55g7$8d>e>u^w!)<v~>HP1*t+2ycEBDr}=dQYs!>Gsa&ewh~AM7u01h3x!4MfmF&~$Vv z$jIi!K|%AIdNJ_5KR@+e*}cBrRAqJVKHSK*!>2wG%M_!OXiR>TRRa3n&yq|pbH&Wx zKP>RE*+3&nHg4_5#fJAe!fYpiYF9dCuWre1A=b6R%N3X2ydTm&A2M@1^ZnyGUGLd81m6y9efQ~neQP|!RBC!# z*Z1mV4@aqMzzw+7ZF)kmyBp+r3w+K)U$Js%*E;O?XOYi6m4R%Od+Z|&SuQGMIKa)b z_oag~>A=}W1A$G1mmNGC`Y28S7pFm1@C^ak!p{28TdW%HGjdzc3VS|dojFW<(+eu_ zvSQ1H#O#)8?ZRQFK*f`y<<6kMCTz9X%@ydNG0V%!(ltwhhF`q$@Ig^_suVii^G;@| z9TN+;s;eH8xYd$*K&u0S#dG?JkU7VVH*Fc=sGI+JU?x2pr{5ZnNwl9Gay<^&!;s+w z(3p~eY>a=S!W8sYT0~dSPa!^I07&23c6!{jJ+w8u^V=r6Sy<0 zXPn7^QoU{gq~{NhF9IM1udoAN+LCES_wWgCDqFI8$}42aOzy8~Gm$7=diJXra(Iaj zIaGfuyV?C6K~X0uXI4a<b=hlAiTVxIT1m_-O^!)(>DOE0<;FX*QSt+RAt85%Q?wd9ub9M`s{r0G zYS6KxUS5(DzI~K(TrDL#tH*b9N+Dx2M7rC2<5p5RMbq6FbHmP&-K?RGty4}xZ~V@5 zOGPhwS*hpiopk@U(9`AZ<@KK{7UC=di3=Wj;ze!4mTPNn_&kB6APO;M3T73e-cqR zF?v6HJAPX=n`TR>O{NA|#hgiOoT3i}iAIghoQDSfaLS?+fhrz6O2Ia2@~4}Wgfr?0 zM*u?@#}rRmWTt%kbPJ4d<4LmZG$ly1{GkzQ7_T5QT^A=inhfWE>GS9g7xc^GD+nq| zhei(>i~M4mCL>((4eTJ7o{H^cWaDL(C8zxd!G5Rzgq*aZ+v2znJ(0EbH%HTtSbg`rJ>!M3?j6qwG^_(9qtC=h%tHEycw4zsFKuUIC}nTY$?s?wOxo1ml8qDGmi)2ofBE z4{zu-Sz|oS+Ad~KhounTJxn_lUmT2cwV#X+3nRRm2GIQ7ESc*RiHW%67pN>PC$Iw( z+;~F5eWEn$?trJ0`@yfa2HAvB1%jMj2y_Ho#VuZdk_4b*eeBpJEbKGcWn@?IfUbLE z^?KyVVWUVOJ01O3OBWKefZ#0;8y8M~jJ#gm6Z!$Xnr&iM61BH#85V7{eEZ7E*j|?s z`Ll?-I1ofrTsg>IFQfO0GAOWQtpWlF_2wK*S^PtbF`n+xw2=Mh8Kt#^I)PfGnv`BuTbWf9Wf36`Y?s= zhC1rfr;(O2a}U->pj(vHoXGzC~YHj zmDs}sn(Xs2>Q-XWyQ*so8L3YA+{QN40NTl2;@Z&q}6<*``IIqtd zAajlMFWog?GG9r--vIb&*_TtX^K6K}`(Y=1=Vb_LF(Ty8W|pv^BT`KuiqRUKO)uj* z!axHj0D6(;iULId{vu&Q3=#|kfD8DqiX;gEuSW0-MELaYDXj?NQL*!fCnwY1pOkI| z%!N`heZl%h?y-Gwp!5zx3=jhCVkCkjqcr}rRFAa0Z)Gu-{$>7nk1fw8^uL>Bc2%3t znw9jRvomuvAV|!JS%P>0U}W56+>*zs@?N)}(tawT!m6?|6k(0eM>K!<(B9hC9#&}r zDFSu`JfD)AkqSMp%$c6vT3#$pLOk1D>~pR|K@X`$?lPujnel}2XTD0a6Qr8NlhCAHzI}S5 z#SLV!Q-W z7aJB>j|X=rox^@}uU~_L=C#hy-*qlercwX#9w`qxXfWr1R+UTgMWn15_t~HXgZO)_=xvZgbRA)5Bx8T#rm9)TJg(g= zMoX5&hdaX-z7~UCdc@!UhBC4l|GcM!3y-Q_LOVM>5ST+hL7Epfuk%sUHeCvo5P}$|zH2s#=p2n6=B zMu!IE8E@ z@b{_=G{oMS6=fv(2E-4kVK5YBph14LWfy?ZM&e}(q>oBJ3%@ZX$>)@Q64m~9dpkme z0cy*+2nsZ**WGL_oLXv!R z=OJR})F$18f3mwERZ#I6CKg;v`9SoutmsH#G>l>AjPrWlNPkCJuW_Vh5oKp)rGJ%u zqng=}!`D~@0B?Vx5WW9?t_DQ-;F;a0L%ta~ku&bx#%>6$3yA!0?5Fq&5Gg)tdB5^z z|K`fM4^l+~1upG7g)7FT>afnbc0v96SxJ$pelW{*)HvDA!Mp_2m?qwV&oV3&b&8_7Jc$DzN^&UW{A`_>ktqi0^p?EWd^3%&Sf?)gQh*(J!B@x3_6n2Urb_PCB$ zhh02AvrFWNb9{^^vT)ONWsyd5{LL(AUr*JiRlar=zQz*DS|KgwgbN^qgH$B^ovJ!3 zSlW+75YG-juN};cyZN?wNi7%ehwzpG9b{euk?#9@`}=)$7u1XS_KUzU>W;oaBclgP zlw2H$MvK57!T7|J22?0ePx;oZNcuPY7j2|z<_AWBI4x)te1#W#HA=ldN|mYPOEcpY z0WL|1Mo{)Cm~|}Z;&5vv>?km7jBQNLMc67fya1s6@*y!wRDxbrfCIuF!3Yp_`1fXl ziM~F?-{}LLWCaNN^QhB*B>3)*7wg^9&s`lU_J*-SaWT?*4u`V9dq9et1XQPEp>wq? z6W(f?U!~tE`j)MgsYnanxX&=dFe ztiSKD-DP9jVeNUof~%~rajt{AW=rDM0xr^FS==%r$f#9D57n^H#^d?GPhpLUOBG7( zF9fuXPIFuS+TPS*nS7P%Y%$%>sOp^dK}eb#)Wd>r(V(~V>&K_O+-MYjrR(9gbTTmW7<&tm}%WFusAo zeQl)i{VKQFO>&{@54Q%Q`^2}QzQYpF7R$G^Dt&v>$uTq-O)^&H8iR(Sdje7`QbK73 ztidQc1dTGWaKGj%Q6Ar@@7l>yAq`cd*Fuk9bNfb-vk7d!&tm+ww6WT^nnDR@uyNfm znJ*|`gxhK+kKS>c7X2Fh{L}G%-A>5<8Z%*!mtmp6<{moAm!e;N%jh@qsQ%`r_o`5|LHmH9E%f~JN|p0@8i+uuCArlCbO}6DY&jf)mF!MOT$Pe zW0nd4lv6CqPt2M_O(whIO8LS=#EX`YDc%!mz;UEVQ)^r&$N|ODWsZS+)}JgEvt9fe zzF2=utqj8kJX^;*k)iYeAOnMd1`_33SxzxA3m{-_NANR^0J)J4^;fCG97CQ#?jasLzZmZdl-c$AD3!@MP%Y0K7Oz@F8Z26Ov$0rG>#ZE0 zT>26!fW}KC*`YsyaDanjklXooS?$6C)Z)XjIRF zz*1`QU--37rD%?#5?H!H~mWxzm`@?e62pL47hx$NVd-{;TmK* zAjuouiY}RPHKne^rDrt{Y#MAlN!2`N6V+Bv1^!a!731HISf;RdFZd=Jd0?i=+-0QO zp3(StI=6o(x1aAG zB!&Kcb-8Gj%FDgzYCntfo(-WMZ#;gn`^rUxD{kk4QkMVXux5D8rTy>H7F9AM)wp8D zFYnjPkh*?zNmYY?BO1j{YfCd&!h{}Sz!8W=OZ@`7#0Tu&ffHlf)d=2bygddkxfx$+ zeSo+azF28L54_mw>uY{r0>+YKLPib#Q%eCB~Ij@rlW-*&@H=&|~)_mq02!8GWuS&&FV zDLzU+c9NQ4`m=0<+JYtv%Ix4Qexy&O{ zYy9!Kk8IDQ2N&;ur7{97wzf}ek``bIA)@BE7>z}1lrwU%1GPl_Ra${1@A0abkTb8J z;FPc^%Ny{7%m#0`%v>n+eo4PyBh2}8-oV^Pi3l|+S@QpXX_^=^e+ zt13>6193_$L81cZm@E7Rc&20!H93`j6Wy|Wo4zN zA_n@2zKn#VrBb&8P|xF#KgYbI$4g@_!;g-kg82#?W70hfb}=wtP9U8vzW@h;u3}Ls zKaWHjtA=$m5vxFs!>2r9AO7@Eaj0c~-@ln_6%A_>3kSOwCm)jkd zSVOBa9BfLApaUgN#llU656%I@Zl!{}kuF`n@jr50BLFBh9FEzcNXLwipHPo-JZ zdl!_B_+KVtceh4er$Z0M@3ywK4!OO>QYgpZ#Gdn$AuFhBn_Fu&n)sCD$$dW|MDiwk z+6X{~r7fvg1>95q)II*+6W{C?V{)*QNj3v11UIWdPsxn}@t16DJ$Ee_{15R!MpfTZ z5dC-2ss>*SGq=i{WR*TRp{kxFCYYHdMxhQx%;7!pUk-i_2-$Z(_{E2|*5;P&)4Z2n+uM8r zr-L`cY5p@`pjOrUQNDoS>hX4mZyShKa+IvDS}SkP@>;gHqfhWCs2i!i6ljO{lWblz zQM}%#bkOO`rNkHD8n~lVKhX6?{&36yK@;x%Y4$icNO2Q;Yoe?&biMuTBqw_2&aU+E z?5Sen`R3+s*Pa<>JYegW5eKpItH@$b7#zF*nv+yk6(WuYV3YLlP1#|vL8LGqZ!8fzaNjjSy#_5EW&My#^!NrnDl7VH(` z>fP`^%6XgaFlO3_?okH&mF0MPy6;e(TSMs33EYuc1I}Ymq0n3Q`>-ftwefN?2Y<5W zs1JC1XPZ^xa4Bx3^57Zo>yGB?gvzH5R(gt2HpwT2HcjB0kw#kR+Y?)c$na z$L=ZVB?Js~*#~}bVStJWJ*{4AY23J{@|Be=IT7dNgpY-le(C<^xm8cOd$-AZ?$N)8 zRHZIpT>jWk7l0UXQhm$eWllenNLq*`bGP0#qoC8?Vm zQPkj50|iHUX8Mfe%IV$Tj|S~++&yYuETvGt26{f=U4DlM3#6VLu1^OxnVnYNW!uYS zZ7nu+ZnG3CL4P3Hkd+C+ZPtlYrNrWz*Nn~x9-VGtqi15zpP5!GwR`vP2k$PPZ6BTo zArg*$9Wljbjg>UGWgoJIT_m0F4qxoH9Vz!#EPe^^=XS3T#*2{}Gq{C#=&P9D7lBX$U6+aZ-52L2&v!bpp21Kow77#94qpnS!MnTNEmGz_t4VYeesMh~veKL4Zbt}pR4H1=`mK@^N=I|vqY zXFaC&YWUZ0{~w^er832jsm**B)WRl$_K5W_0i~tCu@&$<-Fl)yOB-5sH;(W8cb#TsYwN_-B=au#znQ6MX_i;dcAr*g>lmfN z1}g+r_#q5D0!|!HJg=!izJzNojn_h+LcaPllSmYlib-x||FMJQEkeO?&7+nvkus_L z7eOKZHmE8w8$aFRz$fqw=pfu4Dn`HBvJ@J~C}6ELBXPHyctgFGf@2xOIVArSA$*hT zS_qZ6nI#`9AXng*vWmBq%*GeTNO0;nrEPsR)#L&Ef>_X5@ME2S@|wT&Ej1!;M`vol z;*8RJ;}<;Yt)7azZ}?^=MXQfd29}C&a{9#zL_Y;AE8e~z#iJs|BC)F8PtWY5n7RHPO@ud$`@R?SPB<=y#uvX4r0UhV4_g_P6&=|0p}SDSlte ztSO&Y{PF1V%#1a4!QkSL%O&z^YTD`cMI=VMa^I~SisO1m9?qB3b0M94X8UxsyL9QF z%P++j(dDlMuXB#e4N^mRZ#mAc@e1_5x0cLP4nBN*F>!HnnokW^!P2a_k?znYLr5S2 z3wKgu_&pagK{`$WRRH)cmq7TfWRRpH)&Uhlezg=Ri1`9`K%tDFLWD?&raN#xl_qwi zJq3Uji&@pu=48Ls{U`37ay~Vt5t6VcM;l9t{T2q#%#OMB=Q{fvtrQvZ6OodRHI37? zz&S+Q_wA#$qaOxu(I>}C17&3y44#s~iN5=v*}A}7_KX7jMoVH*rfXt8`m!Z&zK>D2 za$$~g&ig-+Fo~S5zQg_ZJSVQR_{Y|Hh$a-X4uJ$CE1Cu7CZ(XMi@zq_8h*^oz3Qzi zGjKPHG7RXU39lll#f-@YE>K` z-|Nt?M6aABr84|`5S>b4vLY?qYR#3C{#$_mYY6Z~rbNMLGL|wWrY9hjkCwDoS<;>D zagA55qu@EN{8G}io%=RW?LOsq+>uPj=7E8 zIVk@I23D=LGY<>-lWi~FiDk#VN3m;_-tCPIa&Zg|*=I_plLl`u{X^zk2`Py#86kAB z!4X|k%GPrw$K~q*_#W#5Kb4rS;W_H!^RU0CVTYS*JxCvas#8o)wfnaBQD@=i&JI>v zIZ^6SUTgmlmi0Q;G!{1!R6BD%-G1KGe)PQE3WLckG9p_(oC<%BvnR#n8TV&vA)}ME z3(;b)`3+xWq7(VG-4p0EUFlxnHH_mK#k&9Uytq!Wd<*HTSR9O^VNNZV{eDsk8Al(U9;)GfUkwqM$l>XX7OF!yRCeM9}o*7ymxbhuy36f& zeM#h~b>cL7{&LF+G*iz?drkD~=6+e8&^OrHDNj_2R(j4>MbGr=+4q_8k*f>eSGu}P z*W3cRI?Au%%lAa$fat!PD#`zuo5Wh6C4N=G(qffd7|UyIjba-xZTZg-!_XUmzA8HY ziBCNoIy1@cyY?D-cN&CL@Mns84q?1Tj5MUW>S~-X>~$YstA74t$!rE~7xziaSS$p# zv7{;B8Wjnx1SuBE#8|$eAW0Z*rhy(TvL_pq^{Xos@~B>Yz=C;7Cc8QlzzVVqnNVk|AX`)s0Pr82~M;YMLw_pEt?!}o+Z$Yo{?#-A@MgXs37m5ZVFOGfT47d#eQ?Zq8sdF25&+pQ5P z&0+o+{HO`amOKa#%6CBb1Ct?9w4wljPzGKGup)DtCPnibQY^y+^{te)zFdy|SXu`< zn?$EuQUXf<(%WzN%Q4q|!xXc1J}*FEhmEIM*0cUJ@|RID`M?i=ToEi86ry!B%Mg*G z(i%Fek*A(rm2Q`rvU#$Ibd?=+&=t@a7OGDWy5Ta{ zqbPnQs#ryVvxTB?qd^{@7XVob;;mo*;7B%lOX_`XN9lU8f3~nDxxJ$7Za9U*1?wx3 zd0)r9CERPZreHAr-mf_!YRM+3!CzIXL$rPOG*Clhn^nZ=dyBi7@jlfNgG}X)cXZ*W zkk5($?KD}Woa{+5 z2F98T3eXoPoh*Dm!dgjbr7&is;<1eM>|AkC`BdpzpApk44Fbp|%6bS3{GI06qio$C z-1{=6ufVzYbY5}=kbKy4dKyjjn%Fr#oFe;+h?hn^T9PFwS-JyM@eeqE|s!xw)I z5Up*kYds;;Yh}X*b72R6wzlL2#!I`4qF?bn+tH<7rXE)q)%zmnXztW7h2g(a*LZnG zt%yMuYx7&hQORiMtCxrkoA`OSwLi#G|M-i1t>Z4cf!%sJ2PzOEdaqm9ejDC>OT>Ji!e9i$aDl5eHD}RI* zBfkWMws&f^i)c|jvs|^NkSLe?=+P!C)i>~BeW`LQ;QlanOkwsps9CX1+HELHCpOl$ zZF3#90#?&nkZ@v6t<`Ewv%BVysHvXaO|_GzG!x}pP&Hqg3j%W9k}B7!p%>d*_icmz z{DS+uv6IoiuFPcVR|j!UIM#niFUj4+Br+_FpEGnj7BLQ96+a+ZPRCUMRq zcR(9!(wM1k;F(;-+q%+f9sr8~M@3kku+~k_cr=q-s;Om4UYR+DY>A2Q0H~#bH49q3k$%qz z0H))FOUgYO@5ndY=o|b>(V?5(S=hDs9H%GZum9R*X^ifgtiop!uHINDE6Gvi{{jvz|N zZh;c4A3wfWKu{g}{`4JdI#||kFV%@uR!`2&x)Pqw_>r?Eia3Jni$y)Jnp9^j*YSn! z|7sg3ZP3`wxjV=4wa!JVbR_KbfJgExUvyzUP`7;maXezcJ;8g6HSA#J0^_;fG-vIK zS<_^}Me|m8-={CNMTk(}_e(Je`AE;n_ z%ZO96PQDqh0Dohu@TIE3N`j&{O;eGHLNzn;xI2&|ey_K24fvl9wZ4NSHC8m+_5qbd z%k!;Ye6Ug8$(C)H448fBQi*2*z^)XIcDJ<9{>=Pn%0!1W6n7!@30jlPAF$5QE~K^te=6jt0HDxgGTw%s9WQ*xQCFjHSDywzXeVIY=RGT9RvK zXy|^yH~&P!6Aet;Hd~#h8ato!hGNOW%=Yr)=Bv*;_P3JDci!@IN0&U!=7E@KS*Fw_ zhAYO=`YW-(Ws4v(F(`HdNH(eDJNUXfensm^8ID>CYrAGdFPFsvQW+V;!0{l4;# zom{Nt8g8_9Lm}tdrL+8DPTJyCHbVrKVlF|e=G1~Yy%7<;Dc6VP zXW(~pKU^d?4t8f+?~=;N`d3{o=1U~ZP*vCi|(jwKtIP7e1HHnQoY4X(#<7)8bimPC%^ zTL)ZPn|3}1?YyWVrf&oU1_66ti;*_X9*1Is|136zZuB7jZbp00S#RA+%$PQ7sMHZV zjqdE>3$e!;qmMcj2@b#Qnh?6PE2%V*I^>aPX&(11ixfEg!CaNT*hInA?oq$yA6}Q% zb-5|lPKo$|E)La~$>?;gq)sJ0*%W7>U1n*}^QN3`>G-|kPPr9Yt&$XhQ>A02*h^3S zf4WSh{11&AY;&jQbpuJ+Zk1%ICV&Z(I3erh&C4KP6McqvQK6$R^A$GfE(bekStQdL zrug=|jnbz!Sf;QF(5l$n|HVg^5dsg``D9Y&>W8~Qxok$JXMxyn+HD-JN>4r%8 zpyrw%?`3lnK$w=~(bs>9q=gDCSIGs<@wj9k_DRpe7~FFkZ1kAhq#MZiUWCHUkz7doE`3*-yYh?!3Y1} z()sAe+)UDfx#C+gEYXo#nZ#v)D1Y=ZY*gafP5I!Rc)xCzPD7Lcx_cFzi50M&_qcYa zm0r3lxeV8sbI{p26ELGk1&RD!?c_VZWPk@Qdu}9zWU=uhV0Gjf7)ORK_2MmJwSqw= zx9Xe$hA4fg%nIHZnl&k|F-XA0GeR{03^eX;&W;SEYnKE7EzVAK@JQ&ThQ^lGixq%AR0y%7<#*`QPtb&&%?uWp^hY?*tsdgo_hoG1C&IP{1q3 z{hpC#VS-;^pi8c$L=JGpcbz$|0W%X2<(utHxB)25tb##O{cN=h%-{dbx;6=nl^wcl z5s;c9je^ozrb9Eh1f^Go&uR( zUb4JPRTT~rdSg#*Y~(H7YrDq}A`F?Yq*zLrLJZN#kTK~M!3IyR8DfAuM-jv&yU|8Q zhhf({mTE z<}AF;#^j>SyWgalPV3E3Ol9P@_nX50K5XAxKsjC;&2;`o;vB^a#Ph&Th-VNgt17pl8nLF63OoBeV8FR? z-K+^o{Mh;|1beW(yD72sP<)_%rmD>M@A$j0aE-?L^>~iv~Z00L-{r$Nov$DS#<*krgx$5)LL04}f=G)Nt%*@Oy zS$}PQHS#yTHhz;RStEfo^i8^tGQn++%=|A4x%#dMmXRuL+ATq3x`}3qQ5?qhX{7iz z3jar)U)9A-PTg#J9`vF46MADPwa%oPRp2$ySPW2JFP7}?!nYGf0lO1@SujiW0t|x^ z9UT&>^xz(7$rr|w`cX|N{h$$l0+xdYViJq$8w9F@UgC}WtI|d+uZ${^)e(yFBhKrkhZ=r(DkL0hVI7m2lo>ax++k>%}0AXdgQFPLvQ)wUh z_31Sg)ne1>!{f?2#NP$Ju#1OtuC3iYK8n22sw=#$-PZVA9ANHvwI_`F?!w?*Uf9`( zN=IjhcvvY80_n&CqGOvE!RqnzzQZ&f$o~cbK!?j_jQNM%SIuvAj%cVP-_*)_X#34k z%avpj^Y%z~y$bh4kKjnwHjn8Y&eOPcEi!57KPVwgLCg`IsRPkaS+#buAth-1#3R2J zq&mMWGuY~?b2|`BSejN3Gycw{Z;i5<)M)xGkkZjr^k>Wm``o|QMk>P-!E56Zw!bi} z;8F==dH3$q9rJaKnWWCizUHJQ=|R0F^LGa6TOFx+nu&edMv#{3ma#EecZu+)8Y*RPezLs&@kfzyVeQbbZkD_^h)>tKJ{p?o6)wzh0e;%v(!#Uy{*m`ES&EZ99w|gv zRo4$5A&E^~9XsxVhV!yMw|gXU$pCGg`y8E2OUXm^khICn8G|v735^u`EQfx7Pq9`p z=nYAK8#4?hHjuKM`7sHD>G@nNqdCD+C8ww}_21@mNSe+YRg$SVO`j0=!mW&9xCpSq zeXH#I(JL%NWW$JMMNW=){WVl8-f^8-d*w3tU9pU~?esW|ZtZihAG&f}!`>g91SrCx8jUMYQ8|25IBBp0LSx(2{InMgOJtdyUA0K|=pWdr0n+bU9hvr_V+$#>H z4oGDluf2`4Q{;A#%qKm+_}z4|G1neUJ=`1qA4TWl&(#0NaYW7Kn_-wzOvoe*F(opW zv|PuCkozt7YwnjOVj(7CQSP~w`<>h-_awwxa=#3dYs~oV_XliyoSkz%pZDkWe!ZUW zj+2eh*-=5e9T{nBOKYrBi@hy9k~6)O78>mLt18}C|L9xtUF$Xye^O!~(H$)fJw~m~ zly3DVn(Yb}(u*&&RZFn$!e^pTk@p3KVtniXoKxGw=&l6}z??mB6kMVg`wA%rtxv7$ z*>D!>GMplC$9k&>ev(Tj8yE8#)T~C8ro=E+mG&zO>l(7%V`dw!-VsBQvU&#$YA_sF zvHSU-1Ci#nb>B;IDv}A4@5QY|(hXM(eR3oh1YQ-`jvwN#I`EDO;6rwLR z5_rVofyz;8cE85|&QPu71g<=mbi1vx7gt8=ZXwaE9)IE^P2MW1_UI3RAKSt)-){5< zEG_$hld3-I^KJGzg-`yNY!t=)wzitRYgsH;_t5!98gebJX?E1Y%&O&;`mKGpCKYwz ziZQA^(hr?h^+?GS3SP-!lkPRNwJX07cYYc)iAqS|DbitnnA!~D8j5H1e^gHDUHa$? z@1eECed=gCTB2=l;CZy?hMxR2V|1RvYq@)+WJQ?wUV8!1 zS5zxX(2ogWly{Ho_4fo8oE+>PAeCE^msoEtm3{wq0+Ro{H1-R!s;b(;zvrL#Y=)+) z0rq9=GW7f?;KjEW42Oq@4Gl^QaE@^p0Zu*oc}R_;Lb3EV?n9(Sno$<}WDSX0{pFVXEn0pP_7EN`1(YpP~p=gyM2Uw)Xg`8K>JxC`vJ_i z+l5llGIx6;h$~QR%#Rfr1-e9*#!*eC%wjHXc zS$|S0b8H~q{q?J@-!Z4?@2RJf;5?1Az4WQ$*X*pINzN});8^pn%+j-%f}5%WXM1?4dA*K~`pngNVp>Dwvae*E<6TQ_K7De-;)KjzgWCOHHpy;Su;3)dBV_3hwB@v5^uF8-NX zqU`B%YH&jQp2WSQKj!aUvrO^Eds{57MKCPHD`V{@M`zp!s`p)ZBKvK-m_tZdR5Ww~b? zE3;v=|4LH-*84hCRJhx}mwX`8yz46Mw+$2Hy4?XMy7Omma`V!^ZhLFJ+4a}1v&_5A zBw9q|GwQ*y*^@}>Zdvvy%l*Q0Ukdy`zj=*RYutjM_zK#P=n>Yw6Z-3o%o z)SasT#6I)y6NFTgrdb{eDfOZESkDuxZ+I3_j zxS1KA&op|Dy)UvHkiGH%3c5MO5QBk%C_J{CbzS@URBHrb-{qbJ>oY z;Db*`&3sEyncQgB{-UpODcM%#K<=E3;?;}OeR17^uY8`UFGF2B-FkZp!O#0Zu8)-?Suk4U;_egJLg?_#AGQr>|!nJGAfx78pXUlrD;}J63#! za@#6gU7dp$;qdjtz8*W)zMUjEPv%S=cjDyENk8H3$4bMB$FD8R^Qok}X%3p>fs-bV zSg5o84X15m{Pibxm6tr+cu_9RPIXqqnIDPT=7rPRLdN=0DXITbG!;_0SmQaq>ZJN9 zARoS74L3F;qpu78w-&q;Fd<-krtV1k{>FH#@vt zv8fx=UP;y1j{5xDJzY_?r^q#zMPT*a+4zfZL<%(FpzW z5w{fIKJ`=1+2VDzqmkm->GCQ1ajo31GT;?z9nP_!uz5&5^$yz|CbtlYw(Es9g;R7b zH}~X#^Rz@RF;$?jK=vxt9{N@+SdH!imllJ`Khy@@(>~Fw;QBBCy`cpo^jSNKe4lZM z81nEPalLe(f$>kD-#QJP7wOQns{%=#L^i6N@4NbnZPJ3v$blgRRET4%DJuoWFr<9f zF+`Q%jc0l+F}N}dayi|h6lyVXW2&}Ny*5AaS;Xn${KkW+a?`{Kq0>{!-N<8*`b^;d z;?9~~6$36iJE;4cmm)bk`>Baoude23j*6PHa!|d?JW^z(|S`m)@?0!h&c^b z;Q{-{@L3yl(ex~7cJm@No0v`VoRV%HK0eu*FDT^_eqz-TN;@XowmQNkt;(y2n=i*I zKTeW+mH8iY>)AR)F}Xjb2k#c6ACgL9u5qWtP~%!6;J8$M{rcuDj9~TcjUc^3#i!k_ z4HkLlH9btE$NJ{xj}m#%Z7p|O+aqf3@!Ct@sV5ZSc%zJ5cpadHi#~$(tTbC(Ep6fLzfsHlB>7hsAyHC`pt9{37~kEiC;bq3S*`-(;;ESTWZIr|Fp1H9F^%S@S+{(;4Y^7 zd(`5FrUc7FX!0qzB0U~Brx1%9v$!eplIzrb8G?d|Gv^dNfQpLP3(BAKhL+bFWuc@C zL6mS}ef+hH>v%hD$iZ2u=IwAaT;qA`19%y$X?2i zt%%6*eQ%%B4O#{z{3N<9vXORn>UDPY^T{cN<};$Ktu`EywURczIro_pa?|W7*RznL z#m{#lj(W*6XnVDvrA-n41$QTb5=3|?K^+l6RQB3wXkT9Y(K?CT@aa_@j8N>Ad%8_k zbF)}0eoR>jmW1-XH$SI;&eLoV9n{bJz|^N+L?^Q%CoV#U8G61V3Q+N}^)R~l!|aMX z@nCPmU1Ok1_L=r;ppytw3hDI4ABjfevYITZ8ST16x2la3(4__`NU^srRKSB(BKG|Q z#X(b9rk6$q3Ih3(&dtr@J>A_Af}xJ_g%Wy9B^609#zaMo1gd(xwCu8e)6;dW$52hm zbJ;zbe^BIC!8c`&P~S+u>(Ilv@R!!cYnS{&n$*RVi&vk^>exC|ma$F5u$wRV4(ZXd zSKgWDi}j`E3Eh`6BOYVo-w#+|}(84we zbM;t;pnP-^gr~H=lB=mwSD&88Lj!66VSma0kG)@3OU5jXo^2$X4Nj=&b%p{zmPr=Z zT9=1$aJGa`&}ko|kw;{DUUoC`Xj<)bVI}uWa%g8Ia*uNQ@9?w^&925G!6p3Iqheyn zC+AqBgF=n7y-mkzJ$lWZH)UaN|MqRX?|`Pls63ZjMG6DM+qWz%4C=tezg5N-Hy9o` zo=@pAe{}Vh^-~XM|LFL&N_tH$ys{y=qAM0ZqU`i`+4Z8erX`wD02&)bQ(>|h52*KK ziEokxRgjDBc<_}$enspr3(<2qBI#+m-6{sBrw3andq2RmrHt8=v_uOSr*l7iN!%Piv<^GjSi6vTAbLT<2wHx1 z>rnNgPP6d2zxMEl&!;JIt`{wo$<5#+TeYhf7vMvdU!WNp=F+Aa{3{;LrKUlH7W@_F zJeNw{Zqt8^q8*#PJG`ua09eHa5`1>D5^9EGm1~%chS;B4EnvJOf4V;3>{9et3jafQ zMbD*mj)j+_$?jzqd7fE48{vZl*niA|QOjBdHr>9v@6nuF!$d zOVIDnN1N_dq1)CbjnCd2l4dt}#ukfFcEky*salVKGw;FJ#N708_Q&Z=5kktZnFa#C z*7Fnmh4=@>L>2`rz@(y*}WU#@BB6fyNUwNpM(&UfR}Z z!wKM5#+DfNOBG}bx>xRB5zi8%yc>%7QR5KJ-LjHHZpHI0QR~oK>3puSsze#&6=rS6 z_Z|10DGRIcl{5oi>DjQ|&F*(<8?Zx~$QVrjT>{QK+zsQU`!AH9 zgwZ#=ot-`ZHmmXsnOuCEa7l&5=a@&@DR|$DA29GE`itqAc@Z|UyYbSJIH~vevb}~5 zOk1?n;}*3Emx@xdNt?^Tfg>IUlOs)=P7jgT^tICn zCCgiS!%fhS-v=fVfyW-MH<@11uzcc0ZBrI4ueEdGI$Y4XMF&( z6+XH9=Q&|6C#Q-bZ$W~q3vs4eGpfiV({E~mAw+Q8Rt*BT|Bt(G$cnzlsSVpsR21BU z23NVnVrwd^ChI(d!X(6QUaD~)Q83!(dC=c4bmAkiw6Sv((lq?`1r3g|VK-@pSdFSG z+s7CvnH_qVy%tv+tx)tJc`BB5+cwS!CB=P(8p~JY0EK5tv*L1a2u;ui6$d1;Lm)TZYDi;TzSh9IKBy{z8t($jcpgAqxOVprx8X&LK@N|uqy zud@1h;}OXo*Grt^VVT7XTc-!le#vXF*|v}>CofB<%eoYvz|%oOu*KdTkBm~>K!l6=hko)Li2S}Vbyz!=*Rx%5>K2Y(7MWkb``*J0&7YI}tZjzH%wTOb z7h}r?RU8fINXs{Ze)=)=mac{bhtX82dEK8{xi=;CKYI*bSH1q+ z>{I!zZg0V2*QDR36Qwm|!mUXW2a!s0NSmtpr;%@YV4&Gv43mMXJ`y0e?S9i#Ux53( zbb8gGQLXQ1&T}rnH@_ZfO@U*@EOo#0Xngj0@3#KDPB*Yl`W0}M3%N5U=E_gx}U(pq*~^ z<*I}poj_$d<4)I>9H$gIPJ3m7y6fr_a4(_ByP3-TjB11XL>Zw2CEDlQuI{aWgp4-N zM=gteRNJ3%P<>-?`a_+N8rK~ISk4uu93NyiMQOL{ucGcR6AVUT==4mkc@q)8ZzUZ>25&Oo(7ZIX`UBP=WJU$gp8RP ztI=)0bNoG?TLh1Ic~xc?xsq>VHIk}IrCwry3=hYD?l+IWP%1m<=6n)Qm@@M+9#PF0 zEAG)fZ<(Jyo>yS*U*zi-ud3|<1YqeYOLMCSFJ?@>z^ROAr)`FhxRP48_0qMh=1qE} znz$*6p<@HW!7qHkG?n`Zbc@BK<$lg?u)TF1xu#~fENCk7jPq=JiT}w;Pj2`DP3UC% zzCrHY@zT?sU9Wn2qoRi1bh+@f)N@RC{O>{0?A@VVlR(b6va+(l#KGo|R+~WECN~3v zsp4YdM2LWW`9`YY(VvG$#w4@si6YMTPDB`G{0{A_~MJ@HBHY-wWu6+kjOsBem59T^cC#M`Yf+-Kj> z(bU$|-mZL=GqHEZtsxR#nL%e4)-3!5c83KATTER)#jA-gdU0mbMu?c~P^%EPL}{Z_hon z*&{H{$~H-C)HbJ^nc>TiX7p2~T`p;T>$_^y?K?s=7m`)dIIQre;(s;~JBy3cyJ^`i zQww3AN+%cTJ`C6FA~pTqnwSCC8=d(QWxrIkOxDl(#v^YL>+x%EABD(oC=7mTn^NrC zuxBe_GK`hmka+E`{ScB~0o=Wi*C_2szuA-?KK#Xy;}Gc0aQ;4;mH!|(;1T>!|^V@!C9wD@s*@yC_( z3ny^F@^>a5njE0o-pW)dXqwo9U^yA~(n5Yfc5$z9)0yL8zbq2Vb;sPfJSZhPNg?}dLDX*e&-Pq;sqW=PnW1B7k4{!s=X-aP2YuCn525k{ZHLglW=pQT zA;E}~zx$kOt*3hv#WFc+LNCtoo9MW2g7V058XpGp_s3g^bnt4O#iOSk)GZ<@Fw)O2 z1FLF&cdA+ppga{!FO1)@cJ_f^y`}oBb7^C|bus_hW-a&eF*;h7AMbEKTfX;;}T-LYrYeOt=LHhN)h8;qu&+MH)0$?j~6gyDKmL z2mj7v`!(a&V2%+-=WtzC`vf0RESEUU$tkPY2PF7(7~T&MgTn1KT?75Ui+?84y5m~1 zhdo==I0*Mel=C!st6dxj(D`_QJdQq4pU=D{DB-cZygF2D7moO9D`$a30|(Mjd;c15 zB6;mK0X&Fz`*EHtq@M~}=BuaQ9wUuq(z=mpM;++ zht!Z}y#l-8H~HvG$ssF5G*%=NK}ZI=OEWvia2M3sZTwxhkBC=$A0lw@+b%)bKKXAx zo(F=l%MmWXHMumo0C+Lq``uTLK9H3Zv#LuI^V}t&I{4ufE+8Aq_vwFK{&gxL2OC<( z<#4o~x%`Ny*C*I8YL_BVLNDrz>l?@+wcFfAXC~IzP z4EtXHaKr@gEa&+b_;Que)RLFPT#4r==PDgg;J(v6M+o^aa(Byszvw96t$9F zdO&b{Ck629#dFanrm=>SDm>r7haY5!-`vp1d=;el zINOL|rRE=(WORD6-ekvp9|L_&K0l``kW>7cb*BE-V*E=Jw`e&>&7u@2#KYJ)VZHw9 z^=x&)ijmp2BiT`&q6e;(ERV}GHtnEDE%;U4jyoz0qJ&`W&qPj)4~EMTkj4zR#RAl^ zA{bxeTY4l^mz_8CU+G7Q?s3^a9HQ6ymD3*SSejN#)cO&Ia^ydv={JRgkqz-V_-aK} ztaNE93&xlYXW z`TB&wbs1cmEDLcADTh^e{GmsA^A>5{pCfmV^~@E>`)_eefz;0=&*O*=>nm!Z$73qJ zKHHzHPmcbsyRw0+4O~Avd5df1_PO2}?p8_0j{DSi9Bnqto^Eg1)&z8-C+q_JQMW39 z35H1J(SCajm+;<`m!UX028RudY(Zvte9$4M*YDOd8l@xnaL!Yfehix>d3kzz#Tt(0 zbhu~S=wvDW(ey_{6Tqblo!hii_a0H!8^-{BM|#1m5Euc=z=!~>U|Koplu;{=F)G7P zzkY!mP_F{XLhhLSKg~fwUMh`P7h(=Gk1NB_1MT;iF3iQ}uIu|X#X_zVI;C9iL7mDi z)2bz?MwhLvN`X1lYH%Q=K#5MPIHa3K6*#(0OvS`)NPBy0OR`r3TPk)ZZ)eC2rH#G@ z4!vUs%>BQ_TDXp_t}bExMx%M?9vme;9O+4(6)NXaRvbJy8eCDc`eDExAobEh#uWPc zkTOeMP1c`O)P;=V;yb9+$VZ>dGWZRWl9H4&7F;~Ng7$VC-ljUTEYles6}M^{tO45K z#y&CJXm3%qlIb62q06NE6) z`s?lI{NlB*$mG)cvuOpf4;c9(+#3YCx$}z;^G!Ao&ow~mbqPDk1M1Odr3`){bU;h+ zv#)=mdrBvx0OOZ@2z3q#uwlQX1olEUF}9eGHE-k$6Brf+uf^yH^DwA?6tz?3fS!kH zVSxF5BhsbKle|cy^eiC#?l{L70AMj<5Im1As||?U9EB4;=ZuBDHY#Gq*&$h(lf4$S zpT6WefG~c;^K_|8S}L`=&mAB1&7LgG8YR#HRAP`u*O|N$7B5-I{rlu*dVgczx5?sW za706N9F@9nN14*MS!MD2}_EmC-+#3x&us6zT## zqN9Otoyk^1{pL^0>mba9I2^bA27WY3AT62Y-UzR=obyK8g+-_Vm!LQ*-c(|^;61!8 zl1k#Fv=1{)ZT_8Da?Vn;)!`)Z0ZRvZKV%yh01CJhIVnoKW*#*RUuxc3?K$S(Z}~(# zm`;=78%%3yd3QJ#x7bRKi^x344LcU;Ir`_1MjvlxD|N%+WNfw_78eh;&9X#}&A4{Z zjhx%!%yF>O?YXup9$^`W-y8K-acZak2JL5`X=p#Vzeq!t)-$9liLJG^(K!w8C;c+ZbRFM8~rGhy` z`GyiYy7+pG63{E-Q| z#SII9G*YQ|ysoU+b!-N4zI*peMR#0Qi~Rf+(olV;6slJ+j%n@u{eg}LAG7^+K~}4< zv8aLb@+pJMWaUkrD*4iF!9j|*AE1z}VvikBUN zTHVrv6ud1OYXqLt7LM)7On$z3Abz~K$qZCJhe$cpmnA3%{eJ9KJCEA&Q31<404)3< zkIYSDD*?+G8-kxvYN=zj9N-RRB~MCPS{fBYX{QA?Tv4U{E6&JR$sVQ+57RHXwA%cp z!Q}m?T~VJG!#XJS*y?8Mj1Vi+@^UTRIi<6IL?YS4yuAHnp8sr9jrzpeDs0&aeB4AN z9W31JbT!ZA){UcYl;QV4o1C=SGkQejY+KrK8UHC^eq&>Py2cqLi2*u`6oSgbMQ03= zg}7vmYfxQ&ovlHWi4lGE;WE{9-x@YKL^d(k-?USFYS5v)s9JM|!Zd zyfiZmkd~ZZwJ?!r@U8~=vEH@luXp5`YH#PylzWx>mx^fn2gJ?2<@Ph%ZK2li3og6M zG>X5vL|lEvOueF0o}-prfBZs!2*Kg;O^I(H9(B+)U1&b;HpS8#D{nPr=}P&MEus7d zCz{cPi5)6URm_8aS*!{8<1qjs>}CG0MVs4w37iA74UIg| zT~lX`p|}y@g6wsZ63GIIMsQ!}rS8}lL*?q@pdzT<5VV_>Bd^Hit6gDf04TvkPaWLc z-g0`}LZ>dA9!4GvK8bOTq@K~vR#Syu&^Xm1sK>PILnSX_z2zjYxOYgHcrYxvikOTZ z^VV%Yr6*Y%8p!!+2G-#|5jz|GN7rR?+e`nVjJ1Ss%X7yw+plyvQEi5zSlLCByd<%S^O&z8ev{dS5 zgc=8{Z9n_X^fzqR@P2_K)~dnB8*4lSsIXKWg89xOcHniGnsx`)UUOr3Xw z4~=!^SzF<)W;B9A!;KXuG!8$L6>;5TV+dIoyn!@Z=>GN#_F7j}^2q%fqSrvF8*%AS ztyLW3{Qi(Ll-!yc;5`N=cb6!H9&fmZ{}@0Q_#j#EJVVZ^j zD;}vXd%Z@$56f(f**=vOhOqK_s!fkcucym*-u~ndF;Q3ePpUWGFHgA|@GLmwySe-@ z<7*CuBL&aq?3(dg4hn(xnIWK;LH$i%(&-&OOtH^Z-+7Er1_HCHAxN0MpefM{hIK-V z<6-<`whC>38UNGjg{jl2mXPb7QV(>BK(b<)pE-2gjOtj@z6NI_itv(F*!+hN9t{o; zLB~fP>&6F3_bf`$i6s?Xnnx+91jIGT;jy?@ zV_*9G2z^M*uD&Vz@Ino3i~MOrHus&iVR@^1Sud-De`Ju=w=9Uy{=7h*gPi9yp7xhN zGVqtR)S6sq8VxJ_{^Z}W9L)S9Tg45bzYTPZ{qf+)!%c-OG;E2O)7JJ zY&2!cYhV=+ruWLSXHSp4{C)!ECMzWPd6)A40P&PSEB}v%=}Ow{P10tTCAwVm)5kE4 z#i)yMr2TErso9N|$Kvlj>mFu2^#w-0UJe;Ch=YIDvOZ)HqHjitsMo6kn&r^`6m6ouPp$Xe!SuVj(cfi#OvXmat-6sqLD0H zZaSD}h^@(!$S8AabE)Hl+!jJ4$m-Rr>2}w0x{5GEZx)(Z@X@1vX~M@gEfK{DCu`39 zqiPmY9-_a52UyIQ{l0=B>+bI{BWd!_X>)Nxr*mc<H(jlkKtjbBxDk?QUuol^cwwQK?;;vWKnO&vw(el6<8)u)@{q)N zERQs~nnE2M9Go7)j#Uzi!2<{w(iku~17_-k7lNN(dGTA>3@0WI;^K(1LykFD;OYV| zU57AtivAOh1zFm}3|4a^U!>qFfnC*qERTFb4o|m&`kW=Bp_gBIiz~R@Jfuc6Y+_Pm zo`fxic`I68?f8P>44jOWmLzQ|k(Q%<5X$MgK;~}Qz_<}*vo~TZc$;b$egZhEysjOt zb{}9Je!5n(Vt`8peDKL^O{D)7@wqvIv@vHHWOOSmMOZ6@77-d4cy;XG-0}roOKod5 zZD>K{{? zxC&~e$O-IPAMv_Bw+I>?>OI=Yd52L$cINCwzp#*Gz)c z9blW|p$~TST@8sBE?`rINnc+m{|~?=9iYo_)kqlojqY8iMr3jW^qS>uDcsLkh0tzqv27h40)$SB=Z4x6#z;T? z$xBa39rTG{w24n=Mo2M??{9f+c)pn#o$9c<&})aD_>b_z{F6hQMUKk4_f?2Zl!3E9*TV{f<@%iw+k+W0tdOZGir)yVNTXpKMStCzCCSZs7+Gx?Vg!q^ zt6+b6rAt#M7D$&U2)ja|&$MxPw+rEOq&o>7Bzdof zRNR8#U|#>lF}N{N9Y*C1k&jXuEn*`tO_D=Bt@_ji|vHxD8< zE^2(KCwjp;QEU`rBWbell|1FU=DF`wTi{es>d(ys)ui#(eQDVuyQuwRhn)K>P7BB5 zC-C%pkeH+Z^kz88lY#_I&5ea}2KynPifZt3=#7?O+ zYvJTkou#r;xO544Fp26qU6(oQmx(;$ zC+}B*j=fi3RV6O@kZK`CGp&M2E+ld}QoPB*a zI@jn&Kd?PIV*$QL1KY13P`Bpp$5`t6WWB2Td)j{a{%C9-q6kADpl5BZ@dQ^6i;%TsVy| zY#oB#&uyc32;V&b$Gi91P545~8%A2HE2I8^uW4tpe_-!raTMfvk$^1N5PA^o?7WiO ze*7bp-2Fp3U78PV&YCoc-ZL_~xgQ@ld@#FL3D{6O3WqfR$e*dSzAG3hJi%dbp z$8BvdZ<6VbpWnZK^K{w8PsZj+0N>Mj=l?qB05ZC>1XXHSYKMhrn%=)5{x7hDxDki~ zmF+(mmy-V+QYD?h#sa^q{8zd)oND2ngA&gSjN2l$1TDb5M@pL!;NI2jX7_b*!WRig zoXA&(w<&^l!Z>c-!tV&3dr>g4%)6#@vV`QD#)L-zRg6vfHH;5L))ru-3v|AT%#w|P ziQ?$79NNEev+l*#yKs5RK^$1FaDMUM(2%DfA%8($e2umh($aDH#Z65EUp(gpP_>Dp zxH~aB!aplRlpP7}x(EG$RdwHL@w||N&(+vN?Nm!DW>e#aY5A-s4w@?p-B7O!m5I4_tmP@e< zA@&T@hwYkNh`v)Kz47Qu)4Hl0R`Ut=5wY__z}>3|5iArF{}2XYz{y5~%ioq~SH0bU z2SAH9-oDfMVkq-eEOQZFs4(K`FChQUh>*!5#NbQ%fs*~`s?TW0F=orQnMcPRSV%u6 ze17%XFe_$^`$2Rd=^PK{;YEP0W>LS&_wy)S0FWP5Dt^rb&4Q3{77dQB8F~%S26U$I zIN*5d#c!v{=`gd&iQtsUs2;~L_p7(nia|Dl#UQytl?%f0>>olKf_|frqa*s+^{)J{ zCXuW+%|GJi=Y9U0^Y0h0AyN(|8*RaUG4$y)?cs+DvKs}2Vt#Z>5n9jm{?gck(2(jL z@Ex*tXgsXy{%0}!3=%^DCW`rE5{=&S1Pyd6n8!<<}39z~W5s;}wYTP^wqRh6LmFhAA zK9nsP0etE#>1(oobsTjw4)-5Za?BwCGv+FiJR%)>xq0m78|VIc1@)Ga%q{?AWk`1K z`t|#kK>KA-+V@g&AaOIiMWWO~YHF!>$$|?nd;1Yp7E5v;thXqCtjWXwr|UD3-T)wZ zOQU+mT@+hdl)UIZgHkztC%^FB{98teb-Uq!gZX*o{Q2YM5Wzb_*OAdV@2F3uh ze{hB)1p$i8&YLcqE~I+^;5}B67(qzVxHq`D``fD;7EJ9uvLoYk!A5rdQp{7UVgMl% zh#0R&qyOt(#pm8-aM1k{x)3g`BWGdrMWO{Pq77zz#pv5Jwg5KQR>8Pb2*lae-A1w| z=YRMD$)nFm{H{l0`11$W=}*Yt7bi%Fdhyp8G65MxfXsA>vIh?0y)M-vE5$!pWSODG zd-u_brEF$F-k;{p@b(EY(@U)CjbEa=rjJ~W%7Dh(T=tgfy-qb+fGa``7Dst5*&(!U zPOsu%Pd*mmTw@^C7)jK+qqj>8@&Z7T1?i>bILWpn{HI#v&idL~pGe(Uo@;yd@aprv zOqEM-S`UK`59!gYiA|D6e1A(xKxb^}`tkoYbxyiadA35QoxAxPNqn@^A>6+FBGYO> zhn%&`cJ0CEc}rt0QT`ZjCc|_K*Q5QZCy&XEDaiglitGx`7>7i$K`~3d0lux3WVbP? z+Eg4WM&!L9f&-e?SAVC_Qs?Ve<-=!Vz2K)-V0$iv9=e!gL@h)jSXZJ)6znXO{W%=o zs+`H$KoyFh?nnMkRuXkg2qxB(_kHwB)UahsFHuVl4YbC9egzM8*n4nl9n)B9dIOP0 zlWhyz@12;qUv~U&B2fnTfZ`dU1GTog+teH)m+g}kQsFqYzv~VdhD|d&DPGBdE(QP8 zqfo9Yc7HRElucuQVVF5Q68m_iC8a1li1Ivp*|nyHauAL+l6>+b+UHJ^#znb4w=5++ zW32s`_}au?U-aeB_Z+LeyJ-y26>zIPPC`uLIux=kbw2wGWPTca6WUVBh9B1ciqHnl+g?+UlcP?DvQ|9hd z0P=p`d8Dix#bb&?JnYXbNoXbpDBD#6c~(#6OSBO>h|k@yr?2k;6NKFB7CaD2fq* z6Lfk;VM=^8=E3bdYMwK`yEeb}G)osEK5JRA_0lI0ZftPbX6|B`QZ`Zxb(!WTZPg!a z&us;ot@h6f1DyfAwAK{CjXOI2{G}z|6>HBPa%7?hno}Mq*NeuLeM7 z>gz{(GQq{zR2)-hyzvl}?N7=*3`C!$VEbU05_j}GE)K+rh9(<~kVCH6CCEB83y{d& zzb<4V1f5!TBMzW506y>endg@DL{opp+3OkPTJUGMYh{&+&?JkIw{4ASKv zYYIu%q|-PlFezo}XEDg!Y624<0gg`DUk4*b6veY=>>%bwC6jk@Yh<3%aSr%J!2#rt ziq_ePugbUiVar%{!e>JXjW-GBl3>{_)XOX3=MgVQzzcal5TC*4y52rm4)^wZ&*bxp zugn4f8;w}K!hFL8`P!yH!gTU{mmE*D@#||@&biUtrHHTH-uHlj;bi<>TXuF z;Ekn_6?GyUFKqccC(01%hzyh&im$a~@z}q~`f5h?B8RgM^hNNc@>{5#ye>L*pC)^; z#s>qFeg;r&vgBRdqjzqtaVsl*25q<<=a5QhmzQjQawPN_XLgZwdai&op6Axfj;aKQu8 z0ab_|yV~j_lQbGQp;gly(%2PeXL{Ksvej0iB$xdWMq0e}%!PCXj<{r^xUx&jIAieD5& z03ahy7hyjA{vTKgov-_B+71H+LlN8d75+IM$d~MF47>1PXTTzciwlK9f92L#eL;*m zu)KqmLo|BmXB|JQv#1-4*=BvMEUx%=E~tZg7jb%WG8CH$)WE$}h{L|w9Luxbr*_93 z(j!jUk^ktRUrv(Zb@1^iO{7u+DkZd_#IQ-1$Fk@l)khr?dWqk&&?lH%LAYVw_tYWTbQcOEj~l z{KA(K9189%@j6BxX@~qtpHs50`k)`c=zJY&4)AOV!kt@TlB-s{#?hPtokp>*q;m4z zfAXgA&~@YfonoMO;7hI^F1i0vbmoCf|9>1u)EqHKOeyA`uP}rmG-t~>R77Epl>5xB zS$KDn2pkUieq}*KMZ?YJn2E zbJ>~}GN`JiFo4oCA-^zl8a1|emkteDC$6#vA>V_O82=FcXHBt;q~r!Xn2d;A>!_Ph zc4CCm=)ty(fN}gFDhrs?C&P@xk)j~T9oUh+Es^x^y}F8pLm%j+KPw{H3kl*JXigND z+W_-qdUMegay3lsr~)7puB%WS{KvXNw?OKk`G9z9B|$K}-GEQqkO5gQ`K;3*BEtk* z;6VMi-W?I`VDYW$>-N)}j->7Wg`KfvPD&NnuIYNQr^Fy#?E$k1JVSQh{!hk1))22Z<_YiL-#9)awe8+B0_tc(O z!v&&Wz9pEZ&j|=$pusreHs?wcWn;JJwuc#V7rT@=52izJusMkMKw*R0FhfHiPgf*w zG&StFueOYATK{@AY>7nB@OabpP*Lg9saktT5OwoCf+ah_Td%mXKG96?E~1;>i#+pz zx-^%jW(c}8khF6NNkn(Jh5 zkC#Q{?*r=N=#_ttVW)or8(b>NZ3zZ*OWB-Qys1C+kAf3W{<1K2G&VQhQ<3(>%gmk) zevwjjzzU7-GQ_CwQ-QJR=SJibqcDA+G!Ibql6Jn@YQ^!n9Eo9p^>o{wmm2;T%R&24 zt`}@fhSC$fW7)m7{k+JF#2cgIvyX7$-bm-r)8paAKV4BD#f=cO0#KRAj|l6VKNh^E z%u)!dls<40N|sb;2J)5?7QuSHV!sP}Jx4=>C<$o_3QiNmo5oIjCvZR?GTq@F2FaN) zeJTR$3)t*0{@H76yGxtWW4Xos@~YT1&CKGXGdG~n%LS*33IJ``Q+B^|gSo;=^ zum<5bzdu4T*b~uGv7aDwpR^c-a3~S+2zs49vs)-}^YN5#KYDSDLU?a7Ek~hn0~eOD ztH{_gHSzt|eCKB{LMnp}L`eLe1s7_G1GDU+lVR>~Pex43LsZj)#%5@q2wd--on(R_ zfJ!#g7HL@2?fsAJ43Z)lFQHel92YehCN0P3o<`c@p#pzfG>9phx%<~b!l11L)z!C%bu2~DM;e4+%_%Ed4^{@f@v)^fHeDa_X4RU#)WER>&V^kX3K~R6W zj`WrPVDG0g`pM}68~7&E&BZ_ej!&unQSjfA`3V!RJ5TCz&laAX$cojwOgQ8%1`vns zv%4YBt4vX2^1G+B7(Q%RaCYFvjRf6|4!Ae|C3*#DKAfJs zxetGd^3*d30nUUcf1jKUcLtuF%(b=s>yEmnQ6m{wVw77yY}dB#=Kilu(|xG$+uT$# z+6(&Pc?h{woCyknrlW=FO;Lpe%2Y2GQjcJadkP9?)X^{vUDM{Ef5^lTt$YnmhICI& z0aKIpF8fm~4Z5R@k)3M(lnSdeEUvDSW8Q$k+g#Ew2x$ajNq?tYnWi+Tya9BqT^btVId zxkyINlRvin*#Bb7tDil;PNId{cl3%o;c$!4RvIh&2_mB{B*(xhR1Su>6vfX;G!nfa))z-zbyxenl zJbHNXWy-xGMv5NjM}60KfjBGZj0Lz?A|cOaYzc^Yu>?Hz9{H#8G{R-3f)r6OBp$#cItr<){#rZAYzPo(LgOEGABv* zxu+L-V(;%($I6;Ux)3s8qXDcNS5Z>(B=lhJIqG7OJPojqnpuUiT|!jn)1*3gdD!}(-s8Nu^S|6j8+){1e*$BXO7Pq&;pPY{&dUuV`*q!rY+1DGyaH%F-l+bbo}LfW@t9mR2}1JpQxF8F3n2ACG2Zu6 zKUwmalEdZZ!Gcin3tkh7dtZCsB(4#&C;<(Ym%B9pXcY!X*vum)H*z38% zD$Gv)w!FN&(#(A&aC@tNjPjfuaj*z?YJND52*UL8L9_sQ2@2O?H^fs~Q;3|_dPVek zEtRF;TFURXiStTF+GdJTuHzDkO@z1oht;`oOzjtFxBbc5j#4j3bZ#kx31&(nq=tRJ z&~G&!%l!ETHxpybi1Z|op&51J?+o1f+wYXy8GN*jTp?_Sh5+jruevD~P4)Q2Zff@z z6{pefx=y9H(t%c|I#Lu^(}!19NYyFMGn3Lh-Td2gOwtT07e8nJZ$lAI0RkrK=i7C_ zHk|D`$pUq@xe2W0t;ES(_KT8NqaYV7r6=MX`sq!WQf_&}pz|ptbR8rF*i5Vq5hJB~ zqVXBDUM5eGw8p#D{)=yM625YmrF!)l%LagIA)m}%!swXT2=D0XF&;ZaD~gG-gbE>epGdCOjC?Nvkg^ml(5!;_m>EnPZ;Y~4 z`uSP@nu?_pT!$P)sr2P`u)JSHpcA-I$dUohZ>aa;BE0tfFMP1A_x6f_QHLNy0qfg7}5D0Z62noC4R(S#f{^hGo~I0jb8eZhU4J8Uh==p0YvtRs5PUaRt zlvl>*5*8<}v>*gPoP}62jl^&2WpgsMBdh_2ARJ4IWqO_5u*Qv&zZt zjE0jJHS~xEoxj$x2}EXO2YATxn(3$LLL8C??}?(7&BNOc0q-yeeXxk2$Y-UPu4^hm zJTi`RHg=7~G2#yJ9NpT27s!9M!51x<43`$ZNh@@;cq8nc2r>Q5ot_@j{GlVrpK7Uq zTV6tMj0FeyZkL4ZEv(=hbm!Ncw{|*T?EM*5q|U6nh+=u?kk2x=S-wk2%bR-|M%mq! zRn&@j%4H(l+p?jnD5TB_Dl{=Sm4F(LJymI2f@`t!eJ%fjLO;|h5SJqEby*-eu$P@2MS`V5B4ZHK`MyD3# zOrDYEhk|S`_27>#d>{DKC(C))*SZxn>EAJED6JpDmnH^z1&%O95wmlAqFf{Ms^2GM z;R1P%@m7(2Em{`e#^K1WBikJh#c8#dPDn@^KF*3tI6Yo68yKK+0qW!Z*MY~ocD`2C z@l4hnJo?dRGJM#(mIT^`*}a#_#lS`MENjm2qCw|AIN1Nw*k&yi|JW*cg{1nOJY@ZT z=cjL1TfQ@eU?4olM|F1UHf|VyaG&OqH)J&Z8l(Ka3CVSp!FK?bO zgV4NZ;Bu8O4OE0bSyS9n5zZQJMaKpam4o7CUe1Kdy}s1-zWUp8&+^pr)aYnn$K$Gm z30>WaybVoqRF~sWT)C|kiza`85PkaF^!dZ3aAY_<`?YC4SmU4jKQ2njeJ(K_PBC8b zcngo3&+QlQ%j7XS_ICqZ1@#Zq(I3X+t>sfw+5w)h+>X*|hcf2&87m5(j0Or?BEwfa zeK7Z>m)I;dK)~qj%d8b2g)03Fec>IIU%h7mdm#Nz4G13m3Z?o#3EN@Afj45V*Y+{g zab*#e%CfH9(E`2nkZmlHWQ+mrQBP@QZHCy5kxE^`A@!Ayt`{hhlzA{(5L2mUu5i<* z+9AHdyt@9U`yrboY7Dn-jLFAD5Av&2sUdda>kCjrrt9tgvm|+hzxcgYtCiYRha&J6 z6d!gvaz|%lA zj-#*^SsAWkD9S^IqQq$bT7NTwlS2tbyZ~SB5qnBQOq{zaih(`75(o zyW?dg3#}yYlLIjw%u_Ak>)YO$j$>?^VN3p0R@s{cf8 zkv<1KU;i#I;-K|ki`BcyiaooU-$+8y({k;yYa+~my|YDgWa|yg z6>E{9G{_%&wa(9VcrS(%NDH z5dI1o%aG0`RD?lbm!>S;=obG}&%mwulf(H^NoJ83c?=?jW&cSvAC$R1K+J(_37P1B zMBVV$H3>R*kx%h8k|Jc z`}gYdJPF;ZOB(?~Z6{2opf0J&%W1MjERZYOK*-O_cgudXzElA3i6QzwUd=C;Kt45* zC@MrVbnyvY3^yGBeQf3BghY<2Jegd_WCK3n5_@svs^e?9(blD?2yuJ8m!W5r-l*;i zLgG;mxtZi3Lpim0K^Z~f)~HJC+p@iUXD9DIaV1LQbX0mJTen}B>&%DJ-6v;z(vu~= zT9Fdx9*4#^|7!LhNpx-l_rll6n3RVP?k;zQ><;zlqYhY)|NO}1{h zSsu^0Wi4to6MQ#j_lAG=x*u7ygjv$rx#X$qVZTx5;Zi{YxW6_e%+KQS^`{^6uE2_oDyP)r7m(+weety#i4>E7Hx_N)5 zG3(gVgh&6a=M8#x{@VfCjtvuOP8DJW8@+#Mpf{%@Ili)G?@Tbv%^7pqwLCiq3_W%= z4-E?}ssILA&3y*Z7m(h6UwGw;_!zq;jy&bj++>}qf#SykfQ)ZH&;Oi-=#9UNe~ijN zb7B80S`65qy$*bGiG0_u-%NFFbD5~PQXm|-vDO~a97Vu=fxz(~dwm&A4g40dU-vs5 zV6DqVe~Q*CBi;(Vp~(V?V7m`9=dy%B3B_j2)sSSEP#K~KQ9%Df6vU1zakj?;d)#N) z9i43|eE5uYr6C|6q1N6RdO8P02!otv0IywwdT78Bo1&s3>I$LHz4K^mc)AIc3|!B$ z71Whl6_*T}PhV}-L1jh&2w@~X^#6T#N4Y0kJh@@T1l48}&~+hvcl*?uU3jqtDZO3s zm0P)&?IIXS4_H8CxsZ@vMp`-zs1{j?^7GQ82MspbOfBV^iRg~f$D!Mdr|xGD-g%M7 zy5>H^-{^zhrrSj3hf5A|3Dlqz!7;hp)mbi^MQ*0J8MpSfAOU$!Y|RjLYu`5PQPup> z_{#F2Ly#o5SWo|gciK<4ws9+1vFnD?d+i_&@Gn=kZYA4T+668lQGyIB&8!$KR#%LN zlp*_B#Pro$KD$~RRJ5;us{i=uYjE!C!9@70oxx=3&~4{Bz*K8)`c5esDFKc9z)w3z z@b1iAC)f>9LpC&v^_8<^{!C;AY~z=*R-@XYqDE(L}xqW%MI0n3Qy8nNO`m?ym z4;-u34*;OR(aA#G`Punl*kM-K(XWnnG}@+Eel-`T^J9tCw-+jP~YwvhEW9XMb-{m zG6vd$1~&WqJ*O22fAJimeD4c!rk~_c1P&cw?~jVhVw>Din)JN`H)e93wz?fc&VaCX zaINeft{pD)o^-cVB~fFTomB^~m*qw&@2}f^$Lqi=Hc0ud(K6ZhXc6d7+WN@e5iD;cgq%ZJL+Ffl*Xl zE|MXIFU_D%3GwLW#NppquEEC&5nReTvV6glEqqEkbPj&?fUSmKD2Xg(cz)D*SaQ&I za6STLWsF4}2tG6NuiZLS6-eHO?D22|1cfL7NX$2xmMeo^ymC8u@TNhk=V2+5 zDb>`@Or{bVF`>=GNUQSriMYk>pEH1Ws4X1!s49VbulB2N{T~@OST`)s)?MB;>@2y{ zr9y~?<4sm?-mi^yRaj4mN1G;3!S%?QFKnPbV2tM;MpYp1HO#OcWLRNn;~#g8dm_}+z1(yhtf->g9RykNPW1;K#>`|Iq%nJF4I^72MV4C!qBG+ z{l*&uy737c4oO0ASL{c#FGW>(UvNlAlhai@0rMN;TGY{)(PN;2`(b^r!;}LD zSW?k}U?h`Wsu(nYOkjQWBYKEXaByv-sD8mCsd$1JNx%F1BPUsVoG}@U5yY`0?exQG zG5d?XtJJLPr1|yXC;$Sw@uag@`kZif*qu{IP-TRg8{E0_UB;FiTnnGhC*WVQDTof1g$+t5Aj>0km-Y{JpLJZG+`pn(nC@tz{?lqu$U=GYaXF~ zdg2vg<=1u{*c|G>1cd|m?Yz)6wH&yk^2PG6b=h`a=2bKf7|Oa|Sdjmw?L&T^2h#D< zxs{pP{YqER;|_6k+*a(U!P*}#`#6q)Pn^6)d$QCZ}-8}5}Jpjb&eLsHWN%+RhL~7;4{(U?6qS* z91Pi4Xa=jIK(y-WZ6`ptLX{`tf|E=7;uHf#f6`y=dwPCNF@KQLkXuvCXzvoqIh_J6 zQW_5VwZV(Q{kDaG0kHvf7jN6vIg$t|N%*LOs%h8}5@z>8!s0Rf9fNQU)SOF6fH1wQ z!Zq@;{ACc34QZRcqMhfY zGHBkGkMo~lH8JYpGJa>Nl~TongE@7pby?l|yOggK1{e@gm^=^(ruDA=+Z88*pa6mn zBY07sZC1bfZNNA;p|A&On<<$2pk%MkNGe`Bwfn{MPm3!@%gg~?YznpAB?=K-cW0A3)K{NBcn-P3Zv9e^j$J^h;#!^H8xi@?_25vSw+g}R-(!GOj@FP5`^w$p6h z(Kj&iSpkj7@SV`ktSC(u5<)IM1oaY4Kv$Lv76}*8_szCJgx(Ur3K7Qa@F_`vgdE{7 zMS?^K(Jw4PMMNA}La!csE?uxM(~4H3DCwWd@Zqy*lGv6_TvtL~XoZqVe61Y<;f#ye zE3bwSU{rl7(v0vFaAbQ($$Wy^BTGO3$Hge>HyQHf7A8sfgB7EZB}UReipam++<)~F2wz>NIg*;Dr`P`(@~r&*yE2z>))ye_H^%cM z*s}iQ^fW7^Gh@g{NuR(B<Ll2@JOB4}g`~-K|^xT1E zJG;;jWDwziEs}(UTJc{&SMbk%fX~(-sf)E8536(3-@vo@L)*i=DuHI6`rFUE$gbv8 z=g{V9!-y+pF;{v0)vu*-{8(otP>L4@Z?RXR;PXUSF^~cjv@b4P{7k3y2@rZtw#9Ad zH8)G0lGFkkCCzA|oj}2sKNKM?d~N;DN&Tn;f>nsK@UH{NG#V~sY^fcM-sF*fXJ}-! z()#22tYwgl9}S^}OAQD7T>H$HP1md=^?Cis_ZaIbS`3iy`}i z$t&!2s?+H&=d3P0hf=w8HnzqpUL|IFqr~SEo0_iW_F8Tw{tP__!pSqK5e|oc` zlLOL!_*pzyP@VQvVws>RaIl_q=uoowg2y^ZT^(2m^mMtjdOY1od-Iz0xBeFckTknB zCt^RQ-uJ5N9hU}W?T^I0m<2ar3U=>on_+b*i$mIC#d}~P_|bd`qPMU4f97C06GQF_ zZ9N4MJz!j6Jn9~aO!Oj~n>QI;pxJSeq2Is6@P32Zoi`nz!p?%{5aC+j6Tey#F_9^| zM&eCg`^3lgxL<)n^w^#4Ne3sgqt5BP5UGCKjFa%@nhIzkRUY`jLNd|BAqYC+dn$MVmfu+khU0r~CD z^X>7G$eN83O_s-uGvC(tZLe8bRaxr)Sv=j7-vcp_q9ux?2#Rei##|{iw6bKz|I8cK zl{MqpjmCx;OtoZml$=HvdKa_?VmRKsq)(RlGX89DZRN;ttrchkw@r5zS$A0)IV(@8 zY;6llcR4@e4^&6?R6CA4zf2jswR<`{EO8`6tPtbjIiG(AEc`75 z^i9d>_Bgt?dQUITgBdmAqDvWh-_r;>a%OiUdh&vd-mWw)gdOKLDsFU530^dedpp4k zX@vSl#dwcOT8h&1c=7dWKMLI)1x&E_2h0c>0iei+Jx^$swzpZSf|yUcnlj?{#f*ri zS;*atx5D8JS82n)BGX(gs`h8T`?i&*LiKMz)9ge`OXW#VuU2Jq#B)SIj(NR`<^Kb) z_t3B1A?K$L1VtYc7W${Qj~A&d3XvHvEysDx&1W~%X?6z3P|{`{me3mQZ!QN3mG4*> zWf;vx{s9)fn}(?+MhUz|uwngtz7yNkh&Vi#A2y3EYWje>-o3Us+Li~q7x`w#Exi|k z7`^XWLzk;bq;7RlOt>U5^Bv3)2T(^X#WB=bj06Lu2Nf*=-w|E_K`3CqcSI9;FkHcIX z@o-8oK2LntZRevW7y4;Y!APRGQ;~qf$KY5gAuxJ=DMC(Ig^NPiJPC7%tG82q%5|9_$|^z8jeNmsasWBH#t{06!?Wy5(()QsqS4 zT=E`uRT17Mt#&T#AU|9OAd)E|5R!AtLl3gu_RQJGvH^{@?%5+X=+66&j<%rhF1pW! zpjdPl?}KtMvXEekoKp$_nmVC4a8kp>P|RVSTU^*qg`)c}KCATV$I-dxM^odyD+Lb# zGT9T7e3bmza&AbYC9}CO6fxJ=0@Z4>Qb5X(mW1?V=@o|~8WcpLp}-htqO*T`8+G@d z0lbI)m+OsYE;v2P@|4fzCT z?G$~IixM}sj^G+8@Jf%Ctz*VT8T-OyiREd|dY;OzrXov1&iKR0^`4`muiE-swn69a z=QHO^w*@4{^N4Xo{ynF3G;2oY)a8&)pnNtA@TEWK3_D#M2H>WsrGQMCJMh51Ww<^+ za&r~{8*@!urMPT{=JYyWEi81f2GcaO91#9Wty4je=nC>@>i{M$!ZkR73M& zI0$yo)6U8RN=UK-Y0%IB**(O_oXq8jCekpFgaeeTkn^*DXJ`MKo}4aD^M42kJ9V30 zZ=znH+51e3D!RYw8{|_@BxT4I*B}0&zB7$?D1(Xd+B9w0;cWSG)mjKvnNtC)Af3Sl zySABi>c8&2sL&;LBrN~8iJ|btw_GNMST-6xlzA%fAod(OJK6SuvmeOoJ9q?OOgv)}EGX06NZyv8!4BH(DtVjFgI!ytVq2j3#=gE{87y zF%Bb{urjqKv6pKh8F5Sc$xuCo>X7;4AsGe|M{=BH?^~AvvLKIFye%PZvwam*MXj zCg(nz@lV;+-O4{|{R2(O0o#q>uD6$U4l|&Wf|GvNo)`bdiy#;c^D|zFzXDINqR>vK zq3VmD>&u&g!0qHg1fZkj*G(YA8muHApkWw39=pum?)RP3Kli)wHGpIardQIzv1@8X zhUSo_Ae2fuQV{`-6H9wgQJjMIB8v+p>|WLgP!K%?Bft9x^$E}$A+9}duYaBgSrf)PTP7{W~Du6KM||0{46al)6>g) zCr^A2Q}Lm)-g9T>^tR|OAets8GowcHVUUF#du*Jqby)L+-iv?xi{N8!2Y{A=CrEf9yL$0Z)d?kz+By|rjZ$?V4=>Ut zmsLN9jfb}BM(1P`$Ig2?kDUOZmGuw#|I8GI0;OMw6sB6PAb~~;v|)Mi)n41CU+{7f z>59xr=EsEk@`1+3c~&%$gpVp8qbc~d>H<75J6k^)IObrB%+M0_N)AdYEyB$}j@gMn z|H|J5E4;_ZD8^t!*;W!2J_j!+BsVhLzccWF|L z(rmKK{EtNEt3C|#YG zO{q2-IXO2vUmVR3@}%WXv41#TSHvhHvi^SV&HnZ4yK@}%vVPFYMK>Lt+E3Ap<)A-Z z6rzkhQcgqz6TP~SX^U8My&0c0n)ufBx%(pIXPyd#lkv(#q}xwa&j?w{SVvR65G*6m z7r@t=$1iT{JElw#Rq=>%cT<3=HTt{+M~2fRE_ve_p&z4-KNX^}gUNGqBkI&(iw6d# zH&~;buM)F*JwHOmePd)+sA?n{z_vE4f-@d78~g6w=np>v$SZH)QVw?jEBd47lz`Am zUBF&j1jjb8LcedQP)>x#Z}t4P>YQ1Jiyp9Lt!A|y09Zk{f2>hwGgP2tOA)Zp^VR`d zE1>3&3aBfPVs={)%#sIehhNfk67^4jKg+sW5bPhuiERtqCm8>&w60Di2SOdx4FTm5 zV>x-%0Z3hDl`mM`R&`NmyCiiOm+-hTF6Cg$15zZOt9}lFVrlMb6MZeqoQW6|L`ZIg z@TNcW?0u7?A?zYQFH})V9dWSzpfu&TGh3dL4J|(@%LBU z4Lb-s&f0UHk=$$y8lkt5L`wsZn>rKG|JrVoa9||p6&~V%{GHxd9==dMVQJ`iHm-h>$zgGS z)qmq3<3gBtgGg}Tc42uc_Rm83W$6BCsgI|R&sX0L^vcpx_%5f;*P*VVe`{;$p7y6X z%k`z)#LeG=#qX!oo1Zq#tdBYMI#CAGox&mcGaG=JMn(t3-o+rWW(`J~O5khKKl{P5 z?sH#>3n(5+yXBhZ6;iK!J0P$=R3gB1$ssHqNV#ui0vnedxLzLi^6V?^y5OVT9rfc~ zp18lN)W82u4->);*4Nuk7ya79R9*)`RJfdI^T3tb#xK&qj5sV>wIJGqqy!}*jNq@O zhAd${tHr8f&L)X*IBznvM|C$Onh~U+@R@+q!M*K13+I$d59QKw;$b#a58WE=l~yOi zZv&y!&}n&wJHbmc1uuALOidYM(fTF$w&WAgODH)UO$c}sp{!J5~wcA=hwDgPb&wY5- zV0KL12$iY3-g~sRTPx0thiY;VJw%7sWJrTOKUBh$hA3$~yqd8u<>+`J><~{m?Yu*K zHb=kJo;QCv1bWvFPDwv5X^h#KUzM9*!xhd3Nr|8CoF6d@C zZw6f=2T()cSM{BNKeAg~B+H3n^`TkmeDlvuo45>3VT=uAi;tc3{d+(rAYb451?1S_tvte2M}Wq%bi|!l=w}F; zY3`f4pM%%MjeNFHg&m=hz|3Oc{HX<`t+;7!tE#eeKTLH%wXC)}%g>5vRPyVCGEA@Rqe1A`E@lagS5uX{rM3zI!>WB+zAb_RS>}^&2Ty(fX&&uw6 zaNG2Zx=VR$`fxO(8CrVviU_hyP&1!yoY{5m&++knlr}6m-x#IhG=Q$2j2r*Ew0-hy zv{H(k^BeDt-LnINFpa-Pb~G68BRPh8L;bw(iyYW6n2f$~ItgsB%&wn4gGK@OGrfay zyx&#q!C?Wzkde zWpq{>CGR=AO50}^d-54rD{901+pc{gGD^`&4~jmFzEK5$X3391_rLf1Odm~#9RTdT z-VOZ`7bAKLP^*WI#>8wvI#_@UYT%|pFZ)+}#*lP9l9wITOr!5TkCMb7Ctjt~*&-s~ zZV7L6EcUzaq*PiyeH+m5ScEHIU23C^z{2z8<>D*Ko10Zt+LUVCfPF2iQlu`20XYMn zUvEcHqNoJ}hOmyiu&Z*t5J~_YJ)EB68a+Yfh4%3RQESylMJWevkU*yyp|3v>*Ra1_ z51_*M(a@%_N*%+oQge2pSy#4M2W&H(UA8NIiiO*YjwSjt3#)X)2Ni6Tr4)e|i=m+`QK2SvO4=K`elamgs~3 zi{qBXFbT2O4cl%zW~L2_j%wU`w(E7{tDR@4*9i+Hc5GZsIxHT2SNciH7?@|T|5<<_ z{aB`qTlQ*;IHL~rbbqvuj&UIWZ#qxD#*(K14s_39FkQo;;722)n&oPT|EljJ!n2&- zDORywF-V?srp%`a%Z)0uNYAZ1f+TSf2T5se1}ONizQtdz#hNCP(klD$xyinhL9Ih? zhWO$K(rpr9$Afg$@QN{HO1N!mrYT@tbXogdYcbDV(c4Q;miU+6>B%PB`xSkd5x&Dg zPm6^xF?_Rf>ht!BMc5fV-!6&@kw^@Q)tH`PbIyRTeXsF8@;Vq%Kj&-TNR4}@@PtLj zVN5>Dpu^Iw!hpImzFs?J$ST@f(%U0&o#ktnacAJsU%x;V$ol%a0VHACZ?@T0O+Q?P z$2f1^+c+H_UzoKatg1HlJMlk0S=$Jkc7yvRsrtR1s#IXdi4A6Y-T9`1LZ?E}?e{r_!v>bJ<}qDk7(kngKiz1PRUs(cR(dWz?b*NKXXB3&iR zB=fz=Y=sTpF-dJ|G9@2%ovArV8ZWu{`vgC&oN>F#s;uVvq2J(tiR zmF((NN9C-rvxO3#G-<~;XDt@m#_5aUj3fr#cn!5`#fIOOs2k!SGs~in&3n~u)7=Gg zTn7dsnFd4_qXbs6QM_S8D!K7ww=1LU;e)Q7cT%-li-^Yc;TNi?y-~k9$LKkeHzm&b zwXN0eQmKQ}vH2J3Bi9V&rj-pgFXEBJYoXjTaE|Rrx6%C8??c|^pfKODjv)i(IxRZruJM^?*xA`&z`6Xhzeo-Bh+;r*-b%X;l-c}@6xfid?QC`z@;yC=cO_c z;_t@dgWp`CGp`;16HsO|)!VYpZ9f89v#T9<#)tPD059D=a=;T)TVjipRsz~%6<<>KnB4|X@W7RJ5D0%fbum~qIg1hMHGgdxPH@CNoJZ~Z=@AC}y__Vnh z#^2yu%l($Z%N-OqzIL>b*1eU;ELG(Aw!iH3Ps`WszvE+R4|1jNOIJM+Nd5E2;SYiKH1Y)jUZ_~kL^+!sQu*gL2n=*QYwEh4$!*%<}I7U4y#@N z2AV&@u(64us1zQ4sRu?aInB$v`^U%6l&zcJn=r0jCx|(fOuJrz0uYcL-~5Yl+Pd*O zrQC7aIbsU}faAu_NjbaR>upwXaddar!-@|zx2M%1Y>}@BvLib={|Lp-Nx~gS;@)NL zTn7tKW%;p-xIpZ0i%CR&`a;=6e^*!6i-hc%YsI|!qAmV=1yL0B!>)r5=Mij?K`~~s z_iBNbD`mV*wuz;Cd86w!%22S{U~Of!gqCGy42spi6um3vm8 zq6YsQ@5OczFSI92ds3MuMbsgwaNp&r73o$(S3k< z^XPZPLB+FV_e^`B?_8Z&R&x z1~>tG<=l52l-%HxEx+45XrL_PKp+uJCt!)m_MUdE`zZ-v)~CsCjhESSJE|@W`s5Wp1maXViKrpS#95=6_l~ZGDm}h6H!Q-e1Rf;j$y=V3hgT}-&=lh z^83mBIIaRP(R%^-tDC%+ME^5S5=FlM;dXlqJk=4zrqiA0nia7X?XB>n(%sFms~3!I zu*Tnz8G113+5`|7ps)1AOV>%WvyzHgC_NG)8LgMsUhr(%@_GA4c_79m0#7hQFZa)W zww!LfNm0eU@9YfQnC%EUAQy1}TXV5XH}nw$zEY{v(dVk@Ig{0P*N$aL3K6L%_Zoj$ zw1&@Pt{gxzwFkFYG{*Imd+kh5XI1~(uH-^0Z?My5*jSmc_;$RBbypayUKObQZQEca z%X0S<#>aYEKoFzK!Otp&T6s3TOK+z2zM9AAx8*&I3T*c+Ul5!1s(|Q3bE9ipb+)vV z>zLMCTg2V@&p|ynL9cn@^Ub(~ck0KKcM27$J6eNWZ?r#Zm4NfSHgG$btbGBYt z(H9nB-7?>DoQ;GQs88Tbc^ydBclMv{Tdz)7Z2)HiVr%C zGaMDY`!}RCOJUR^U#=`*+LbpBC0gta7D;5f(P&;lFdWkYi3$sC_h~pAYITj-D3w+C zJsRgTFV}^m&EH)>NIjfRAARZ-{KDw(d)J6>nOnbKv)w#jFj5cOI+DMbBdU#u8<^%V zxoqYLVrag|pDJ|O;SI*biy)ZO*Ffa_;?E!k^25w|7G4^9_cuM=5&e7XwQ`STa+bBc z&ekeM!nWeV+A|(ENMx_^U%r^!Wg|U!(U-G0ZXkf0W&bbQN?gMXWl~5!F5a77cWkk` zp)Wc=w7%!?2E>&KdSzTjCKywLf-F*vcaLPOB`MK%b?b{e>nZ!9}{v_+SkUe6-sCC_3{%rvE>V&plG+ zD3g20kz7g0-JFpU$rU+s%$fVXvY1=$qlk)-`=)(mNG6SmWoT*`=Dv^L=QscF4}9LA z_v`t3KA(?-PDE{h3859^Fn4uWnH(p~#>GPdqlB}I8CbAZu(==;Q-4~AQ)n+ZQ@*a5 zQ48pW0v8)rO6tHJkn)i1|E`DZZuz%72_wIZ{}~t*tvIcz8n(G&t0TgjJ zxzEf%^W5Uq#)9(q&}i*aGH&4S=-PGc;qdTqtF>n2QDWc?(B|OW4H^SaF$UR@ovkek zf_KiJS6AXHT{Mom`VL*nv&E?zS71tkytF;-?SR?rZrqGRHfsUi z(CUhjAx7EF*8P@1dK=*e$Us;Gj(PjBt2NO2HLD6YU}?@3W9aOR>L7k9Y&A4Xj44^p z`S#7RcqKv^ikO<^F6%xS(2P{+s%5?&>vcXa3W0=Pi@omAi6CI_G|3oMD&D21R%Cs= z4N5=?>oI{K%AuJ<3qeknHK~s!85&!i)cn(s^afZP;e@P@^DHrj!b(NfpS@ZNZ>>p< zPK+;XE)PeFZHKKjOW$>lQHEC8+10zQQKNPvf~JMQ=oRcC+!-Pa$z)?CtuwM< zancM(I8@~8)PjuMR|7a`h>uL0ssF`b9C|k`rb+kKob>JR@Cs=YMqR)2lcykhOuctq zqjZTeCgo7gFsr}6AMQr!^suggXNr>`30Va#b?zRdR(U-ZFU8-SI#%Rl1$*g#b~ZMo zl0+zjUhk}z$k!%Z_~4)$W!K0^1l0u-il}vl# zV-4ioO=3PYV|lWHqgHriyPIN-`Q@v;O7ihU2xXaR!5LNc1|H}kRTsW|4{Q2V$YPbh zdePK09bfahzn)x$p#~op*fFdtRaj-FkIYBogbyZoxDxjM)GQAQK2;nMYTrR$WYR4q1CP%u zFdaSFRuK9>Y(zRag;>272h43xui<&kHDty&VJycLl;oVT`MRd52N#RiZFw*I{(gjX5 z6Bx||^q39=-8400Z8$y1PAMuH2y&Xi1Dq!(o08AN@1TojM%r9kYNTQnx8f!&6PcNT zr1L#*q-qzhJtn_8gH;_=W}}BPFkBLX(t&`5IS-sw*l~3 z-k^&8Qe*~m`BL#+EzAR{%4~WeT4hYf_SgK+_zN;ILiD`(v%IN~Zp4hAp@~)QE7+@U zu1z(=AvqGKTLU8%{Umd8QurVxY@|R#CCc169I3!z_=>BRZT9R8jXv|sOjouHY+4il zB)BfflB;B~q^eM|PfQ;aDGv$1xz@Q36eos?-2|R0`<*e)6@2`*!$4WmfR`3KhFmG4j*SZ+Q|y`vOP^sYe{l zkK6e84G`*1S8CiWCY4DHrZJ2DEe#mom-y+Z-v;m6r@ga9mv1523xb7Q{z)sDh$|}y zY-JrgD7z&kImx_P19~k~1WYj`brPz<2E!}d)o5;%yx_aBwm+w$8TqTVR6aBy{6ZFZ zX8K6aAp3dtYaPjEd~@yQmDkc7x2o}hQF8(-6<)QJ#6;8q0y+NZ<`DI6vY6-pfH8H9AVm8`9p z`!Q>8E30Ynqzz_ohA8v#3$7U&)>?Vh9QvnP{H2w5ibTLw_+7xs(h z;S!2~uWiAEJZi)IazMPeR4nH7>4L@qgoeimrk#L#NIeP@7j)t>!+;?TrV~zZkOS(% zTgQ!9Tc0*o8u>74rY?r-;SLs1JOXvN=(&e7Zu+E({Ws6-$faZU26}gq-wZjw;#$O( zY%*(W!fjmcEx79C$P!nK4zk;{Cjq`P?Luv z6uA%z1|0EaiAudNoorjaEXO(8H!Ov88v}uyfu2A`2~16;FbEmi?jc`Haw;N3^56wxtw zX{C|7r-z%WTNf_7g4Ew%V>uQ0_x^nT>E0C7e6R(}?S^mVeUya}WVVKCjCOpqI_`<|4w9Hug#25pOUwGcvM#7;RqAo{^v-@+A zTQbVkQv}SX$Gd@37TF7#Zx#>pWNmN6w2KS!&?n0r$S9NUBp|iazkCTDi@b{jL1^U6 zGIXRqLd)g(AqFx$axb5o=*L32Q6JSz3!G89@U1HBWlf2DuCccp?OMk5lgpKQ{T5?` z(J!BOIIx3NjD&M0h8RK}6SNZ8ixXQ#cn?C(OD9|&1=~5zbXu6Tl-ShI)Vbu+v+q>F zo=k8I_WLUiG3ZHJq~F;QsF!A9|Ik!>3w!H31IVM1z-pqd% zOicUI0kM_CNYI0p$og_G<;^rBkO7!>&|+-)HhaE6eib&I?=-udHoJUZyn^&7;{ zt&j(4#TO9>1-o^&^bzMVYgzL@5lF6d(=_(C-x-arMV!bnFG4TqydzSeul-zmtof;e zW)7OC@9ovQ+QY~_gEW8MmqqR_Z4#0Oj}_2|{zoSR7hck85pBoV6Ml9gJSj6;SZhw& zR6UZvB8Se!Z?Rcf0j>lL6xYJ9e_t5>2EwP~RfOfan!ca9IabJx3Qe&KUEk_9zSdvt*JV4ZM5r|9hzYos&Ndc5*x48-=}gOBxp>-V=Aw|$Zhfn` zvTe!}*O|mNHWzvh?XZ#dwxo2(ubnLssK@*pUuKqXliq;9lT0ZYyb-bW#m}M~; z)MbZC9tP46-~aOpy=DKM{yA%ee94Xa8w^*h=&v}@bH}lz$@#*uK;^O?YNxaKOU7MM zdL$PQ#Y)2<))AR}59qQOgwkcs`zsgwCK9`VmAX$nC2b!=DyQeXdlAg4{Q}=s3f9%a z2lxn?3Hj8f{-}Y3U9uJ0#)g_2y_ff=W!I9)8}YCSMsRmiP;0mBkw9YsC>EAvfWFe9 zrcrFbXw8gOf$ibKYpQj=pg((c182zOvtW|+HO!bI)~W)-3r6y|tHFB$_LPx=C6 zlsFw6z8|#)dXCL3pdI`_=dm%;wtpmO{b*i0JUk?|5v7vS=}HL zv^6e0H^rva`_!?Q=SYohY0F=|q!$rUm#9@)nGS`XU2$!eGlCg|3!U@m_u<%QRObH7~r*gOK{S~vwCxkJ2P)x6@0lYZCE!6=f zj}Ju5J^9#jANOv}!_)Z9uk=O@bxj`Dn{d6S)=XFivf&1OroK+HeAd3k&S!CMwY@af zr%vVoL}9|=!OQu|#U5jCpq?26+{loN@xi6Kw5TB~K42lF<-)_8x&?Q`v{$)rsmUfQ z=q;&|df4EB2un(py9o}O%tZrbN$5?}In7%moe-s8o1M-s$$l#HY`lj(W(wDz?W>IT ziM|?hmdf=iMuJ|jdtU=y4zYcs#U-gH1J8A_1)G+7{*YXfUgysl5JDiPW`fjhwvcn@ z=>43W?L#&C!ZGr`pvEuhTtr*w#=+`_bEEB8owv->+3ru(fs>PXD`bXfp*&I1#BK_I z751q$kX72GvGo>6PU2qWEJ zAr^Vln{a#}KP-iP+H-JJ#Z4X)2ThbJeS9uvjkGSYt(n$j1qf z4rXFo;QQCaxj917YV1<$u7A%Ay}q@J(KTJweANEIa*w?47}u~UqUb{?Ew&4<77?-4 zBiLJSR)6z+qxSB#|C+eD-N^morUGkJYM`BZ(I`Np+?@=xn~K+#qA$d1JD-BOD@gHL z*zETP*!G&5>(r&%B-6A@*et~)=oIA!yF7-CEghIYYCI@$cU11U6R&L4i9@w zHBZg2r+&eSrhJ`gy{scAs-?fUB`W#t=Mx-H(PajqPmd|2Y@nJ(7^61UvyWFryOdro zra-iOW$4EgMpblJ5jHKYoLM4`3l54r)WDKF1$W*@x!F*5NOy3o8ksdSSP9B|BiDoHs(~>MZkCrmi^I zev86C7lPH^f?>e;7e}7L?x3a7D%oLr!A_Y6AhgTVMPlM^7~wI#0}56Jm^-BsdNJTk zAv1cdMTzzd9Ts6>y(^i1GL=ILC8D%3Kh52&FdfiT#{Pu|M(aKIvf!ST&B^G0R;mIy zp;BAM{_8#a7B00d!U+P88Di=vAbAL6v#K?44JJgJ^0_N(>e|emv9mFa_F0ulMU&&E zHJzni)yckw+YjM8#Qh9jC)CZloS#M_LU(gTRmUaCd=MyUC=v1>6APRx)=!{-J5FWg z3WX=nH|#tlI-0fg+TW*HOVeIbmCp--@l@2XuFl>d)%H)l#>wBBqP)y;Uqv-F6{(b1 ze5c@DEHr#;ad>=OnBBPkU-5|a=<5l}WZ})HR|Z1VhPR(>#M0Ea29~<`s7Dn)KV2Ol zXP<74qc=koIc%?~&U&xRovw?V9n?CJT7@E2q~hHQ-~VP88B;7RPSZTVirhgdRm)DJg#dYs!+U8qV%%Kwqn&YN>-20g3s4wo7B#?Qe*+X>^|EdN?X*~ zm@(O1N<6$DeosKy@R5@=`@hifpgM{%N}|2GT9tmqnpaI#KU0~+D#s`oQ{HrmCdF~S z*50QE>Zi;n+}PS=mD^Se7=JA+{IJ-u^wf_%Z3s_EFhHYf z*2gUYAZjhgCkcN~6SkebFOu+oUaW8sZRR5oCV$!17b0PX#6F@&+56B;TnPB$nY|Rh zV*WlfH?WE`&Tt^9-^~3jXJ#c2S$eDq{h6!y=1Z$wDY2ZiVmgL;G2ox#F2O71le09i zK@fT=9RgG+TX5=Z#0q_@t7r{mhl1$C_=ibTgHunN`wV8(C*P+;)>sSf?^Tkz8vJ}F zd-~RDxng%?I3Cb1^+oS!JlUd04rTb6!ei)>z?6RTpCojub4jNDX=O(#tA3j$PIQto z>Y;d5GwdX{B^P;RL=x^6Un1iz@*fc$`_o$dT|Q%8efo*zCa}~_G+sUMeQ~pI2_?JLQ|CA4Q`Qr9iiEx>yf=^7{Gva>AOk)NUuMBeQX6 znM-fm+<{)~xnO;d1tQ`-)sp1hocG>v29E$cU(Yi@Jrwz%DA^O=AFu8?>!`v8Kw8bN z#`1W!g?^N9#p8*>{%^U!jMCRRKUUqgLF2Sl)TRZ2W?KQiS>EMm&q)Ko6FY^IweM~R zDB)YvE!*#$*ZCdFCTN~lDir|={>H5?i3E@X4fNq^!BUT#11kd=VJTjlCT}nt&XENv zp9#Vr1AL;$#fOOe&~mLD`XgMBR#KQQ5lb)hF{gQ4 z7YVfMsgsMhhoEGXu$WznH0{XN5&``{s#I>iV*HK!N@pFRwcx%_qgtibmp2|odou$= zdKJQP8LAx-fdK)L)8`{cPu?I1DJk3qGUC&lhs&qH{wXS|^{Fh4h|{kY{%76M)YY?T zb)VVMNr0xFLK(S-8xNbUGAiRMd#x+;`ed(dPAVl!P~hE%VgdQgjS7-xZMAQ`wEMtLt@!!RPGtMm=X`KJY>TrRuxg;Rm(yg zbKcd{JNS0j=;(LKP7+E*-|~HZLq5GwExEDM`PY_3crKbsh)2Vd7i$NpF3WFj5wz?I zU5Vo%&6YkUP0NtK%ZG<(^ms(WcR)|>9I3G+5*9vd?XXL8%g3<^>;1_zC-68THnhQ+ z@BfB`goK?et+n-T<4=P*jQ{10q(|*_^_|OV9!{HToa_SI)-@l^BI13@w+D-GmU7nE z2w#-0n=!7rIG}t~2jC`~F0-F(p?ap)Lh$Fj)%BfDz z5eScqCLI@wCyjy-oDb#R;uKAq%jZp|o<8kWz;OL_mdp3W)GpWg$i`Ezq)<{)>Oz zeG{p-f25O7)b~0`74Lt5x}&v5G)`dXzXf9SVrtTrejRL0f+yLh26bRkKe1y3iWvf zW)D()Ic3OA7KX?z)4?olpOc+{u{l%_CI`Rt#qq094#eyw7?XWroPkB2DC?a8Z7bTp4tZ!Q-6!#C{WIsB5@V<2?@c~0>KJNsY0Hv3Pj}epN|IA1+t{rs!PBEZ|NbfI zNhO<03BEDGeVPfvGS&{<#XeY5%vJz0vJ+fi{9#LXB{K zfs)!Q7hz)@>H@_%{eOZ~uaBS|ZoeQ0bjRp~F8fwbQYRY`y z|F!9S6TQAZ7j4jMBU2Z>J?x;7P0=|M@`>;zjL_$_{ch)ZkW0xJqRMHhinkPym$S;Gnk7e zX4lwKP$DLPJ_bt%V`RDYLiip>RfZonBmoIHl?|SP*(>s8TitWb=r^3{8laUqMy^fM z&F-Jfs@Ec>LMwB=y_0YCEP{r!9=05#GC{w1_gXK61>@Vp-{}Vj3vaHc1|tIVx*F%A zFJ1MNU_@KlKiwi;$HwjdN)k7EUfX>^Ud|cH7yFiV(V@BTNkN@wqCsT>Jg>%OcOcK6 zU!e4w;T0XtS;ne1TwN`&Y9A_G--Yu_9{ z7t5Zn&YcR4ZTFpT&YAA{JGJqA9Csdr%J(SQN3|FzgoY^@Dj1kud$(6*D=_p;uD}20%U4_~ck@IW-G47E^tKEHbuAkc0$U%LeT=XO zWbLZ+^zrd-HF4qBB=Y*SStPoh z9v*OhW;59;$>?Zf=TiAMj(6lX;n3sZ9MOw@>}<#W^my3$=lE_!=<%uGiG%t29a7)X zpQa*0m?Bi{X@4Ph@IBK$+g#Mn*=f_@;^OG&pJj5>d;8Pv!Lo>m&;XZ+0R~Ow;lBO( zgW2G*cX25xV_Rwhf?`DVfzJ}#qGKa1ibM|5#!S8=eF#7Mn$Wl2W-U1JxL0neXD&1F zcz22^u%~ChKpymm(rDIaToO+BF$EgGGz7nEA5Puc@0SWZ)jDZYLQHRy-$nL6lE0nq;QXQe5tNWfFN*y&~w{_ zpa|SZ;fiHrU3GUfG&I!IetY2|PPqKRbV0f=J3-8uckVR-m>OSd?{Ufa^IsN};e!Ki z02Rz_DodMJS2t#AipkcVLU5$Apu1c(df4NxbF&^IztFVjaKMg7llo>032nr%6Y=P+ zS#0h7`+7B_fp)j-1|yK-@88Eiv*zl&Ng436nz8`4BbY^9pfN4LN%dpC`JaV~&7P)x zNtOH<+zk;KG?WfUg?<1;h?)ONe6>~uD%UZ$=u0s!l+ zT1+C6{ggEB?VD0B?gct1nQcdG8ltM)|Hb$8pQ^hM@+sY2{9>4Na)W<)iab~fgHM1$zLp<4f90o zR?NZC%F?>UuJRgI{UzkcH#oTE^hPH|jT)6{_l988WzGT+5AlpxtHNvWr$)@S55QHP zK*c>h399oM>yMF;ONQ_n%8L5`i(6D-AS#t2nFOcSltz;0PX38_uK6nRUBblvj?kdi zlmCw7;b%r&n?{ny#>Q5{UIg46ZF)Ozh*QEpD7`r1sCe}vcTMLEo~}eKYNynl7dL*& zl)jgiep)pnn4VnDiUzvPSO0CnbjYeQ-S4#;C|*;$qNE?80iXNMyXK+}xBmV;)Am07 zx9I#LEUfp*Z~w&jSJkam)!)PTyIScSKqLb@D?l_!d;qvy-LUt^nEGL$F#Rx34hnDZ zWu1wPYesjbXcZpcEhQs`+EMJ=#$#1CwR&$)i*Lnt?`tP#(S}pToybn|(7b`qd}*z_ zKdl_lEo<}&^sP#lgEB>;n$Gg2B)Gcknd4%0LT>_fiHxDhRfY0qIjCBdpON(tzlW<2S z-s?tv>J#=hsF~Qy(5wq-fg~AOwI&g1Wp`{|9 zd14)FB`d>AYF+ZSU*TEI=jBbcY3IUq75b>1~A-2Z3Dj4vUVC-fBip)TDKT>KQ$tNMylHL>5G)g5qpjtdNHB& z;99%2J>UTibKyxQRop~#dNRv9cVM?+^ggO%9mb6DyNw@zv#40Fv|pkzaVnaTPWmev zLM^`4N;3AoeVM&E)vA`XJRQ|i+wxeLUQ!hBpr{wDx>*Src(oyNU+XX<3u6UX)4K4Z zZh7)x$%%z=4R~KIcZvH9rnT0p9ym|JN0O?l^RNu)N3~o1@fCj??WEmqPX$nZKS&;K z+nWpDSU()58=fqleX1FGIIb_K5qUNl(ONi~8ykxc`4E!%TrAl=?1b2m+C$=Y~}bX*=fBEthY^$PMmR z*HY)Y1f7aa@?2DwT;zW$vI(18%uXP(-W7{D{aIa&XefScF?oJ`WVf}l_ZB^4BU zXe4zFCZ}!D!@-ed?AEb?j@T(mZ!H?FBEE4Ij3DCx zVwLGVYpT6%0@|a^f!9wLJbmSxMg&F3a4=M(c+9n`QVzK5+(sY!3%!7CDZqb;ie*jN zxpmd$!WL|qGx4wO>WjYJwx+<@7})GQiwC-)Uy*i}`d`gm2qp-`1EaDMLD~>xFQpSM zZYx)Qa4=5LF%UiZ(xocb!)j&g&{w0-W_ae?t{;W)XaxXTTKdZp$|E=gpfBbwzjy?uR3THce{~VRV zCkv|X_dM{A&?w|vB{*P`DzOzeUlU%`E{mqPb17V*#eKg2>EdJ2 zBr0>RaH;DVYQt_8@4BVIxn8wveLZJsTI+dEl?rA@Q?IMg@i6?I@WLNVrx0Jsmp+3^O5HL?*$LJ(B%~S3YFh zSlfEXZsdUv>T!X&pMud zGTivKDdV3Adb{zLr^npHm2#vuJZ`=aVgMe_xQVF^bg{}E@NKXSEa6FGM3Fo?B$6F{ ze0&rH^8RjE_8nz7ejo8_vP)W`k$+SX?nccW81HFnyOv$C={zLn%k%n*yaIfIRd`E5 zP{|^A*W*@CbzHxPCsX_|!KdeV2`wTvd2+aCsd>DlAAMR;c1qIhjo6)dbmuCdZbjP` zyZ&_+<+u!e#WgkRg~R4jDr;c=n8bNw5mA%GT`5K?j`ej8^7FJed3*PHa~{{gNqJZA zhxkb=)kU=<2MHKS$EYf2)y-~SGyEVyVqIsh%h1)QpbO2?rQ>)$@2$PhwqE>G#ta`ZT-fVh`xAWY7@kQQ`QMtNqO^LE5r1CfC zTDjb7yWcW1)#JulO);7B?6%GLV7sY6J@9yt&@bPPr}Fo8vL-S|eiR0ZvN-IeZ;vdy z9SW6ieKB}n{XH(DyqbUAzSGGhK|8GdlW|cd-}Cs$K=5$p6;8iffMM0!W-@R#O`l|5 zMG5_TX9E?8wGzyh4%YB)vmql?jF}^G`K?v0+QUh9bYMe)+~SnWIP%zu6m-%y4UGdR5Ut9lI9_)jhr+w;lzj*(V2a*O%|6gfG zENcu6r;HH%8Yt(dhN?cEU98$!n5>|Uj;93E(q9vK?$Gg57iTRfbe++{hIv>&dmM<_ zy)Wy_s*X6pXOBPkk>lgYRo{<)Jq z%k0yI=|gl?p-MWJF8;E=GSSOgFd>~X8T7EoYOSimQPCi+tF?AT_bpp>pgNY#l-Q;D z9Y~-ZOxFXN&%kaIrHIh#cXdaOhxM9^HA_jH@m*9yU6-Qdzip4MTUdzOtEMy3T;$$7 zx&S}zs4^mEnkAairu4$DM3kAm1@T@{>Z8pRtiLJz_@fb!4SO6w2r>Z+(Srt}Is)c< z`g*P(PHm?^<%HUKCwemPt_$UAa<%PUau$CSbo+PWxyqpToe&XJH*Yj?*EQHGyyxLS zZv!YSNwD3)%qV7vq47(2xlCqy4D{IQQoY5sqwJGRNaWzutkrV#<+bRG+;a>`JWjE{ zXW?3s7P*zTZhQrOQPvlB1}fn1#SMY{t^+AXtr+L$bPrjJafdw>b5?lH7j-+q|{7(JF2<(o>&}xmKPu?HtfR-5L*!V6@kJ}yro9Ji)H9sr zn2ZG$GkDnFmd@j#7|Y}u`Fyl zGA!Sg_ThCZksZkj_&0osF@89t+e)^+Ue?}DJu-xsB*;)OFSF_3_OR=nANS4uo+JCd>4=sm-?v}| z#xGSDtTOMD^DL*hYj*hxk|3R}1;&?>vVmgczJsls$>YkFlateD!-3@p*J0g3`SP0E{kOx=H0f4?Zv2k2)a<&f3~vWa_6zY-r;qfE~lR zLx^uPRXyR$mgBFMvxCKx`FSrngFBBVZ77lE3ISJ|oXveAErKyuwaT1Nj{aE`Ugs_j zcnQ>*Gx(#P6)pi8j3%V<1{{1j!pnouqG96i86S)fdL3NC@!jfuNY?xQXB~Y{?C#7N z4BVbn$ly(5jE%?=CGEUHOc7Q*nmVS-P-qJM{<>h~MoI8_M8=v*%2;prK~mpoQr~fr zVD#Q5*@STa{x=_>-)HkIE0h(}nBTMf?k`@%r}qRA92FK||uW9|^kMhrc+F)dY7 zQB^Ix?*sbJIa-42fqjKXm*}{yTymB7N?nt1h+FDD<9K~;6V`m|PjM z$J@;*8=4~5y2t>6b@)J42gxep)G)@u;}io`JJd3(IeWR|M%*lq>PrFKBfk@O)SJqg z#)3-ETehI&9;rr1y^kcRz5&l~^CMg~0VF7)=PW_5zZwpOk%m+(jp#p@vSv%ii0kQu zNH)|>S@i6o;Twpl36sgze*-CGJHkKrM5-HyL6pm1s2YkYPmg+j*?0>L{h};5N1AI6*DqfHEg{ z<@L{$P=E|o`_t-S8Zmlnt+mBIVsp}2Ed~rMiJ0Qm=_9Epv%zy`#DS&(H~T2Qf^3$N zXZR7xs%atFmlfy_)j(bpHlk43B45j8YL)q%-NBC^!8Nrt|dTJ z)5LP)&_Z`qrZtr%M@|!-czIFc_K68UXrEv>ufg3su9g4z&8dqLHp@)AUG%MM<6zS! zWq|dEX2c7PXq|(^pzji3aSSerCyg8&gVdB%crurN0cqv|lm*d0ntzMyFe}JW zvnIR*P};>!0OSlD3-hH$+TG%cp{b|n`HepCwk*=>4L~5ZJzP)$CG~BuFW}piwmxvU zqi$sVzDkaJ>%du?4R>>g(QB$HLoXRML}#dn9uo%jlekUm&-Z-J$5kp6P0f}KOZnIw zQLK`(hbv(!_Uh-;nvuKnXNFVLNo-X8@{CDtwzG@&NM}to^ zxS$c;DWxFA9U}&8X2Y4L5nu(q67yI0zXEVh76Pj0Ed9`Z=OM+vclLL8x3y0;5c~O} z@?S=tyXZ6?`=lu8dysMCX4K{e@zAE%Li3PPc6L-TRyId$9Ahbt?~ zxUr(vZ;caouBPs_O_~{iUVOxZ_+kdMsxFxJbsE2$A(SnO`AxDP;U{8PL=0rgnVgIT zY1X;IAejMIPN?ynnqS`^a+f^qi#yJ!xBqk}X5TxkgHH4K@^5bcvyAK$(qLM12sifd zUrpGGJt{LGvq~yKh(75Fot_Nrt|1rfv{ZDW=`~gA-45NYBNKhk*`$wlQ)?k{rVUb%os0wcE86N9z=l$|*u^7Tk1 zY?ma2NSQD>0g-(HdecaH3_T3dW>;#`47ojZyMjFf!K@}4!>9dOr;_xdd)n*YNQXhe zx7QDJq|_z%R92?{D21(e9vn{M(4RxdYi%aHn2OAh{o#1nBf-;uQ+=nqc?jI;;Q2uw zvFNlX9(}N}5z<}ft@{Unx)SiR0^K4jsnqY)9-VVh5jPTS>%41kxxEKMB}{W&b{Y(; z$!7Iafu9%l!p;B(1$lozE*o3mpTRtQWrPRwhNB^Wl55zS5(#%erQmQk1vsZ37ma?q zLkLv5cQC@etsoe^A20ZUPo}Y zaO*psO_~ckzcY8XcMPO;I!!gtomIPjy!wp&-4*Tgq%`7am^<@6+hK3i7|Ie&2V z(0=6POCMD3e9Y)ERiWT4hKJ7S6tm!z(3_g=XWa5f+L|}Q7YQ;J+6(JA^VSR&q}}R|e4QTUl?@Vt(PzLWpduha9R4( zp3b9#?6HKHPIqD?b$mFq!~OkxvbaF&$mr|)L(>QwAIt5^06XMM`4!_)=!6NbdDrpQ z>DDqe8MbC!;gVbZwoL(-yjI&Po5SCtg6^Xx$80+HBDl?ts;Wv(xI4 z_x0k#+15)+1?eijnJ28*?h6pVzaO*jHj^6JeW1nixOfeaR8H`l2PKog&km?jXBC2{ zxNUB3g?JoOwmyJFPB%)v^>Bn?l)DY(L6E9WvQ!H&*LO^XjHK2!*r-PfSU`_NqT4zjr`LR3~hg=w$SG#s;>*v$p%5%FMIc zF3xqKQU3KKM#K5^gOx79ea4B1eZP~)GG%(XA39%;QSoa@Fh*JkMnNFJ>n7%ikJwAyUzjNLDSLEW*I#n;H>>XehN1;Quqpu z=P;H+$$y2K!(N-4eOQ8}yt%-W;N!$ZOZNbkIq>xU<-2dRN>fVV+Qe|G1P5&_L`u(+ z)$E$iQ*d2qObj~(k-cI5W@zihxpO0;dOBjb;*;gxUvgW;i{jU2QYvNM%2jq3SY2|L zr&n{MsdMTfN2?bK5|YwQ8A-8kQ%QMh2-XI2UYY!QD@CkhNasI9fvY=rHRMh8RV2*t z=k&?Hpd-KlkTH-Q&$L^}xV-5TwYlv4xi8-&`gC*d&PsKaolN!gC!)6mJ%5FxbO@DQ z%uQ9NfzFa+ITIp)^-FM6xCFXWuq79b&`*>_ZP zezKr>w#bc}-gPkTJMU-OCl;-0ez#zbH`h`$X}X2rjsU*#<&8G}DISdC6B_NScR}5J zYb9mF{n?6=w+w9Slomf{^uN7o(fj8c)33Vfk;5%j!)&cMS_7WPBa>^R7auyP(L(fP zUeD_|IKMK&kRov%ogU4`S=!?~Zk}_Wq>m{tl7a2fzxj@}+Rw1V9Oi|pgW^0ev zzONSX%+J2qxrlsjIocOqY6lCO`nAD3IGa6pS*GK7HO+q0gmM~r@ue=N+)Vl*_^rt; z9EVwfBv3&x1dlF_LH`PJn~%&TikIJ!f5%_Y!L}MKA0*g(uA!wR^X?r~ogofVt`C6u zz!(PZICcif#H=2Srr|;&=jgm^ zVo@msk-Ad&rrBfE+F)#~Z?wR7pUMy0YJ{?Vlm78o>KYF1oAdOkdQWGhUtmDPjLgFa z@u46avl zeiW5k)z!)m##@O)70|R_JKX^a7EmUYW1#Xe$jQQ3kQjc@Pd(ijCQ!quQAeid2li1r z_EEcpIg8nyd5P#9?C{w`6=)@Uw|vQ(SC4x!o9@#DEyNT6kHY+QeCXWaKucR?EpGIy z)w^1%Qx1CnQreyc3o5a*`h6Z{J3C2y|NdQYrbEkzk^v7+uR-s+D!gKGB^Fq7k1N)0 z=lY@HTncrMw~GiAn5D}{0W~$%t~N`qYz1|%$KGKU9aq9;Q5qsEQ`=a(ox#~^LsOQX z3*3>M%8~tYy@!omVrO=QslNYFbQW$+{cRi`h%l5Gh=eqfiu8}}25IS*knZkO5GFav z(IqW81qLEAN`{DlfQ)v+fYBZAdH;g#I_F&9c%J9JKf`U8DmMYxi6wiATfgSZi2brz zqL5@^UsOuDFS=U#9VmIP%Y=hy>G?g4lY#{rAfdypU^ion`64K{H6ny{v(Kj4JRRIX zGX9vfKa>4#Iz$C*R423JqvMO(KOGlqE+fFU8(4A`ljNs*en>n)`()(zG9=$8281fX zKc9h9g!>f%R-3xBmYkoL$@WpLq$&lo9X!tXEx^N=L0J-0VUuX?w< zjqBcjr%j!H)uv62R;ye-J11E^bNU)O+{!_1Is4yEqvppyjAr9Bi7y@nj^?Lmm6>o< z!i+{)p7^5K5;!y0`ZqWCug@b-t_DS`q#S>V;j-J1N$F_ygq2d>#|AbgXemC}GFks) z5iI=QrcLIjShS&P2gVd3fjC@vjW753=X85@9n$x{)=9kRc0m7Tzd7be!cI1#U#tkD zkjLczJ`p!H2?6X>qp0k2?uGYqvXXLrA@PRc8mZ^4JC<0_Ogf7k(h-8t z%3=DyVQ&5&Q%}KnSUFLRTQi1GVPdDeYBwmPY-oZ@Wh9R%c3I1VT@s?m>AH|c z$OgKTr^B7u6EtHU;v0H^mcdgJuW>vZi~K!fqv27+rOkcKRwDNBbhn7N>Wt)eckjs4 z&OMEdkBtqc!fyPhGpJO&9Jmzv^>fyDJ$Ym91MuXekoUCK_BmWMHhb+cLV;x|Kel(U zZp1t;z){`$pw&ZnseK2TPPA@#Z;3F%DJt;tZLa(&p0bM`q@vgB9n1DoT+)op$#LDyRaO#U{LpF zAt;v{@H}J+1D&<^DU?aThU=G8nXoLT+UV>T>TBvV?%o?DU^zrPH9ct7yw%YXlnek% zRH1B#x`aD6oWXQ|cDK%!+LOB3_a&Zw@G)TStpyzsZycw8+OUCMqn<8>jx(kd!UF_C zq3cLTG7_~kO;n&(ITzMumOwG~UjrZj-DWgB7x3L-{w3gz@Be6va6?q=q%DqbTUmiP zu+RXixa13a`jNStdv>X!M{NuA1N7lzf2Pf%_LPC=_gG`nPw$<@heW-JH>mS2_t#%! zCob!=td$crf5*s!I8s3bd2~z!`zNnnLMM&LM*R(Pv{TBNK)l#tNfB;1ONr<*VBnPo z(pg{m#DqrQhKfCTZ2&O@AbrKBPRjoUX^yS}PkyXMA;@dcB&SmOxt8!zai9A;_Adrfob`Fw)|$bU!5Ai~K8Z;pjJe$ut!iVS1rEVX_v+-e{}-PBTCLM0rt8ZT;B~4Q7Kn6E6P2X?bBD$fj;oG65MjX`wm;{ z%q#6OI%$v!Bb3C|j|Z=~xE16K{-F10Or>fRMm;Lx8sbSBSYdb)eT5ryRFelNY)ARND~!S|ZF)Y)=J}V(3%Q8h-S1W1ev3Bl3#?y_FXi*P zVQ;!QF%lUo5+9c&sK+F1gJ%i*-cnw(d!7r3aV7o>5Jwx{>z7RZav z{|fAEe8j5z9ZZjoh)|2;n|$OlRBxGAJ0ebYksKWOIN=lsDBSsxK$R*A2J0pb)XL(t z6t?eHe;sWtt?KH9E7vzF8iN-|PtI*$J|1upDjU8E;G@SBmgNgda z4+e^OlM7cD&Wpd-4K!?IbU{LphuheP5Jx7CGy2hy(%rhC4sNn1S|(XsZpGXdF7rw0 zOVQXOJe#}APHBc3fzC|D%dkM-NdHh;(%CVS7iL~oJFICcLS_*P&K zi!}S>i6`D4FWzVmFmjgJH2;msuHVzGzo|YOppdJkXK)ECChhOpfg_SjJH8*b^J}NT zDhoLL&}F&ygdHB2+j3TYWk(vfWyr@!oISoX;WT2A&>gP#AkI`!_^z`|TS3tm;MNIpMo5@m;oJm}Y8bNXhk z8Q>QxHZMajxl~ld;=v`{y3@7tVYdG7^cZf2Uf@B|t2kdtCV;Z;8y@YN_pCQ5eqQBj z)d)Eco?>`#PI)`9z;51ucVPWc-+haj7ymZQkga{W zd?&LFNwkYYcQYq;w!w?Akv4lhFXoXIZr>nw0o>t&)C9@0x6c{jCEbr1y0e>x1MaOyU_AGcZx`g?TGK@<-7q!i~EQCW0(#6fZ>2*_yKAgAI`@rM)9{*WAyePcQZA zU*^6?PL`bzPvX5TBM^dDP4NUrhu4s@+-mh$TRJk36t3ecLs&KW_fr-KQ3^1dF~WeQ za>$T%e`fL(DPiegQON{YDhcipIa=X+Xr;A`up_}Nk9pE*l%d~1ZwbE*gBVm$VG8mU zeP_%vbuJ@Ix;+ezOiDt;!Y2xu8SEs=?83_H%Bmb_DGgMnpDKtpGfV?>sR`43&n->; zcw&D3``S*pT$RoAIP>&HY0GckUN-!k&q3uQd*pOC>qjl2PJgw4x z&fi<%{A_w>$NjT~+6o%4zgxn}tjj`iSaH2lS#Ks-5*-$ByajY@x89b25fm)G`z_L7 zd*>a5zweg$e4nT9c`N7m#(6@8LuFhnSBRf-Em*$r`p!&CTwl`EURT_WdpnbBKl@s|Msc~C>rjP zEG-Hk`Yz5VZg+j6kG4~Di_Pu*CHYjT--bLHr0hN2by5K0U!zUEuxp0l5fS~)G>_;C zUvo(epNy>FqYu^EI&N2%ZUtF@KEf>qi7UkABFq5Yg!sRzGQKbFE%|7=g#J8!hvn(6 zlg4_9#=qvf@7t!mOau?$gTD>Mq^EUp3vafhdwSsF@1~`h@ytw2EOZH3JU`|h@q*cf zQ}&mW;XRSZqe1*w)K0f)x3)Bkwa+>hXe@pa zHUwg#JMo=uu(@AZ)waygdt>m2N{26>l-bo-^-nE-X9b|8gp^bjf25aeRV5TX_OQh( zD*L0AM2IN}^QK<~M70rBANse?c@}yNQfVcwWslhNj+G7HQxa(UOAewI>#xPt?>NkG zyV;T%IW%Uxas1^VD9w<-O!**j@4Ut?>SEsv*VQWAjt;^!ngS_jQ!&RpOKay^L4l#Z z{{G>ip{){97;p0UVkiYyZgM&QsF-e0d50d18ko`E(H`R*yN9j}`KM$3J-7Om?!!?B z1@#qvz%V3++QsikEN-8tVrw*#u-F&-~XqD%}{0?6pOy@WXFTygEhk9_2X!xz2>bQRiDme%JjZ z3ReKNd~8M88x(!;jj=IIysyr4=;RbFt@4DAJ4u7c9I&#vFZ_Bpv$>GI#5cAYbKG}j z*LRGm7`YjaU>uh4`j3g+bnJCVnrO%3O!DubH|!wdqGZJ&DDGdvR~=NAq4yK(MQ?cO z%!?NxM!Z%2*z!%@H=&`jL>L+kl82Yn1&`sPZI+3R!DLO0;0C@kac zpzmqn#~mB`6Y{&Iw!$9}Iv}EdW)XJ(DJEafe34p9X3F&ArgyZ~wr|KCAy#F-`#{8K z55s9$^Oo?Q(Wo)cTho4qDozn^=qVsXP@R-cVoT;&Ewm5%R3S4N@bB`ccc1Xi69iP4 zPgOxLRKkoyi`t{npjF@aa*|FNjLyq3(qv%wf1{P<gDO9Q==p`lBF{ayC8&QYUv zoc&c;&CTvCWekcI$_soJ5$4C>;M-qkO!xy6iVwXN)7QRnxxJQSr%`E{>%=(v%1YA8 zJ}DC~+=-Mg8K<2Irn$5B{qwv`_7=5LmP@@_QQc1&6o>v)qzD7ay{XM-{)E1TJLOEt z#!sQb6QlSjJc)jBPsyuupP0+;+soU-+xSQcaUI*(WOW%Tom@IBW~d6X)p{q{%yZW3-+VlEZ_^o0~VThMgwc49&z zE>%1j9j$yuEJqKison`!7>-DK)>j2IW)!<}8D#6?xX{gog}JH6k&ZTyCl=2nAd@8S zTY5N7t@W$)3Z{xocBOPs#LuGD2OddH&Ul_Ilg7qhYC6bE}NBHAp>!!3*2Q(UFRfu z^F^38O#BfUY!yu9unfOcguVrTe{m!a8C-s8cJ-%L#{fD!mu9pygivkwU_eIjyoOk6 zd3eI70 zW(vyKgIqenq07f~aLq)cgYB~(o##{LH`g%{1>AG)ElSJi!6so{FSgZCG5g_9Uyff5 zNJ+ZX*8w>KDXKVG!@==m2V_Gb>Rz$$t9Le5W@h8sHKG3E!DU(j;tad^cN8ptA_9Yh zmn?5_b}?rqfT#U>syTY2MOt=@N8@5;VQ4dBOjg^Z1av)b5Q(r; zR!nn2BTvl7n2!pWh@*d*rtTsP$ez#^ghE$O&&OXFv|!9JE+)7vZF$R!oULIW{dr-* z%EPOmT6;uxf;%FclS;SaC`Z>vd>YkA%gFW-rLOv(OI28l8ryi77Vu|*^^Rzlfcyo5q_u)ra$km8|?KSrpo;(0)b@&H~6dZU1kyJ_h zVw+UWe$vGUju&R9PndO3i)UA{j}I7esI)aE5Uzg9^o}@QEe_`XP{lymH!kb(-R6#R zu(BpcAkd{lp2{1rMJ9CdN@A50=`Y3U&|!juZ<6I^7AZe}PJMp5=o!WTBW4NH^IDai z%kekK+S{L?9}7Gx+dR*u@RE*T5V-hic7s8YSox!pMKamjBu+Eyies-?aWzw4^xOZ2 z73;rQ&i~!jv&kMGu5Sbn{GGy$^zZ$1DtQ_l z9qk|P{|HD6V2{CeM+|AyR7~axvqbVH-9ZVdZ|Qh>GWL6L(F3Czq*WO8h>rtyM$LABoU-0KEsn(X?`NyN7qr7%9kIsjhs2yx+C?72Gtj%~ zC6TAg`!Y2=*h~4~)boqKTh$(gO>VRG53?qyqku8?nu|sRi;G(39#!gGWLN%@_h_U~ zMmo(H(G;z%`#A7!A0QEZbk@sIfR{PIBuveivL%lRA(7iULBYY_K(VWnlPmsVRwf>N z>|@5W-ZePJ<>LM2s6{a=j?ymxn9lSX60}(91{_NiQ=ANRvMN9I=D&_r7Wo$Yhosf5 zAUsfnYG9I0Id1~cNM`r^m^Bmhp?l%j5TriRj>#JzZ4Uyolt1thbMK*A+TA`R7dmNj z#xyQ2>3ZOeT<~vFyYG!N4*p~YwRu4QTDua^Kxe2k*@%G%FNZJ@<=`5~@qF)N(_~`g#6OKJNRbG>OLFlke;+433mri?xenjRujm(1o zNXJj;K17y|m*xRHjySVafU}N`Q;0ZgWW}D7`mIhl;{%&YtzHWs-cY9oFJ=)<(acI6 z?WXqvWBWHZPOW_!R8z`Z(7IQLlNxqUI?QPNJ435PqHlqb$m=$dry0w+3b%JzOTH~D zXK^RI{A{jwH(mMLhI?0|IF9E68wELK&{gbZN+AE z`gDs=n9}iT_v<&`+5ahMaeNi;ggN>G?LPHeml0sAV_CEdf+u3b9vBX_QFFi>~J_zr&)9_1v zQM|$6lJ%4R3Zx^hJS@flG$w{lcjYsCK0JL~t~F(nUd%6l(|CI_bmCSJN1hkmN9!W1B2ph>O9Ke5J1rA#gG;j{pv|G|aELGNcW zPgWJxb4LnOtHtp8DbDBFs{ZPe`YC^;uy0f?6oCLK8j%Bn_eR=`_;H2u#ne2=>tM!gnu=t6R_A-S-Xmx#4tFvr3lCejtnA0%ch zA%b>M}}5N|+Py9d)M*K};I5`uwh6dtjAb($kL#R;=x1 zKT4eGbXx8VJ^uTwxTyE^=BjeDPXK2}^yl4QadS`UfZNHig`JD0l5y@q-o`DPVi!#P zTp)v5L3!>sf7S!u9qOC${a4Av5veQp`g#pMKV-S?$~*C~w(P};Aglf^nr4OcVQtva zJ4|Q6UIX+MQ1((9{?%{c%A_lBNKH=6_YhMD$S4L2Q3rtM6h^vKC$@k@#Sdxl|gpcSz&y?3Y zatV0Z4OQ>NHSHiJ=;*K}6Snf*VZbCHe8iS@wD+LwZY(F7p)HIZ9E53Um6f&ffhS~7 zWly!KO_>xSNp6!loQ;@DM z)ac)Cl-!Ky$DFu~GUuF%3g63~l4O`1k!5|?Ht8hIvZ3xJXlK1B6>}BQcN(H_bv81B zggYg*CDjCBeJHFL<0)AZ6l5$;Ox$1^$`OlWoJynM4a2PW&Lr|J>I7Szn{8)eTCWxc zbm3)2*U=&HG;Emola!GG68+xmzb4=n5`{B!@K^fY+m-CLw(NaR>zV1}i&osi@@MDK$DUV;ts@&76fJT#Dd!?jQZlgZ z!$zwWr4LqHJSb46gU0mDbt)Rx?R~ZI9Tg#zJJIOx1+Jl(N2YQ#?F&mwyK3IA;}EPH zRxihQGP|GE;VVHL9L%L17)p}&Y({t$&=7C@ERpW_1SeCWLRHQ&)q-KMRP_qZw-#9j z>NW+V<;msA)T`=haPCN1twUo~F`-rA-?Hy%qL}V0)s{-~{Z#$A+-{#p9lN|HIm)3F z`4M>{5c&Wnf{8nHm4&FsWyPv|y9Rxsw8X9W-rREu45de2vOQLL14qEvD>Rdx$-sW> zu3v>g;iZXwY?YJms^lO;%q^x$d$9tsHB4SVV!uUDE0;pqNTK9fdQ^%-`C5)S_twAH z+$|}Anp6K28`iXl;Kebnb=ih!@;GR>`>)VpC5GZVPx=#%Y(1&@U%Idm1a2$pzgWe^aZpjQ*n_-7!A68EZv&Y_pS zFZ9@wuWbQ_+*J`;oBZb)7JPbD{)Yt%IAEmn|Ar*w3ffxV%-LO?x6w_kLKPw-d9?C$ zs-T>7{JK8}Bm46{(xwgBOhN0!;6=p%NoWPFi0?g}EXv*}5{x;&nhQw!2d9L6xdPZb^d(I&1Y*SPnwBDb@t(rX^Y8C(?0+QrGSFL*2l^5FW_Y=uJO9t? zI*&9%ox+3`+dd`V>z&o!5U)AJ!?i_)n|BmH7oKm&)TPEkh}#%d$b1V2o-1=Eo}%wE z`sHASdGa>g3bcumvt2=R25%A*c`YA#F{~-?t+iCrXNgtAEJvA2fdsxRECa~cq{>8} zVP~FtH81N&NC(UaEbaPdN;90%vtDJ7D2|O7pULJ76(NSuJ7XfMj=emtpJpVL!7-Sv zq`EQs`|2;WiLmUF*n|LLHa2A;d7?_#OEyzRJ-%Eqb5?8mN4LDx$v>r@^R}U77<)pJ zi;Y%+ECQ?9`%W-Xdgq-o6V*dld2Ah@Mi`v)o23tPBFL?P-m!-gM%?%eRD`BY9sFrt zf3a)u=xZ(kj-LlUww!P%pVH#i;ue*-dN8=Je>-QFQ@9o>eX(gLUo*!bCnXhx-VT;H z#V<{E#ax}OEL|roseA*;r&aj$Mt4~@HlFmC?Y#FcoSJjve$XtmdcJw(02Azux;QAg z%8t310P2lRP2RgelXU4i6o zIcB|G+xjaaNK|UtW!r2wk_=VPpOGFrtn>WY4k8OHezK_IJLHcqdXUw3dlO+vKzC!_ zD7CRRNlG-zHMiRYlMnYP`1`@QZDBFA1|VOD)h9y>p3#b;_RV*3UB-0*7#cN^B3;xP z$5{4Ga0QGzF`SM&+s#lX$fsB#;-T7pdNdX>F_DAY>1vAbct&kxvKYP4V7jrGs^Qji zbu*;U8*qww)!kT-6~MyAJ5`TiQyT3zcWFOOiLatDH(OY~qvq{Ne*_vpuhKSM?)v^) z)I0Y1{=3HnwPa-MJ%R16;KnCq3KE1Ol zEk%_{K?Yx8MhNl%&c{T7Gk3AA{EXk4?udObyZ43C-AN!1!cUZ2O-lFOtq}W|VaRLA zENGU`5iWs#ji5#@h}L%W4xU`UD}5Vcff-;NWJp*hhz%fyw3{Yo$WFxX_Y?0W%V&U~ zik$R3Fc9lMZA(V>yX>mRa^-Bi1jzyRy1wGRENX_U%t>q&lCv|%>Lkh;!rFY;IO<13 zZUFG80`LjryNY{_~OB8OnJxNbmo8F*J0D{Pu)iE>`M}bIp z?!j~Y=uxud53f@2uT7Up* z6Q%vZH}m0j_jJ)nTm5_lu_SA=*r2`!zi*f0;kD59nL+p5Q@RZLJahZhWa@|=;#|P{3YOLB zkVbTwj8@z2vwhvp3yXxy7$Cga+pxp&N=zxW8FSeYUEpa+I zJh}@^X(Uyby*^W7`O?ED=!ZgrOwxZ^yai4cadv8$LV?&G?t9sed1Y<+BKxLsH`))GG4PP_7I0h^;xB%W`;3WA z$ex~8=_{BAjIq>?qx#DaQ6^=dr>_{d>Z2l$qljua?YE?iMTcQ~mdV^oIY1p0GE}d7 zGEnUUu}?teJMYEO;r)(SMQs9*^XKNm1o6g0WZS*T5HH<~qawdY?eU#I-8v-|y8GbI zN@UNM*PU+G6Exb?S_CDI5|+9o>~s{)kJc3af7n^>FPa84dAPCqu}%+(La&^(S8HJg zKW3h(ga-s=56;z;TrCe!%6q#XFWpYw?kQX=-0pja&DzHa;hx5J9nU)9kmfr{9{qn>1i97-|}N>!dWcgju(@O0V@mYGAf;g?m-<7IZ~Wx zen`7?h{IE5pB7ZVTRYoq!{Trk#~W>}mM^rW(yO3=dQ{{kGw(Da@r#47oQzd5KNfP; zBIVlL-L$Y15;W!Nn3*vWhywS0{w%D18l}N!hLlL@y%4?t}?yY+B$BL z1sH5qfyez)YSe%za;j$O2B&a6%W`_Ul$w5g++y8qwje0q7k%E)6fBY=M8sV4IeAsH za=eTuj@E*T-)z(z*WsT~LX}AlK3t$&+7a3eeslixX|`P^(ak-h?ckB~&h>EC?T@Q# zPzx7H7iF;efG0fdAW)pSr1)8NHk`v?)sf*r<;){(;!J)eFj#ZA^eG`(9JMxaGhWfe z*ZW^|k`^$QCZf%^&+`9#JTiZ-elChmS8S${>K2tu6^P1B%=hTBmo@s(Tl`OB?Z#r& ze)q-^IrCSk{`>%R#L!(V+)$mgTmmgqX$)c`6j3K0Bq37I=#6T+i>Aj${#!^Yos~?J zVvUY2{pGt!kB~hvex$#}OFknpO3(MHg*J}UFQ-~<;Rz6br=&e{_hG!++h3N#s3Hjw z2W8b{c-9B}pXdm1oX{JXRMpmip9x|i*UTlUZBy4wXw-)$0WBT~`Dbd|BPTjTZ=%=q^6>G8?KxHsSub7Le2_J8Y!~zg<=1r#N9&f35(|?`%Q^wjO zyv*;^gG}UNP8txS57=NRE!x3aqfVUeQemCv-Sn;|%+85=5`R(D)nqzgofvcwmWjFX zJRTJ63%j|x>mr+?y4Vg9)2(djI9}YGYj2o^%G{|M(#@jsny=fU9}z$+n19C${M^GzzL6Zw=yk|{h)JOQzkP?0j6x7= zy>tp~d0DTOVfcjpAzVxSZWV`?KdLfBI`))+Fjl0q;Smmgj0ux2^-Bs_wh=k**8lMG zQbaYVr~V)P&1}4A%J7*GJX*BJq>eI`I!Uht{4+AiDAE$Un_C~|C24cL~|QNZA$ z8;b9K$S(XjyIoIYeziqVU~@74%a|-HL&a;SAe;MCQui&Se~u3N9ZZ|)FQ~I8Z)^fX z!GB1=Ls3J#HQ(7Eu?33c>#478I{o#er&~KM>4^!)rm6hip|Gik-^G^U#-pv2*obNm zXDmv-sXdy|r^B0Q47qjX*Ri?p2HZCT@ToEeS6AEyvCO1f@ zz9L8(L=QwWY{JA*Qa@;yI^Oi&XXvfkrW`T??>9|t*mUy~->Or*{?`-L9pj)`72JPj z59fgsuM(0c6Ujw9-Qf`Uw44xNyE#LW?d+GOi6@6>0033801;u_9e+m6W+-JIr-kfS z-jt5k`A^lmq|Qd1mW56A<-7%YuV!a)b?$tlnrU}6e7e_~rte+M7%8W4Jb$3)`rX14 zx*3%FaL!YHF?VQZMG=5h_cUzmEN27s>gpPBOJ8N?PkeMfW{x>P)JGS-ttOzw^l#?kAhdw!vOm9Lm))JFLPt0WnMh$;b4Qusfi6c zi2Bp%^3_PvX>j*gXD#@rt%;Y}E43c;?~VIIj^p$#sO$`*EOimY46tiavM$QWAQLpF zILYI5YEn5031cZwoIVe0M2hI%O)uxgo3IXjzv%Vu-ggbhu42Z+caTLB)${a>){2w_ zv$&`*&xIM-B`N~=h<_S`i@$C9htaeYTj~MfR7|%aEM(@_wD%XQkJ58=t2MH z>e1DdO=w`o>AEM40JZ^#(Z!06cHx89l9TPPFFXc9dZ zK<~b}BXCM9%LtC?V3pCr(=<^ugCmrP zOm~W`6Byw<6#&Jm#Ajuh*BT&@;w+>OMA8DV@cKISkD-0dkbIh!j2^f2#0)^6Zu`7= z`}BDK2Pfde{p1#Da;zpVXHl&7)))O~j6jk=J^2T!(Yq6Rk2OR7Osl)mc8tE@?=Zv2 zRGujQ5&X+3eq5euf3Ci!`DRk#X6W`{>E^u7ZB;7jU~%=x+u^0pfFZcA*COuNOt7i? zeEaC?*Su-B^hk@ukjiI&+W=A#zlDP^SVq&VuFAnSS)+`CoSa-qYVx%6qFX(U(J0@` zWb3CUrbCeJP$PIz(Ze}FXU3BcpFo$$UR3hZ>PR{*@OGDf(A2EVtHW@ACVFLM667Vp zy!h;(t!vRIZOKyBv~H`b;syD>^6U?$KlMJdz>L~5S_PB}!nAVO=xNks>b%}5!Kb8`$vLE}iKMdt8h}?0+fL9m9-5$ImGqITMN(p@w96rqN)8Pe>%P_# z^I#k>nA54?oh^phIbFCuIUaB8@=>w3@n}#Ej75|0=k`%sojv7mzSU_MuuBlVL&63l z%vwg0_EVSx>4>7SrN2g;{G(gx={7^f3*KcXhu&kO=TQXvYjeeJ!^+7Z??R9eRq$N9 zoU>o?c!sZbRRA!?V6@5az9We>LV-Am?2XwBu<_H&a-?Fg3;PxqVI|NbLe3Vo)kYGM zE(z^0uRIY|D+xtvZ;ej~#GjR6^8Gpl-y*^wZy{BHBQu`rn`9b&MPhkJj=|3mIlnLQ zxiox|TCtB06cg^#lCu*~DeuJ#y)|a5(fJ)q6bcq2ivI#v@tM3UgeudZNF-49CCD&h zm$I_UA)?k^Z4!-z8qC+zmOjX0sQ7Gek@HK}1LobmYyJdp0f!c0;aJGMem&`sZQVuF zMz=+=5>=z7kb27A!{q3_?)(t@E(51StzHO!#L?b0{ubqf9a%4IR=730-6{cMko%0kelyBC2)-B^H5{s>He@C zxL3i6?}uH5P&jI2eB&55W+sx>;a4|nXiPH*^CK&bKa^MGtPp#rr|04~`fgflw4-sp zt4i!qIw~sW&#oY@Zgk3d>7_~jq$?~v3s-1X!SVT1fV%L_prE`0Q%KTUN3$pmw zPm#zaZ*BI~!AQU8=x|wA1t;u2#GUy8Uo(=zG6kYFQCOuAYwulEaUCYomp$Hu0; z19(q|cE*VlGRh5@kKTzQ@3TN4VB*AEpD$Cl`H%0#Vn|S#kktm(O8lK=WyV3$@z%=W zwz)uSXclMsPfdfwvhIpRj&k7{*8$!;AilfQAGWwtviO;6F&wM0_f_KknC^l#V~th; zUX9{cmeTM4KZ(Kb5kg9csOe*`oLBwCZ{S19nxr!T1bW9!dg_EYqnrKPhlFR{GI=Yef>Kz|AEA=0a3kqNMTi3xCFdh`UTP7t{EkV@%(lLh%qLY1Z30AV z+Y1}Qs)l5c@aY%#z{R4Yk{pzy|EVTQ(s|j<1WlNK%O@-5^%`|tLn?_u_nUU0`#`Y} zVrfzp(1er5U!TvNAJR=UH8;Z%K~bS6TZPB3xRRlt&aMt!CW_^X(4urqQD<)I@%&k} zFT@-whA8`Pw$~%0v6xMt$b-qvBDG8x_Ot4p9!fu$w>WSt zHh}f3hv4NePBsJRlx=1u>OEZEE$e{)T~^}?mgOAbFDzJaom*2MG_yPr3OzvO)WdE) zo1e9$Sf}7sx2;clk|WLA%?3@8-UXXxz(9zj>mD$f{ZH4iVSmCd(gcxY|LtWn>?`N^ znt5+mWVMcNZT;wC^el5{mFeQ#+|{d&X=XVVph}7>dNZM#r&+62}w34W>3x}w$niLH{2g)Z}l~3 zs36y+NhEAwqS$y~ae5yp{Yd}76UJlseKnDXfdmh4^-;M2vsbzmRC_pNQggDzlNaAp z%3yqWF>_S+G(|S0oKx#iHe2K%8hqmm-RDh_j9L4SOS4i(azmV+s%<1t2OJ-#$~|xC z;q^!jeX-UeZE7>kup>-#E3mO1oDyO6r05dYywvp4+Xl!40VxS_OOmrox)im+D3q1k zNBvL)?4U#l%*dxaap0NZ#=DI)1MQ^bI0R|3%IR}HwN>6h$t*yZo;GUm-GRHM?nyio zVPieUeBuM!F#Q_l>9m#dr%77SPqAlX2jsj!n&c_oq9%OWfVN?0tG8H}`)zW6y!)l( zhEA4GNz`+Ej6|WnURd&k9=?PhAAOSQb2E8+re7i#qvsS8F8?%TIBYtw>LjW_O(dmU z(j-dZ(Zj;=-H**Z6^X<9t^h89m?#diNhN}9(U--yi9G<7;epq27|0nq|BE|kP_jf# z7wBn~>wMG#{*zM+(_#Z+rV}LYFhvql zlBgKon62~aheBxRq*&7NxXHKF&2^a36Qci+3x5JlAMmx-xnJl7**qp9-h;h_w=O^9 zf(7t}TAMA79Ka3xd4&W(nqduv)p9Ij{Oa=@_4l2_KH=Gy3Cj`8Nr8oGgd=vvoQr_lgwAyJ2 zUs?4MfIGZ3TQz723BWKaHUd=${MoDQwvC2iC&h8Dhfv4T#Ef2iW5(RWO59WkqeKH@19@zqOhE79{UpjCtzPk!ej`DxJzGn>aQtzO!Niv@ zgXb2_)6>T$vmr+@mv-0d`w6FfnYp?33b$>2z*=P|A9}Wzkj|p7=bSa#)@iS*g4N$j%2};HP9s28n9T7m zYH0!9`4V4l@dYpOln%GZ9~`R^60>g9c5wOpvs#~%1_lHEUthjRWq-39k-D1O- zq#Bm2f?rFL8cfhuX@KM#3zk>-Z{BvvTJG`$$W@(AB~HRuE~P(XB0^O`V#�z_hOLkkSH_{HM72R&uc58ep8 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 Z0VGAi3!fTzegOd=LtRsyMlH9L{{gTYADI9E diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg4.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg4.png deleted file mode 100644 index 63b2005896522bedae38e8827bacaddab1603555..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90015 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%0Dn6{m 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 XD3ZkAS)?-w00000NkvXXu0mjfu3f(A diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg5.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg5.png deleted file mode 100644 index 4281ad4556608338ffbd4d32f40a6b54371c5013..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70640 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg6.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg6.png deleted file mode 100644 index ac544e3b5bd27d263fc8352204145251ed39331d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84881 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 LNkvXXu0mjfEWa26 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg8.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg8.png deleted file mode 100644 index 3b07dcd8ee920c0b6e92fe08df4df6df2c38dc38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65868 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 N002ovPDHLkV1nh;jfemM diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/1.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/1.png deleted file mode 100644 index 1905026606d04c80eba0d7e03a5e286519257b9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22049 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 Cg^4== diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/10.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/10.png deleted file mode 100644 index e651cf466a80074177376067a3c6cb174c9865ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6662 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 IH*o#G0ZyKYasU7T diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/11.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/11.png deleted file mode 100644 index 5a33509afdc6330a257783c71d97da5d353b608e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6663 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 LH_k~`@W%fDU$BS5 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/2.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/2.png deleted file mode 100644 index b1482d48b4f2f323979ead105e074fbcc6c0e6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21367 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/3.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/3.png deleted file mode 100644 index cdbb0b18c46c25c9d4573f60ad6031d70b99b872..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21660 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 M?a|Ho_2AL}0V@#a%K!iX diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/4.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/4.png deleted file mode 100644 index bc69c96224d02597aa7c34d122bde3a563727dc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21923 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 TfEwH4YgBdi>ucOpI~Mp~LU3*+ diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/5.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/5.png deleted file mode 100644 index 0080a54650950b41e6b5bb1be4d50cb506498d93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7853 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/7.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/7.png deleted file mode 100644 index 3be019a65e071a656a735a8db75fdb9355a834e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7749 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 S+iUJ0z2>w{)GOp&k^cb(GU5;b diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/8.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/slidingBlock/8.png deleted file mode 100644 index 96d3c76cd8281cb7156f39b3fe25491c091dda5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6660 zcmdUUd010tly^YXh#OTzRD=*wDH3vXvqu)mrnCmx6i^Yf+(0xWF$t>_P{aih3Mvjn zRIn~Y1i_UeqEbaf1Ph9YK&>K0MCt}2YUT|fwV$=^H#2|C@T! zec^cH>BcA&YP{Pbwio!tgG+-R1-@TIU#i0ykYLH8 zC?(<@OatX3-+czk$xxI;M6L9PtK6XM1hQ-QMLv8{N!$OJBDtV|z=p zq%=h_B}VBe6)x5X+Szd=Lmp2tNqH zD`Y`f%y4)aEV)#!1P24{hyz;icnmk0O3jxE5jVCI7MS25k%$;HGL4Q<_(Gh3AfVvr zG!hLb5W@%#qEiqenZy@T1mchUY`HL0pK*Hr!QvCig+Rt1rxJxEF_9_|;%HO?6(=B( z$T%87AjT00FhV8M5fQ`}ew4OEDFOA*mwqZ$uayW$ghVtVM5mE~R(vv!AS4lSbcip) z3HcO~kcbFrWDyOE(TAJ?!~m7}`XY0}5{4H2^r?B_R)S< z5E&K7L)8%eF!@14cT$NnM4)qESE4J61~JJbR~TYJbcg~GxCAClgD6Z#ydGcx;UISD zIfzs$k;P$hVG5H)q_JTZ9o7>Q=v*d~#-@MH0mED_i$kM9EE1jO3K&=fDw)is5Xdl_ z>Pn%0&Ou@k$z--Gi_C^W;*eQn0*gZ@kXQsFnaLt?37>P22~-Z51kRzmGU*&P6XI}L zTvs-c#e|3ui$?pL!<9y$!Z1Xm(Oe-qhsxr@1P+r1lSve?470eObFg71i9_K+EGk5z zaG7)(n?qs~U12g1!J!h!pL1|IWGbD_;n0aJDjTK{VKVS6i%KLyTr!u$C4Is%;OD{6 z;Qu~`1E9)SB+hd?n%<1d8Zy(9c&Q6UoC>Ut{rK(qF|7`+Mz$LP$CfO&54x_HKoa8U z2uXyaixHSE0nN$si=)|6jBid}a?O2UnkN19KDOuW;etRu&kf7@%YSLl1{3 zbkKSU2#(4ZkU-}~XgC@qfwcUPD6-`#?%B43_0?E& z&>O7mPPG`eZm~M$crQZH`>eTo?pGT{@R$t?P-bRk7>fzz+wm9Bm7+=5RP`yRs>@HG+TWYknM2alywXvr&F=4?W7JTDg6``M>Y z_cZODJ84^fMn*=EI4Ef1@%;Q}mEx26#l`fZGiM&>YPI(~FZ?ul&qDNun)dkO;^Lp1 zj_~GqXKA$`IyyR@f$JcVNQ`kyv)G8C&34QACWMvk5#VUq+fZMh#81-c+P+RS)Krfu zvLC@jn=pG8&rvE2POT@$ywc;l2^0C(sc8RflZXG_^W;MkeN% zZ{`Ol=0Mi$gOcez&zi@Qc=1;RsZ-6&?yx=8TXU{G3(M6|<(6F?9g@z@PE9STYYBGA z2-FDF9Mo_Bv46iy&x0*i6ldMLmsZ}U#Eiklx}tiyb$e> z!7uVbR~n*&s{?S1i= zeu>%FzFVu+j@-=Wl6mn@o~)rozOY%HWFXwz(-&Q4824m}%llXOmwnNV5gw)qSy@?K zQn{QuFVXAWg%^1_wx@G!-;PbVd@IHI?a{eAE7hCIA8_5$?zC^q%*;G==gysJn@miY z7p0VVt#&~j$?y2G;5BQmGc1x@M;UIgYAse(_&yVBwK;`_g;q12qt9`c-pZfABjb{a*43s|~zN_6cgpQQ;22_ui@FI(*&R*}8Gs%?!|u8*9<8ChRnkK)zEnHcV@G)m05_~eOQUVgr%--;D$ z@A6ieaz4ChtHQUIgcsmIk(BSBG=KAWYomyLHT~~D6qK%#+gYYGq?hm+S^34vw(Efr zj{C+GG?X~A;Bh17&6{U}HtI=ENzsu~7fDmk`q^)+Y1b%e7QKY4-@6}~!SOt0o9GoF zbH9r%3s}__X*t1y26+btTD7{ZO0#)eg)fV4ky3Oo>T|tyQaIyqwfLoRIdo>FLqllS zz0)Us^H=s&UY#}tb@Acz=$CIh3v`->PN!})2saH%j}TmFU3C`({abdAY!O|L7zFdZS`Rn#}=QV-Q+qHfq9_ z5ta_qD3w#UbI=J)Q0C{FWhj)1k->dg@AYifmi)jU)g7;X{Z)X_BT*<%(+4-R<_A1b zoEvNX13xK48K8Srw_<=FY#itGp0|M1)Pr{P$`sA zR|JKmX@)f~Ywz7NMq6*aB3KP)tS*Tz>!=nc8CV;Ucr1!00l?3R<;Q<{9p!3zCHUKK zzlAI&gjW{5J6hvmR??h2+wFR6Ph$`$jru!xn1y~uAbZ*)j~+WVqNI7kAvgK_>-j&J zFb`<$7V~(n_Ga~RQ)ik!c$^pd$Z=!l(WoOLx<->%&m4Vg>(y|+8wHT3jPUuwckxu3O-Es)bJ zoPUC1lOFT<@g`n~e@jT}I8^H$$CMf0IM#gYydPit^UsqW(cEu{;Lr^Ve#!8$YisFR zek=IYx;1N__yq>Gjzra-xdu=pcLr7Vs$2b4Vvb_Pil%WWD0R^fec2lV%+5At%``VR zf7036Uvu;3&5~uumQF}ul4WQ6D}ca)?)$}cC%vx;lB@wtev|fSRGiI47GL$GKKErw zXxp~QbMr6sJ=VmA{#KhEINu`q_QJ2uETsJi|a0LqAwIT_ecbVekw=HZo8Sp?lRqnw{GdknK>N*tNCWv_L}{z_^P752R(Ckj&ZcCDXJE4pPzMe{rmUtXCZCW7YF9vndij3 z7FD_gy#e5jV(r?swkBw`B=byHa2;vKzRb+GUsbHD0Fz41OUH>0d&UAx-PIFk!hCx9 zGEK~1}SWpv3azxl?Eq=jieltsS2?d$8GUYciX?7*W;j9PrJBwSwK-CL36-oCe4 zHnHc`tHmJOR!ntRxrjm{UZN`ZFSH(uoh|CKRWFF2wHES88C&Dqjx2uT?J`G-4!?PoV;{cky2Syakq$?kV z75bTSJdMsajR&eQgMZA)5&WptCfX(%YPFXqH_pClzQ@kRZ`G<6AG2ATmc5VBb)}}J zwqNfm1G5NlhIc?ffUqLPs_eJt5hRXh++m5IzyH^6lX!JuQ)28R{nIbCzr0i^tXSZ= zi>D(SplV6D-kzRhFfC9I-U<%rSbwrHX`+?03pkW%-=BE1QwiH5mDMzrtc-b{InU&fImw0yVMWd18K#(-X2vOzm6n^E~(cKi&Vs@Be=;dtIFE zXV08J6NN&}c38z;3x4t7N=Ivf@4;;~P2gvSY?ZeHg_`x5`kIDHJ8XnPX(M8HFQu20 zBSRn!vg8S+e8e&=NCv1;C@b4A8BeeoQDXRrzgS|8?XNnI#fXL0SWmJOXLrHY%>ud*YionC3S$5PL5Pxv2@498C>UYZ*m1cGaIap*V=?0-%FWhTJGDZL zmy-*IC6yx>vLyv4fJtNwm2L@Bh$K4Q0z-gc8XltIVImHuFh~%CK)_6Xut1w!C}ON- zb0>9yCu?kgQYmBL@u8uimZ3yTsoWnA)9G|PM8FdWI6#3@giDmXFq}lO_?-kcq7cZ% zGNo85!Kfwj_|jmdH5OPpafBe*lvs&k(oMi&_%NOf4_iX&BaIUZ1ygjgV0qxUa-jf^ z1R_C*M5zF@@D!~qK&q4~0;C@iJ+=Ki1;DjVPE$Jm(3YT}DHRGOCj=a0(jk9Ht#A*Q zA^5e3LK-X=Ae<0j=Hhp!Q7G3UzxnfTumkcbW~Es45nlDq?+%58i9bTB-kBnmF<5eh zrLeA4Md9yA2@nn<;|TCLDV;%te@6;ZS;$lJ{*qWIV2GshARY*WIEd$u z;AIkjEM_Xa43;!dDhG;zb;NNioSYaA5`~f{5g-n1Yb-c|rC2Ov(8vTjnI=GR6p;YJ ziD)Dmj!)tN6DdNTNI;`fiS&t60DiVq5UkEPHUC8M38exc<2S8DNI(<9BnnPQhX^>n zkVM7NXfzRyPv#RzKnnyT{CC!@k&8k7^8(+OsmVc9#(%(?tA~m{%_kJ z5;1Tw0gF*5&4gFo0Db|tQpjW?d2-!F9EJpXvBkhUig80o)c1G1-`j!7WHmng=CgO_ zw*!$;fIL)8;t!MOKY14@wt-+ehhRsvW6>ZcnPf+RSP&heKrk0(5@-;GX@yq<3?Q7q zE;R=c#E!*batRbBi%4S=SagD#7^ZWXOd6a1AqRoL<+3<58pI;eX?B2t1yjjnE(InN z*i<_T^+OI4i%2H3?O0?s0VEEYMTS`%I!t20L^6{_;=&(tkYOr^Oagl7c1${l&4f5y z7T1nVWHBKk#G=tY29N#anr5Q_?t zC|o9;#^#XNL^}c*h~Q9R@`oH;4w*`4b2xM&i^?WYhy*h5EQ?AcLR>PJ#3jAQG4AJy z(BS_(hU1{hSS41+G<-5HZpfCY2w}!?l))2BWT`-nLWmGMxh(#JTK#)fF(EcI00H&z zC%`m8rjUx1p*%Ta=MReLPtea(ED=gW6<=WSAG2S<3;A>F1p-J!6TuLU&I4Un1d{|f zIzkfS=puwb7w}-1Bm`ylq4iW8L|0=afyjV}@38W}Y5k;lK>$zUkART_|MBw(q>>Os z{$506JUI_c8i-tBjTOnIK^UG)7AO{sBM&}ABAjgCQ%QkQN-@7d^GE$AMC9W4Jomnq zDHAaNi~9aDP9y?^2nA#+jzmR>I5I@y;b?q59Y>&$34DY=q$4~4d;f3Z^q1%PdmZlg z=lN)l{txnwjxn36nm^9FaV(jD1pI$Ri-~9UL~?M|={7z$G5!b_{%&P~L5cx7_FwdH z0)-A*FO1-*JU$5r!w3yWgM<)B0t)EHG$O!8Fi}icBmJNDaCKRXyWzcA`P~v2z}2@? zlRtQvdUrr1pnB!t%^++!y$!sbupQWT?qP?Yru#S=d#3Grt73TgZtuSN&6CG`?SpkI zHOm)Wy7=&pYn^NI-p{^R(6IcQoZ~4K^K28i-e0t(n5Jcfx5s*m?bDC1JHGDCx5qltuvdbRGJvwlW{TX|P{ViuLm{ZAjJ-wl(!?7QE%?9(VAVMgRil%b&^ z##pB|9$$^VDx8DehdxYKXmRcBv%M^87D&%dLoagCpKiKrS!CY%?RblZn%-WEe>OF- zLPM#J&dzI{^Y=?6lJfku1tN~?*2Vj-WcRd|oVS7?Sx;|US-*?E!F`9}+*H52=5LR> zco@(UeQZsmQ5@F`r50Wm2j;u#zg#wFZ}Fi+hx|qU{<=lQ#eG*rWyO`1^wRS3#|0|Y zUDxVMpQYNPBb&N+S5{WuyqE7}>XxBWjXintqz_z2h(zKJhh*a@3~i}H&X+-~Y!_cE zlb5ZxZYA&%-u8EW5vP&fs8wpA$wcche|0of^zC0`LoZaB;~kPcT)zvtXC7Bm$3K~= z`H2n<@%GC#+jK80B4<#a18dh_*XQtJv*{1Ih?_-69nhEd; z3!mP;zOnpPzlhns)!SaLXJizchq^M+?dKvYV)Sla-O?VdQgv*|%rX1kEN&WVf1a3< zu%&)*aIksdwr6%y3&WvLc3&K|YFh5$;W10QHepkmR!d8ZZ19o81tZNm+S8%eJ2X)( zSv!WGtQma0tu4$&KPDq1<7uE&N?jhecBFdnc#hc*IcCGNVrp(A*$f|Bw*RU!y0(++ zkbJv)Z(3Sf?(N&R=SA!3F)svCcB@n?n@L_p>jE}yy2db0d^__W8n$N@-H9dbjqV;C zfk0qO+xAKpuTr_K7A?;jQ%W zFf~c)uiE)`N1GSUI)ZTMC_PcrsTnh8@2f1cIAmz zq9d;gH8`#tgM$s$d3x#|FDfGUn&RWIJ6{iWrS{*iYBkh}?d)8$_w(94dKy+u-J?6+ zw)&M&4U+0NH{6FZoLkpd%DYOeOq!xwdwjDN&D#^1l45}Vhekwwef`eEtCo~s@v$(x z*gfP#H%@$GBv_T-{7sJ8SNfa+OX{+~eI1r1gI2nq=olX?C@D$mUxIg-GuoB9!A43+ z-?{ylTLn8wha8(lW#KVABOlAuo--j&@3t-XEFKAXm@pId(?D2t_~?t)x0icfWQH;_ zwj{ub^$!~_^KW#?E17XQpx(Y0-#u{R!IFhZ^^p&0nCRoSXs2ed#$3I+;nAyCuiWBt zzH?GU>nXdgrJPT=%-@mK6xt%GsQ2(Fnia!b7IkrBf9>w3C(6eUw!gf8exb4P2=E0D z&T7)EGx~?!X`I6x01_${Gus6fTRTlRRXhC=sFrBvqK)2$?Gh>qg^of=Dk8eBXR})I zzGswMw`@6Cde{oJ%PdaT{bNS4jMfgaAF6Y#EZ#Z%B;UU2Fny?G_3G9Cs{79C+Pcd1 zIshHAL9A4Tg`J%}finlMUHcMv@I+~;MuGdx$KBl*dtOAfY+4%eYwwK8^~Et6m#8`7 z`KyxM*R_kv3TDrqU18~W_TYjA3wHBQdZlScc83Q91x=6EyTpf~LyjkWt2>@QhU<3e zX{6;XN^h)bZ#M>M|7`0yOdS7IZthYeo!Ba&_l{fsX7TqW^~p=RY~S<}zZcKnw0Sdt z$*4T>g(0h3EiIAvC9yY;R(y_lt_7&+VUU-XhcS$|v$wZ@95dJNwCIPgTB|GQC?R3q zI=$%O?#zfpa2`#N;s+2HeZ)Etz32jz5R)fv7F@LrLtQGhNO#WX1q7gDYdbd=6&3AU zwg}%qAlus7-nn(_k%EzdI^oBfcA?^n1H6NYxw*L=kB45ju67U#xa}e30`GDylulmr z6F;YBJ&tSWksCipH;M`=>5Ww-b4>PKy?V7cJ3IS)kVG=Jlo=4Gmt%d}R)1#9uV8V5 z8n$-YHJ>UdEbKY&eZYXS=lX%cT{*`x2L=XS*45QHqoXz=Mp|K+8x%C-p}3rb`>zTc z_9v$b}o*-wK!Tt z$!l;LjA35f`Qn$Bj)bJ7g&z7bZL({Fjns}?bC}n3GW+8!8qAEeb=XI4n3T00UL3vA z`#{j<&6^FG=;^2vr%t&q(20HXm5+}<+qKkBLcb z7^qyI*wMEQyYJX+t=&!9+S((C_n!9SwB-!tov=d}lv?zcuhQBj-JDrJdue9( z(yXSr0b=nCx$!a);n10tm}idWDf0f1q5#re8krn?yriUG0~O%&2%yHTZx&F8L(iZ& zuBVHNg0xTvS1q|Ya{Yp3{Jp0?>Hzy*ym&Dh;qTw=Ti9YA%gml%ac{I12rOF>+V{Ly zztl*8j$vjbFR7e{neoi!&S6IIFC!A)@PA#}TPUr5{dkS;=Zxn*v9%|M&HlBn(1Q`$ z*M9w;^!zB*bpMl=pftQJ49RwShQN()pQd>Fy1~MvqQy~`L7qEu87LoK8uf!e{lb1x7!+P^1y?L z{?Sc<#-@IYUi{??k_wi2N)&*=pL=@JJ86=Rr}rw}Ky`@!DCk#liHV6<1|HU**SK@W z=+MrdqKdIIrKN)p=5E+F5QjmxEiCi`D?Pqy02Zk=Hs0I+17{%!OQ-R zx1){eRNb122--bn^Qp%nRZ=jJ!~(owWB0uv@3v^z1@G~)$OAa*V_a`wz&V*(bwH(h ze(BPs8K_rXhM>`0DIKXlVxKg&H9Y)vs7~w=!$p_!))wTBjg1|Oi;HV&%-g?m0YUr7fK}ES)BS_bpOZEwTojc}W1_$M>Z|Xot4&BwnxIZlcVJ<7 zW^5p(2lu(OAPBt(gN|B)u35O=vUTAvJv}@yDV}|e@u?&zX!dlCNK2>Y^3Q|P@@@b;=`IIn>W1&FY_zO48|E3 zAD^nsB_`n|rKjqhn@IrXb$>C=E-O>W!@^$KM`66K{g8g>(7>wX=R=+wwg;ymZ4Gfb zKiw1#eP4g{T*OQ6=#HK3Pn18lJ^gj#nl(+)P2E+&oi#B+7OQqX6Fn;mwV?H4($c0a z#wRRh89jXQ;Mtqe*0X;7qit<%x8*?woXAy62oQlVSh(0e@sY1(>p_+3#Oc%MC=BRn zr_Y@mwRJRYehP55prm@(+}qa|=kDn#a7bQxpzB3y#lHHxOY_9@zg)r36(rRwLOZIr zE5HYrYc5*>)j>8k4{WWhM(*xgY%iG`&vDh~$g1vN*kX){&RcG7o>!<+eGSGimATbE zUw*=tg2CNgU0qHH%nWGhf7xL&Z(ewD``C*5E!W%H=pd)bAtSE_;!Tq5-Snpir0q#b zNl9LEgB0Z1S)ZJW%-d$O(0E0Nwmzrrd6g*&m6q4_;K74Wlj?^=r1?e5w}Uo6&{-S1 z3`}5LFq+|FYd`Jl?M=8FSng5SqDl$*w)J-Po8&OhaORb*o7_BtSGT+BPX`V4Oi>Xo z+0pd=C%PuapBovSzET>9$!e+x$@Z2;r+aTS($X9$n45K}W)ER3*L|6G_&Mm&i<)m+ hXR-Y7|A!B+Ht?JS@}I;m_(c708V8OuyO_B#>fbv>sA2#B diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg1.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg1.png deleted file mode 100644 index 51573a0c4e1e72a0566fa1ba57422b5f06cd90d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36206 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 E*~8IL`v3p{ diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg2.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg2.png deleted file mode 100644 index 909dc39ef60eae026a09a82fde781ccc44858bd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43926 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 Mk^SDDo}BCd*$(rtZ2$lO diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg4.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg4.png deleted file mode 100644 index c856f4d97e3f939230a461d3f9f8c22b92d64e0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52213 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%0AyI5~SbJb(!qX?O)j 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

`kgs zEA`c|2_f55#YRzYju3mVRbR8(dgifOl4`$$Cvip4AR?49wlXK6?|#PGk;(RYsTR}N zZM3d|3^iv(oVszoX^8Z+Y+Y{wG**?m+#9Spx`i?465U%W!eYGq_BeblF6%!s!SnmF zGF`t@>?x2LrJZLFwVsniP+2kfo_W}^JB3emRo|=9No$WI0UX#_>?H!|BK(xkV-%Te zixwLrr)DgKmeG@5dMVP9s?UOls)BI1O7^J@2A2G0sILQxdF73|_Za0idEu)Dr8)<* zBE3}XGGeKXxTepQ-W|o>$~hE`+r88w^8#ZoM6}IgM9%iiP7L^1NYX=to+5dT_z2HT zW0G2&%xHr>g|gW18O*ldwO`7LDW=w_THQth&gflfNUes5ggrPY5ia^>f?88=MW-;V z*gpq(O}S~s#Kmk!aHWIVl~pB)r-xgRf(D#X_>@Tqx|5tGnR0fEg$ZLe0iw;7(N~)) zX}OJ?Y6VPk7XyI``P(~s0>v`&6GrH>^812Fo&x0_;dL4u5R;2V)ksP@Y6Z%$!(gh! zkwcQkfn5@`5K?>!h)Xz*{3!aYds=Lb7uFlJvoPF9fqk#GL*7~;9ydMRXHDljE}s}{A{{iM zV0>I(&hMlssM4i^XI@pZs*Q8?Vcf4%?K0p|WB>QfO=_WJpH<}N);;tJHF!z&JNd?% zm~@peII07kjC=5%Rcs@5T)q+(smAj>ug(b0Wwn zq*wv1&*%l0y;DeI`q;Oh-SWLK`6lcDbI**u_Tbc1Ud``8^OofG;>!OQ`YHw0YMa9( z0VJU8!XNtDk1FzwVgM?tN&rfZ)j;V43C1EF7gL+JRie^RNiils@feYc#?REfKHjnE z&UL1)Zx*qd>AcCiOt4$6MUsn9E!OMB1eX(h3X?StfC&l`V>dKgb!}G3&v7rJ?KIL& zX=s~_%IgG=G9-YJF|guk*XK5v1U;)!adO}W38ev+Gg*NYF6Lh4yRO^5l83F`TMnd& z6uQdP+liJx3eza2+{Xf1>_m@zOj}SEhc^Nv;cvEB?U%AJQ};lZ6N0Y@7`7X|oxjEh zm+yd55lKk++g5^8-H&VmrV&a;YfR*^_tOu3WM&{aKxGEjNk#kOJmrNs=k8zR=R+l= zzERO%Hd(Szsi_U!>mHxGqAgzFOO4IZXvNnrh=g%e%mWwy0O{_9HuW9V%l@X?$nZx4 z?o?kKDxP2O|GuxALFLx48{RUaRVid%gg=Z^S+04k1=(8$K22wYTDt+ z0mXHd<;`U`V5KENDoxFT!2p_wr#hC)@?A-|S|9pX)!RPGuJ}dI(Rcp<)Os^$zQoqr z?Oc2LEMJZ@#vTqp-AZiSC-%c0fslzeF=Z9a=6^Fq=Ti6<8*)6?q|+=W`XmggDkw$GQ_Wlm-p#r^s&3SHpmTwOL=NhLyH zqv26Vote|*4xej@29u3P=lo=<9Caf^(bVKG3%gGcS!qRS^B`K7N zQ?MDsWy?Vwv8u|2cnD~9Qv{`Sl);rS8@ysIxdmxR*{1mra9C!XxBNxyufs973hb34 zB=P3#IL5}bK;IY#(@wa`oua-5Ff}Cs%qWm!R_BJ|pWLUuT=pxB7&1q@<{*Xh7$W?P zN0biE-QK;>;6lS1fK;Dvx)bJ%@#WWOBNkLWN%xZpRA>zH;v*dLTRg->9KSgkZo9M# zUjSXfXoI{crc%PDFHV!9&BLbMC2(v|y8{-LH9$VzvtOzfTX+_Y*50Sg2X@~TFD zxT&|hKg;fJX$1^h-9LCP_O?5Op`+`I6Ud%Xl=()u`k{uX(^;cEL-xbqa4qaejlNj3 zBW7kX;_*t5aq$7 z!jztm2f8P2M4-0NXF>rUueJ+wO+x1q8Z|PF&dSkO4)BD7DH(qq(V*6sITAKp@X(}` zhYKsqooFPkNk{=oROAu{$-~XA-1j4@l&A4A72S8cdO*{q=D5K)c9_vRx2|#xKc#bK z@1JEMc5fi1WiwgeG8`w}8vRAO?b|-tQP&S^Kxs+g55Al9w)wtw1skB(mTDYOso}yo z`p$s3*XzzQyG6HceRq87xhNq;my50NszO{USOzK$lXx9LNNzNWwY418;sypUFI75M z{{SEAHriWLIxAXIsC0>I!RVc$B>w0GBVwK|J1O6<9x zjMcBkTu4HaNK$Y~D(@16s&!9JTHdyu{Y`eW1dOHcJ`p0e^tY>SZ5>{XHqyD%9^5vz)>TJB~B!s)Cg?qZldVx>q>T; zGsCaBpacX-3aL1Qmjey9odwrc2EG3J%3{Wy65ty-hXC(^S;cYY)}cINQl1;VQC(dy zxE>-JtF$-i_A#mQq)&Xky}K(6W>U#xUsik|VY+SmaiGRBMn(rw0!on6_2V*sA?UAE z^NU56uB>!Ee(j@)B`QV9vvH;zO2nk3I^ZDhgsRG!bjP+L9Cns-w>x@7Y7VN|aSMTs zgZ8dl>e4wYS%RHS{%vWOKX|aGS$FE$wrwWf>x~Fa%CFkED;#A-!y*;MjnC=3^w`bB z>Z%HrQkfi%pjK+QtS##mo6XbS)`q#PAb~IzN+w7xBP=jTznszM7T%vqEgeYvu5booS37EjIdvF`s-Jml@3%K#iaqJI~!M<_KHa8LVVw0XDTV z?c1|(@qjG}HH_9U&LNja6y|sP-g$n>t`Z!uu<0GvmaTTD1o#eX5Hq31w;ApAG zUK!1}4Ys5e0+3a(^dF$kr%vZ`t%Ir9)Nwo)NN>kHlo;oqUv2IxTkS0&Xxv}ZU>rk5 zQuD_YP$opPhZo9c80fv0O7eIvGMIj%>MxUZgYOXB1#KskR&8j1~`excSHaM ziz`t`tB$ASmzn;cvecPl%FR=&wa&43FC`@`HGik|Q`$=Z03{az!pkel(UT#^3gsj` zm6Y(vmp5%MeV*NSK&Q|YFw4QU9XO?6p$2qmn zGR(T|t9G4vgg9KWdfjZg0pUxw>j@@c3j&>`8*Qe|^eeLKZm(|2l}(sIKGt!HQEUd zLZlqQ`NWRtg_q&7vYpDV^IsW2w3GfL40km!5c%F(@TF-Wf+zgFu-{y%A~pL)5YTFi zVp6JYROgLH@QB6u@~ke$O(B|o+woWM%DX)`#7W^D;~OiGg8rUf2420g_P`OG6cVYN z8rvTW^#14x(++zWjhJBq0n&TEVgTw<$L@&A+BeEokr&Q5Wu{r|# z^BZe_gtQ+RQ`Yvu)0YNS46knK#dmO=){~JDVll-fm@xs8h4TJtpdU#0$4S0lvsTw*W+zgH>JRo)w`5N6a7-g9sSS5@Sl*Fo?7_Qs zt2?*-CjfK&K}LxJ9=WJLW6?)VGmJm&m^)6T)5IWopDrBxJS#_ zkYFlNrDn};9#QPDOIp=;TDmDNoB~9D>K~XKt4cKGsvIl1QdE}E+JcB68juJAARSZc zj?>e$94feTumECD+ZLBedN*5qtlO%M{#YtW!Yiw(-Am53!W|-FmX~Mz^-eJLz0_FYJ!P=+2DWdRo{DENQqvu1*{{MRn@^XR37excxfc zFf7^Jais|e6HJxGB&do`aSx%^8~)beYh_u?pzMToCehNJH@l|0Fm#9 zmrrUO(*EAx>az#jLQgOyP7r{l045R$6Cgy>YTY+I&?U`kk7}q3pBS&Vowsk>OO3rM zY-%Kcz-14nNb>IOnksQiC=x#rR?V|CiDg=KKmp{CL{}FNrlrgQ4+z`cWIdN%B2t@u z=7OFzgsog?UQ(}{UJrtZi*FYH0GzP6v>`=W6&vDOQ{s@y=T@WwK-zI0BzHxVa?qwo zvBtLm2^kR@1B{U26cz58*|*9XxO`iqnBBWBuu$E?Ze4LIVcSR0kf2oAZN#cXd@*r)bR0Iu z)N+<9OvJ#ELZ)p)B$5zPQ0war2EOvODrKSS@KDLl3owFCQRZ2wGn&Qf-!q>(kmZPB zn=h-&wQmVm)HK_iIklbN3R+Sv((7t{wKmz}DpBGELP(1Pt0>%7vJGMijjXujL6W4G z49wRkp?XfGwHxP}gy?m=!Y|U`r4)iepMqx&-cfGV?n`j%`Ntu#Yyyz;*A{k7xx$;3 zI4)4qgTGI1u+k)=mbh2KD>#L?TDsiSsZ_R@rd3?v(m~a!MkS-l(hraVTQW>PTve@3 z>8)iQZr3CYbCAnQ6D>!~W#(3cf<<+C!_tAA*G+1M5~rJahjMG1!lJ*Z;U8I-xLhCw z&80YycFSfF3+gIbg&U@QCAt+!Bx2Hk^-nx=jrtCA9^i-!$iWE2C%f#3To^MVSWDaA z5t7gVA~v)3hdn~pI-UF5Ul1P#Iyhb#|gkbns@<> zz0gwCl+hqVleEKgzjE5NPD`h)v_7V?YV}My zmTr*8GV^BV7X{T>l_)BCLa+pLuuVWG34@GOU#LB@qqhBp zzz_7|mD7T&kkosXjm3FxpBWK=FxUBYb*p`6=Eq00;c=ZO=7U<@*#)IYSLvF&DaiAi zW$>*Hua@o8R|*7yJa)q$t@g&3U))#6oko-L#IX(%#AOEb9;kn&_OzSy(ydv5b_e4* z&m1C9C6uK>L{L=FU@KAK6&MAx%tgZDqfSvr-5}~tqP(^028&hmPULxqRCOk;v}OA{ zN3OEVoa-=k8M?BZ$;MTfWvpi{SX&FWS#d2t$w^X4nKj2)^>fWEtx_M{QE~Vu!=XM%N3wuOn_V=r`%yL_6hn~K<$ewTU zEpKvXub*+o_?r*fxa#>%1gNA*JtXy3!)Dq40P!BJp;GH(qD$@E!UakWblkwQbvHU` zi%BG6kwAL$`hBU@9a4JVq;7?V^?Rk4jVuqPa2SkjRK=Cr$!Y~EHLVY6AQ)0LBK1?y{4b z)(T^>p^ZJHlZi3O{;>4M(bC)XwT{LBwWVWDgYeY)l#7X~^ZU=JUgF|&mI)H$r#74n zFeNF3&YNXV0T0ZRyP}q^RnYQg3>;)WBq2b`q!i*eiHOm<8eUQp4pyWy`k|URP3N?o z)iSI`FTpG#4^7ik!WpZEcwJpK(9)By+Yvg9{$y=6`F-?JXvJ0om?sZJ2UUI0-CxY$w_nNDaTUFjlofHcm6 zFd241n^6j^Rfn0K3ifNNRPs227V1IZ1W1K~3Gs=Sr<>{6@9Md-)$WSp)NY%l)Vo`4 zY6GMZf@ERL=q>%mK=xmjUAm*oErcm#)ie?uP^VaKt=%hgLQMQ&=c6_XyH4E7NOZNR z7qDXz&#TB6nn~ADH6?b$f&~x4OrpKJAT_Qyh?~-BbxkAcFjKv@0$8D+OFUI09RlDiR_> za-AY=ORB61X&Oi|Ij89M^-9!MyVTH%WfsGtH3pu`>{2aO(o|9Nk~pRXE4aj>+kLjE z%|L+811N=W9T9g-@R*}Km&ii%0U(~y- zN*5FhfXX{xWw4>PS~l8r_2u7boqe{c6b&zhP8it$^`gJDBtyHa`$&tc84_9U^0`1Mh#9(yvhg? zUdX-#>Fe!5VR3nvSr=^{PM*$g64Q(lvRc0vX$?N}S17u&%dS%5%Vd=$zSR?B@BE94 zT6XoHMVB`O8cciI*Hv>`u5C8Cz`ejsh5~Q~Ih$v?rM2#4RC9$UYhiE%hJr?t;sMee zLIUY$8wQ$Y=F2K;ENyJ%jz4j7n_~UCuGFWmKwZ05$V;s~dv>KQFZQ?h7j1g8KG0`mAlV^PCEi%uOMn59VoV zIrwR8!HS=4z9BKVOS^94whRCm=kJY$Uieg&X|vPqj59tlfPf_*DVhpz!+&fQCQ0`8 z`(q1&ffx;?BrQ@XNh?(4@_{mZ0DuxOB*_4oiB>9pAByUgXLZBU(CpXXYo$6r(L zqo1E=*D87S{X*1~sl;<8fE3DjQh8xu@l1Udx~z68yNP%$x~o;-fKWBn2m#7SRB4+~ z5ETK%Z(eMz*}7WoS_pletqMdPDoZG|lt2j{V4=!EKT#Mr-E{KXqk2Kr9edP`BbKi! zcdR+iTXm@!MZ?Zo-R3%S%KFa6{M#vJ-HZ1v-gOSCq^FGmu(_!sH~RYb`lVZYmo#%J zwbYjaTGx3&%0me%8Jr@%=smKo&24dH3H+<7HmgQK&kE$uWezB~XAGVA3|L>ihbqSL z+4i?=>VxT&*D~dQ3WXm|(kal&%Cu zkZ=dILp5;FE~xtH+dOwfQm8z`C_7vc1SjPKL5#aFG@Sbc5Ct8Pj(8)=R|q+_ei!LZ zSnroTkF&-EHbiIlh%Tn<(!NNFs7?S1&Nh;8%bA>^NN#fj1H1nK37#^6B2&TzN$-eB z*6`J~YNfb@nXFGNC*m_UwP#L)?5~=n+Lcg)Fk9aYmvu|17mgofWvu~E zaulB+Tt3*VTddCGPIXytp~W*RiF`DaoE0MjSd2dA>f>&yT7!tH!c)RM5A-jhc74H= zU2w)YJPcyvIw|HB=P%1_ZO<}oA*2N( zX7>?5HMCMgvM0uq^B0_4Fw<76SmFu!)MO?$M8=n^7aYA5MxsV*9NE2kO<_){ePAWP zM%jC+GfhN8_xCGvio7L9g(6cD5e4c#rQCPIw=O)anlOf&U6RLW9J^Kkk*;2&;U-d* zPi`aEIEB%Xhl_V%8ZKhz2N2zi_g5HM?L#c$M`+DOOhxXy+I?0+FAyfXH=1}6LINC0 zr@T^du8`uwe~f#4V$$fU=7Z}}$<&?j3-XO~L|&H|wlk*+eWFL(7Z*p{BieIVsJ&9$ zlHRGw4skL1c)lWp{{UZxoxC#l#k0CwhT370$2xRY=Ie{Pj3g8%IDPG!2p~#TP8&D- z;t6w1l`&%0a02jUDe`Mtj_>B?0y*^c2Fmuy8$qPcXRJQh5lou0pRXpA7ezTW7HUU8aA`dgDW zxt5o%@)fQ?%51TixS5f%Vq>&KZ>nm#meyL|sqas7Tw|iYO7;|QyEK%dVp~t zHKX0CCO_@Lsx;oG$P;0k-sRbC=9WfnWvcG)ZZ56Vax2ukdyr?0rL*-HP9aV?W5U2L zm)St!CBR}+=})P>BhwuldsnRQXj$6qwBJ&zsuigFcNJl#z)R~@4(fDpvz z^>^u>{b$vbw|h}~GMn6+eJT$IfS_EuYWYP<)esuBON-U0(F*C#j@i0CtLhq$6>Qc95Tb`e(T$)cBpHh%2l&b(W5YkUBpeIvNuJZ*tPgiek z^#);_*jl*L_I7y_xf4#c%Qp85OIL4Qyvb|u)`i|)FXA6R4;I+qFVzpJdv96(qra|f z6@|vfvedG&qg9V<>DBzDLsqp~PHME%eR{QYIlowFc3~%-0ku}!`gWUc+F5mTRn=V5 z2y;Wxt!tKQ7|@{LsgzVgSSV7PB1HtF{v?u;J(21qC$_aV)oGL32=M^?;<~5{DmjFq z4j}jxg+Z`3W8dqabSgko#uHQH11)-p_R|jd1SL#iDTWcRYTKihX>CiGB7Dm{hcexNz#tV| zNhiWk!L>Sz?3-DGNiGc`2nvTJK_CJMt!-ZLv(nm%;K&wo4C&d_3AL78EPGQBYk~zb zID_^?pJrjLx?8YdZYhs_Mu?yehBOmm^SCL;Qc9#LG!k)~hs6{pUFxfKN|R<1J?!bC z%YC~}2*LJ5@zU(B;npOTD~E@K8h=F~nF&O{)7_cRstFP)IOV@z`l6MV-ueu8nXNwa z6Mv>TJE1oJ0D`O&Krtq#Wn-sot@JQ7B%{pB=T)y=_YV#(aVO&wr$uEK1-62R0%Rq> z4;&+P+^TIRtA}hi(%SFtoU~~<7ZWIRZ?eYF&OA!t6C-?~px#?Cg{|UoiADEKUS3rd zoZzCHTAjifZBuFj9N#i0v}04g8LlhRddw;L#B%=tWVy3(BpFR%jk-Zg&LoTp!jzn+ zSdCV1^HeM|>J20$5yC4;%#Q7nq$U6*1fZqRYi*7P#E0bx9iN`b!VWVlB>BQbpQpAW zi)g}l&a>{vutvg5vKlpI3eb(RohODHBM5^7ID)=qKg!*Q2#_XZj{g98hRT1-yA35F za<8IO2(Qk(DfDT39OBq4Ic8gUEEP-y5Km;JAZoOmfY)H<5isd`&1ur?J-x7rhvf^Y z%OCG}21MZtJF0tedE5 zx=MHuyQNnN{6LQBN*FfMKh)Zu`0o$X&hM_?gyz!U*%Hg7S(h@-(1lNlmQ{|>C5MDk z8{HmN{Yb0sXlcBQC+~88g@sY-##&Nh> zp?G{ETemk;LPHO)(45O8%`H#I$8Pry+JqTXu!sP2GXR6`F<|T?lXAnv5PU*IJJb7_ zvcd_dN>fv`ND<*EzWPFl*3!|!IlI+ez&3?et_nTTI68Lhg9m6SudCW(;l8)#TK6~Q z9M{nsk)ynptep6f$V!1ig?NA?bwv+^; z^wafN)uQZKRej^`ibvIJZ99df;E<_7%suRMz7B?0J+?eV@W=_{QZV%Hjl0TXXDFvC z$ghNIsb*A^%!r?}7-bErG>WXpj^nufz=N+mNWNo>ks1cDQ? zH}>aNwcprnoEqn9?8F@S%)~pY>9Mt((maH!c&u&9NK%%GQCvyJe=w1(YhQmU+QKVJ z$mTO#@WvS0QK8v{iqXz(evdoOZ6z z7`1pslj#McZ#_fX-13yI`L*153N)Ve@F^C7-QGzh8h4V{FdSD)zc-b z>I$6XC+1BO-1mUT)U;|Fm$h1HX(B)g`HvM-EOk{YHf5Lid?-TsTDcP<;ic2FpAdg;jKU6KV(?l9c=rqqp+p|>%O-h`pgkV{TF2{ z#2GI&Ckw!Af|(Q7KnsrxqVd?yRz+ z9OnRovxIWzshu5LeY!O2w3>OWSZ7Vzx3y)3JW>_#%`>jf=|z)o)g0D_(<|E)Mdznm zZr?Xk4u5o_Q{>u(n`TmmN>d;tM7zC_vUf*3e=*8TMy_@SFzKei){X%q)Lx}3OqAh2 z5~o~8svGOxwGf%4B;A~YAsPmyx=YQez*F&KxOf`vhSu&UUWZ|nHt)SXPQ8PwG$Yz4 z47Jz_d1~Heg>gS*ZtB)lPC3hQq$u4wk-$Q35wKEppJiacDD8&#Ov(;y9tZyb_(N#_ z02z~v7z{>9^AJU!j71jz0O8q$;dgwYmotaAw4qynYH`EwfEXAyW4a)pnwd!-FU&q! z@$BD8ZidhQ0C};pKL!5)F6e@tVd4J(wysa}MQAG@|EyO;f& zRTh6%KM6z4=89kL8!yP>=A-4}=i&V??)bOFOK<-GbE*ChWsau(JS@Kv7bHxuhg+g^ z{XWC<{{SIBHwS03DlV%30CcN|)s%W;eg462xbpMI;V7{#p3jAk%>Ir%Kh+S+Vf6^- z{;9>-M8ng+>6*vo8@FxQ59jIj?Zzmb)A60(8y&~wtGHn~;9;5Hiw%_iq2CQYq@Nl2 zu>OR%ZJyoG;LoSoVrjK~BMftfTRr@%ss8|k=jKa?1CI@50DhRCZNG@m@eDDBD?xr? zl;zKJaKOPBrMjQFrl?Z0Gfbl25!{$A|y?TWY6g#3k%(!AQ3s{JDjlaFdcF`vtX{FwIf zctf@4(G*2*oM{_={4p@ZaLtwkNC&NE#E;G{{Wb_B-j4{cz%Rm!+tB5@n)DrU-G3t`-P`? zc>e%3Uy;E%Ni*j2DZ{^R=;NNIg4bO*41Vn6p-m_M07zng z;i6N+1n#W&&OH9zzwe#?Bklc>=T`Io0DSy0_E>THe?O&j^JO(kd_0+R9Q>c@OTMwM z{{ZyqrYqz0{jm}1pT%#}mwp2n-%sWzxO#Vekfr|s;kUc?{30?wgB8=QrT+5O66OB@ z*KLa(g#LwPsX2eu?H5w={-=H>pFW-%XQ>uZbovax`HkM6ulgp9eIv)e$0Ubat(-sYoZ^3_&+2ntFRA9?`c=mlGF0G~=Wth- zE*i=reL%m|1`Evn{BZYsN*3vFz^RIUS>H|=oOAB&j(&RgKl^8{zdQc`;&m_O@bQ1q zFFsl9-#Dr_55s;q7`nYPPyDxQT_5f?-%_XJGlWw&N$2`Q5|{UXB&G8Vc&ijARWJ1d zn!G;v_YY}KN%}B2tWTbnPHp~Y&9jG#6NbrsvAeaeATKxIp9roxxivfR{+yO4K9S<( zxBjya`CEqguy&=;6Pe(jKZJ9}`kK$-{9*CR`1xb~W&`{U!+c2_tN#GYkN0A@yVI!t zAI3f5$1nbKANdo*Y^eo$r~OPbNNw_|{6CC&Ij0xWJ3pz}`JBGrmxph%8t3_e_?UKl zV_R`g$kqHmpz+}i%D!#BKQ<@Zz9rWG0D?V_x57B{eP8O8SNM;xND0IF&mVW$8;!uj dA;fpVt^BWH`D1tZ%=;jt1KslxpS|NB|JnMFf?5Co diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg6.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg6.png deleted file mode 100644 index 0f28d820b414c07f91399bc27c4d5c8c9e7d819d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30151 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg8.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/pic-click/bg8.png deleted file mode 100644 index f11545fd3e1879ee204dd2887c868188140cea36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37701 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

tj5Ab=+Wn# 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 - - - - - - - - - ./zzlogs/application-webadmin - - ./zzlogs/application-webadmin/backup - - info - - - - - - - - [%-5p] [%d{YYYY-MM-dd HH:mm:ss}] [%t] ==> %msg%n - - - [%-5p] [%d{YYYY-MM-dd HH:mm:ss}] T:[%X{traceId}] S:[%X{sessionId}] U:[%X{userId}] [%t] ==> %msg%n - - - 31 - - 20M - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/pom.xml deleted file mode 100644 index 57a27ce1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/pom.xml +++ /dev/null @@ -1,114 +0,0 @@ - - - - com.orangeforms - common - 1.0.0 - - 4.0.0 - - common-core - 1.0.0 - common-core - jar - - - - - com.google.guava - guava - ${guava.version} - - - org.apache.commons - commons-lang3 - - - commons-io - commons-io - ${commons-io.version} - - - org.apache.httpcomponents - httpclient - - - joda-time - joda-time - ${joda-time.version} - - - org.apache.commons - commons-collections4 - ${commons-collections4.version} - - - org.apache.commons - commons-csv - ${common-csv.version} - - - cn.hutool - hutool-all - ${hutool.version} - - - io.jsonwebtoken - jjwt - ${jjwt.version} - - - com.alibaba - fastjson - ${fastjson.version} - - - com.github.ben-manes.caffeine - caffeine - ${caffeine.version} - - - cn.jimmyshi - bean-query - ${bean.query.version} - - - - org.apache.poi - poi-ooxml - ${poi-ooxml.version} - - - - org.postgresql - postgresql - runtime - - - com.alibaba - druid-spring-boot-starter - ${druid.version} - - - com.sun - jconsole - - - com.sun - tools - - - - - com.baomidou - mybatis-plus-boot-starter - ${mybatisplus.version} - - - com.github.pagehelper - pagehelper-spring-boot-starter - ${pagehelper.version} - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyControllerAdvice.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyControllerAdvice.java deleted file mode 100644 index af811c83..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyControllerAdvice.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.orangeforms.common.core.advice; - -import com.orangeforms.common.core.util.MyDateUtil; -import org.springframework.beans.propertyeditors.CustomDateEditor; -import org.springframework.web.bind.WebDataBinder; -import org.springframework.web.bind.annotation.ControllerAdvice; -import org.springframework.web.bind.annotation.InitBinder; - -import java.text.SimpleDateFormat; -import java.util.Date; - -/** - * Controller的环绕拦截类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@ControllerAdvice -public class MyControllerAdvice { - - /** - * 转换前端传入的日期变量参数为指定格式。 - * - * @param binder 数据绑定参数。 - */ - @InitBinder - public void initBinder(WebDataBinder binder) { - binder.registerCustomEditor(Date.class, - new CustomDateEditor(new SimpleDateFormat(MyDateUtil.COMMON_SHORT_DATETIME_FORMAT), false)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyExceptionHandler.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyExceptionHandler.java deleted file mode 100644 index ef1721a9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/advice/MyExceptionHandler.java +++ /dev/null @@ -1,141 +0,0 @@ -package com.orangeforms.common.core.advice; - -import com.orangeforms.common.core.exception.*; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.object.ResponseResult; -import com.orangeforms.common.core.util.ContextUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.ibatis.exceptions.PersistenceException; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.DuplicateKeyException; -import org.springframework.dao.PermissionDeniedDataAccessException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.concurrent.TimeoutException; - -/** - * 业务层的异常处理类,这里只是给出最通用的Exception的捕捉,今后可以根据业务需要, - * 用不同的函数,处理不同类型的异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@RestControllerAdvice("com.orangeforms") -public class MyExceptionHandler { - - /** - * 通用异常处理方法。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = Exception.class) - public ResponseResult exceptionHandle(Exception ex, HttpServletRequest request) { - log.error("Unhandled exception from URL [" + request.getRequestURI() + "]", ex); - ContextUtil.getHttpResponse().setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); - return ResponseResult.error(ErrorCodeEnum.UNHANDLED_EXCEPTION, ex.getMessage()); - } - - /** - * 无效的实体对象异常。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = InvalidDataModelException.class) - public ResponseResult invalidDataModelExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("InvalidDataModelException exception from URL [" + request.getRequestURI() + "]", ex); - return ResponseResult.error(ErrorCodeEnum.INVALID_DATA_MODEL); - } - - /** - * 无效的实体对象字段异常。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = InvalidDataFieldException.class) - public ResponseResult invalidDataFieldExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("InvalidDataFieldException exception from URL [" + request.getRequestURI() + "]", ex); - return ResponseResult.error(ErrorCodeEnum.INVALID_DATA_FIELD); - } - - /** - * 无效类字段异常。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = InvalidClassFieldException.class) - public ResponseResult invalidClassFieldExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("InvalidClassFieldException exception from URL [" + request.getRequestURI() + "]", ex); - return ResponseResult.error(ErrorCodeEnum.INVALID_CLASS_FIELD); - } - - /** - * 重复键异常处理方法。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = DuplicateKeyException.class) - public ResponseResult duplicateKeyExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("DuplicateKeyException exception from URL [" + request.getRequestURI() + "]", ex); - return ResponseResult.error(ErrorCodeEnum.DUPLICATED_UNIQUE_KEY); - } - - /** - * 数据访问失败异常处理方法。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = DataAccessException.class) - public ResponseResult dataAccessExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("DataAccessException exception from URL [" + request.getRequestURI() + "]", ex); - if (ex.getCause() instanceof PersistenceException - && ex.getCause().getCause() instanceof PermissionDeniedDataAccessException) { - return ResponseResult.error(ErrorCodeEnum.DATA_PERM_ACCESS_FAILED); - } - return ResponseResult.error(ErrorCodeEnum.DATA_ACCESS_FAILED); - } - - /** - * 操作不存在或已逻辑删除数据的异常处理方法。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = NoDataAffectException.class) - public ResponseResult noDataEffectExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("NoDataAffectException exception from URL [" + request.getRequestURI() + "]", ex); - return ResponseResult.error(ErrorCodeEnum.DATA_NOT_EXIST); - } - - /** - * Redis缓存访问异常处理方法。 - * - * @param ex 异常对象。 - * @param request http请求。 - * @return 应答对象。 - */ - @ExceptionHandler(value = RedisCacheAccessException.class) - public ResponseResult redisCacheAccessExceptionHandle(Exception ex, HttpServletRequest request) { - log.error("RedisCacheAccessException exception from URL [" + request.getRequestURI() + "]", ex); - if (ex.getCause() instanceof TimeoutException) { - return ResponseResult.error(ErrorCodeEnum.REDIS_CACHE_ACCESS_TIMEOUT); - } - return ResponseResult.error(ErrorCodeEnum.REDIS_CACHE_ACCESS_STATE_ERROR); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DeptFilterColumn.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DeptFilterColumn.java deleted file mode 100644 index f7979816..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DeptFilterColumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记数据权限中基于DeptId进行过滤的字段。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DeptFilterColumn { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableDataFilter.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableDataFilter.java deleted file mode 100644 index 273e8259..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableDataFilter.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 作为DisableDataFilterAspect的切点。 - * 该注解仅能标记在方法上,方法内所有的查询语句,均不会被Mybatis拦截器过滤数据。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DisableDataFilter { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableTenantFilter.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableTenantFilter.java deleted file mode 100644 index c694d0c5..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/DisableTenantFilter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 仅用于微服务的多租户项目。 - * 用于注解DAO层Mapper对象的租户过滤规则。被包含的方法将不会进行租户Id的过滤。 - * 对于tk mapper和mybatis plus中的内置方法,可以直接指定方法名即可,如:selectOne。 - * 需要说明的是,在大多数场景下,只要在实体对象中指定了租户Id字段,基于该主表的绝大部分增删改操作, - * 都需要经过租户Id过滤,仅当查询非常复杂,或者主表不在SQL语句之中的时候,可以通过该注解禁用该SQL, - * 并根据需求通过手动的方式实现租户过滤。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface DisableTenantFilter { - - /** - * 包含的方法名称数组。该值不能为空,因为如想取消所有方法的租户过滤, - * 可以通过在实体对象中不指定租户Id字段注解的方式实现。 - * - * @return 被包括的方法名称数组。 - */ - String[] includeMethodName(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/EnableDataPerm.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/EnableDataPerm.java deleted file mode 100644 index 4907c9fe..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/EnableDataPerm.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 用于注解DAO层Mapper对象的数据权限规则。 - * 由于框架使用了tk.mapper,所以并非所有的Mapper接口均在当前Mapper对象中定义,有一部分被tk.mapper封装,如selectAll等。 - * 如果需要排除tk.mapper中的方法,可以直接使用tk.mapper基类所声明的方法名称即可。 - * 另外,比较特殊的场景是,因为tk.mapper是通用框架,所以同样的selectAll方法,可以获取不同的数据集合,因此在service中如果 - * 出现两个不同的方法调用Mapper的selectAll方法,但是一个需要参与过滤,另外一个不需要参与,那么就需要修改当前类的Mapper方法, - * 将其中一个方法重新定义一个具体的接口方法,并重新设定其是否参与数据过滤。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface EnableDataPerm { - - /** - * 排除的方法名称数组。如果为空,所有的方法均会被Mybaits拦截注入权限过滤条件。 - * - * @return 被排序的方法名称数据。 - */ - String[] excluseMethodName() default {}; - - /** - * 必须包含能看用户自己数据的数据过滤条件,如果当前用户的数据过滤中,没有DataPermRuleType.TYPE_USER_ONLY, - * 在进行数据权限过滤时,会自动包含该权限。 - * - * @return 是否必须包含DataPermRuleType.TYPE_USER_ONLY类型的数据权限。 - */ - boolean mustIncludeUserRule() default false; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/JobUpdateTimeColumn.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/JobUpdateTimeColumn.java deleted file mode 100644 index ebdbfc0a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/JobUpdateTimeColumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记Job实体对象的更新时间字段。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface JobUpdateTimeColumn { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSource.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSource.java deleted file mode 100644 index 270a734b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSource.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记Service所依赖的数据源类型。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface MyDataSource { - - /** - * 标注的数据源类型 - * @return 当前标注的数据源类型。 - */ - int value(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSourceResolver.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSourceResolver.java deleted file mode 100644 index b735fc5d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyDataSourceResolver.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.util.DataSourceResolver; - -import java.lang.annotation.*; - -/** - * 基于自定义解析规则的多数据源注解。主要用于标注Service的实现类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target(ElementType.TYPE) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface MyDataSourceResolver { - - /** - * 多数据源路由键解析接口的Class。 - * @return 多数据源路由键解析接口的Class。 - */ - Class resolver(); - - /** - * DataSourceResolver.resovle方法的入参。 - * @return DataSourceResolver.resovle方法的入参。 - */ - String arg() default ""; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyRequestBody.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyRequestBody.java deleted file mode 100644 index e86f7c66..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/MyRequestBody.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 标记Controller中的方法参数,参数解析器会根据该注解将请求中的JSON数据,映射到参数中的绑定字段。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target(ElementType.PARAMETER) -@Retention(RetentionPolicy.RUNTIME) -public @interface MyRequestBody { - - /** - * 是否必须出现的参数。 - */ - boolean required() default false; - /** - * 解析时用到的JSON的key。 - */ - String value() default ""; - /** - * 集合元素的ClassType。只有在接口参数为List的时候,需要把E的class传入。 - * 缺省值Class.class表示没有设置。 - */ - Class elementType() default Class.class; -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/NoAuthInterface.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/NoAuthInterface.java deleted file mode 100644 index 7f4df277..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/NoAuthInterface.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记无需Token验证的接口 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.METHOD, ElementType.TYPE}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface NoAuthInterface { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationConstDict.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationConstDict.java deleted file mode 100644 index ac2a8380..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationConstDict.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 标识Model和常量字典之间的关联关系。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationConstDict { - - /** - * 当前对象的关联Id字段名称。 - * - * @return 当前对象的关联Id字段名称。 - */ - String masterIdField(); - - /** - * 被关联的常量字典的Class对象。 - * - * @return 关联的常量字典的Class对象。 - */ - Class constantDictClass(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationDict.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationDict.java deleted file mode 100644 index 517b500c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationDict.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.object.DummyClass; - -import java.lang.annotation.*; - -/** - * 标识Model之间的字典关联关系。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationDict { - - /** - * 当前对象的关联Id字段名称。 - * - * @return 当前对象的关联Id字段名称。 - */ - String masterIdField(); - - /** - * 被关联Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class slaveModelClass(); - - /** - * 被关联Model对象的关联Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String slaveIdField(); - - /** - * 被关联Model对象的关联Name字段名称。 - * - * @return 被关联Model对象的关联Name字段名称。 - */ - String slaveNameField(); - - /** - * 被关联的本地Service对象名称。 - * 该参数的优先级高于 slaveService(),如果定义了该值,会优先使用加载service的bean对象。 - * - * @return 被关联的本地Service对象名称。 - */ - String slaveServiceName() default ""; - - /** - * 被关联的本地Service对象CLass类型。 - * - * @return 被关联的本地Service对象CLass类型。 - */ - Class slaveServiceClass() default DummyClass.class; - - /** - * 在同一个实体对象中,如果有一对一关联和字典关联,都是基于相同的主表字段,并关联到 - * 相同关联表的同一关联字段时,可以在字典关联的注解中引用被一对一注解标准的对象属性。 - * 从而在数据整合时,当前字典的数据可以直接取自"equalOneToOneRelationField"指定 - * 的字段,从而避免一次没必要的数据库查询操作,提升了加载显示的效率。 - * - * @return 与该字典字段引用关系完全相同的一对一关联属性名称。 - */ - String equalOneToOneRelationField() default ""; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToMany.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToMany.java deleted file mode 100644 index 29989daa..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToMany.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 标注多对多的Model关系。 - * 重要提示:由于多对多关联表数据,很多时候都不需要跟随主表数据返回,所以该注解不会在 - * 生成的时候自动添加到实体类字段上,需要的时候,用户可自行手动添加。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationManyToMany { - - /** - * 多对多中间表的Mapper对象名称。 - * - * @return 被关联的本地Service对象名称。 - */ - String relationMapperName(); - - /** - * 多对多关联表Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class relationModelClass(); - - /** - * 多对多关联表Model对象中与主表关联的Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String relationMasterIdField(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToManyAggregation.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToManyAggregation.java deleted file mode 100644 index 8da05ee6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationManyToManyAggregation.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.object.DummyClass; - -import java.lang.annotation.*; - -/** - * 主要用于多对多的Model关系。标注通过从表关联字段或者关联表关联字段计算主表聚合计算字段的规则。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationManyToManyAggregation { - - /** - * 当前对象的关联Id字段名称。 - * - * @return 当前对象的关联Id字段名称。 - */ - String masterIdField(); - - /** - * 被关联的本地Service对象名称。 - * 该参数的优先级高于 slaveService(),如果定义了该值,会优先使用加载service的bean对象。 - * - * @return 被关联的本地Service对象名称。 - */ - String slaveServiceName() default ""; - - /** - * 被关联的本地Service对象CLass类型。 - * - * @return 被关联的本地Service对象CLass类型。 - */ - Class slaveServiceClass() default DummyClass.class; - - /** - * 多对多从表Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class slaveModelClass(); - - /** - * 多对多从表Model对象的关联Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String slaveIdField(); - - /** - * 多对多关联表Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class relationModelClass(); - - /** - * 多对多关联表Model对象中与主表关联的Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String relationMasterIdField(); - - /** - * 多对多关联表Model对象中与从表关联的Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String relationSlaveIdField(); - - /** - * 聚合计算所在的Model。 - * - * @return 聚合计算所在Model的Class。 - */ - Class aggregationModelClass(); - - /** - * 聚合类型。具体数值参考AggregationType对象。 - * - * @return 聚合类型。 - */ - int aggregationType(); - - /** - * 聚合计算所在Model的字段名称。 - * - * @return 聚合计算所在Model的字段名称。 - */ - String aggregationField(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToMany.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToMany.java deleted file mode 100644 index 4f7463a5..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToMany.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.object.DummyClass; - -import java.lang.annotation.*; - -/** - * 标识Model之间的一对多关联关系。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationOneToMany { - - /** - * 当前对象的关联Id字段名称。 - * - * @return 当前对象的关联Id字段名称。 - */ - String masterIdField(); - - /** - * 被关联Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class slaveModelClass(); - - /** - * 被关联Model对象的关联Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String slaveIdField(); - - /** - * 被关联的本地Service对象名称。 - * 该参数的优先级高于 slaveService(),如果定义了该值,会优先使用加载service的bean对象。 - * - * @return 被关联的本地Service对象名称。 - */ - String slaveServiceName() default ""; - - /** - * 被关联的本地Service对象CLass类型。 - * - * @return 被关联的本地Service对象CLass类型。 - */ - Class slaveServiceClass() default DummyClass.class; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToManyAggregation.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToManyAggregation.java deleted file mode 100644 index a4771557..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToManyAggregation.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.object.DummyClass; - -import java.lang.annotation.*; - -/** - * 主要用于一对多的Model关系。标注通过从表关联字段计算主表聚合计算字段的规则。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationOneToManyAggregation { - - /** - * 当前对象的关联Id字段名称。 - * - * @return 当前对象的关联Id字段名称。 - */ - String masterIdField(); - - /** - * 被关联的本地Service对象名称。 - * 该参数的优先级高于 slaveService(),如果定义了该值,会优先使用加载service的bean对象。 - * - * @return 被关联的本地Service对象名称。 - */ - String slaveServiceName() default ""; - - /** - * 被关联的本地Service对象CLass类型。 - * - * @return 被关联的本地Service对象CLass类型。 - */ - Class slaveServiceClass() default DummyClass.class; - - /** - * 被关联Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class slaveModelClass(); - - /** - * 被关联Model对象的关联Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String slaveIdField(); - - /** - * 被关联Model对象中参与计算的聚合类型。具体数值参考AggregationType对象。 - * - * @return 被关联Model对象中参与计算的聚合类型。 - */ - int aggregationType(); - - /** - * 被关联Model对象中参与聚合计算的字段名称。 - * - * @return 被关联Model对象中参与计算字段的名称。 - */ - String aggregationField(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToOne.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToOne.java deleted file mode 100644 index ea79da75..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/RelationOneToOne.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.object.DummyClass; - -import java.lang.annotation.*; - -/** - * 标识Model之间的一对一关联关系。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD, ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface RelationOneToOne { - - /** - * 当前对象的关联Id字段名称。 - * - * @return 当前对象的关联Id字段名称。 - */ - String masterIdField(); - - /** - * 被关联Model对象的Class对象。 - * - * @return 被关联Model对象的Class对象。 - */ - Class slaveModelClass(); - - /** - * 被关联Model对象的关联Id字段名称。 - * - * @return 被关联Model对象的关联Id字段名称。 - */ - String slaveIdField(); - - /** - * 被关联的本地Service对象名称。 - * 该参数的优先级高于 slaveService(),如果定义了该值,会优先使用加载service的bean对象。 - * - * @return 被关联的本地Service对象名称。 - */ - String slaveServiceName() default ""; - - /** - * 被关联的本地Service对象CLass类型。 - * - * @return 被关联的本地Service对象CLass类型。 - */ - Class slaveServiceClass() default DummyClass.class; - - /** - * 在一对一关联时,是否加载从表的字典关联。 - * - * @return 是否加载从表的字典关联。true关联,false则只返回从表自身数据。 - */ - boolean loadSlaveDict() default true; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/TenantFilterColumn.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/TenantFilterColumn.java deleted file mode 100644 index 7e22490c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/TenantFilterColumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记通过租户Id进行过滤的字段。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface TenantFilterColumn { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UploadFlagColumn.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UploadFlagColumn.java deleted file mode 100644 index dde82b59..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UploadFlagColumn.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import com.orangeforms.common.core.upload.UploadStoreTypeEnum; - -import java.lang.annotation.*; - -/** - * 用于标记支持数据上传和下载的字段。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface UploadFlagColumn { - - /** - * 上传数据存储类型。 - * - * @return 上传数据存储类型。 - */ - UploadStoreTypeEnum storeType(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UserFilterColumn.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UserFilterColumn.java deleted file mode 100644 index f73e918a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/annotation/UserFilterColumn.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.orangeforms.common.core.annotation; - -import java.lang.annotation.*; - -/** - * 主要用于标记数据权限中基于UserId进行过滤的字段。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface UserFilterColumn { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceAspect.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceAspect.java deleted file mode 100644 index d2025b90..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceAspect.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.orangeforms.common.core.aop; - -import com.orangeforms.common.core.annotation.MyDataSource; -import com.orangeforms.common.core.config.DataSourceContextHolder; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -/** - * 多数据源AOP切面处理类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Aspect -@Component -@Order(1) -@Slf4j -public class DataSourceAspect { - - /** - * 所有配置MyDataSource注解的Service实现类。 - */ - @Pointcut("execution(public * com.orangeforms..service..*(..)) " + - "&& @target(com.orangeforms.common.core.annotation.MyDataSource)") - public void datasourcePointCut() { - // 空注释,避免sonar警告 - } - - @Around("datasourcePointCut()") - public Object around(ProceedingJoinPoint point) throws Throwable { - Class clazz = point.getTarget().getClass(); - MyDataSource ds = clazz.getAnnotation(MyDataSource.class); - // 通过判断 DataSource 中的值来判断当前方法应用哪个数据源 - Integer originalType = DataSourceContextHolder.setDataSourceType(ds.value()); - log.debug("set datasource is " + ds.value()); - try { - return point.proceed(); - } finally { - DataSourceContextHolder.unset(originalType); - log.debug("unset datasource is " + originalType); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceResolveAspect.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceResolveAspect.java deleted file mode 100644 index edd38806..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DataSourceResolveAspect.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.orangeforms.common.core.aop; - -import com.orangeforms.common.core.annotation.MyDataSourceResolver; -import com.orangeforms.common.core.util.DataSourceResolver; -import com.orangeforms.common.core.config.DataSourceContextHolder; -import com.orangeforms.common.core.util.ApplicationContextHolder; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * 基于自定义解析规则的多数据源AOP切面处理类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Aspect -@Component -@Order(1) -@Slf4j -public class DataSourceResolveAspect { - - private final Map, DataSourceResolver> resolverMap = new HashMap<>(); - - /** - * 所有配置 MyDataSource 注解的Service。 - */ - @Pointcut("execution(public * com.orangeforms..service..*(..)) " + - "&& @target(com.orangeforms.common.core.annotation.MyDataSourceResolver)") - public void datasourceResolverPointCut() { - // 空注释,避免sonar警告 - } - - @Around("datasourceResolverPointCut()") - public Object around(ProceedingJoinPoint point) throws Throwable { - Class clazz = point.getTarget().getClass(); - MyDataSourceResolver dsr = clazz.getAnnotation(MyDataSourceResolver.class); - Class resolverClass = dsr.resolver(); - DataSourceResolver resolver = resolverMap.get(resolverClass); - if (resolver == null) { - resolver = ApplicationContextHolder.getBean(resolverClass); - resolverMap.put(resolverClass, resolver); - } - int type = resolver.resolve(dsr.arg(), point.getArgs()); - // 通过判断 DataSource 中的值来判断当前方法应用哪个数据源 - Integer originalType = DataSourceContextHolder.setDataSourceType(type); - log.debug("set datasource is " + type); - try { - return point.proceed(); - } finally { - DataSourceContextHolder.unset(originalType); - log.debug("unset datasource is " + originalType); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DictCacheSyncAspect.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DictCacheSyncAspect.java deleted file mode 100644 index 58d4fe3d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/aop/DictCacheSyncAspect.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.orangeforms.common.core.aop; - -import com.orangeforms.common.core.base.service.BaseDictService; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.core.Ordered; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -import java.io.Serializable; - -/** - * 字典缓存同步的AOP。该AOP的优先级必须比事务切面的优先级高,因此会在事务外执行该切面的代码。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Aspect -@Component -@Order(Ordered.LOWEST_PRECEDENCE - 1) -@Slf4j -public class DictCacheSyncAspect { - - /** - * BaseDictService 字典服务父类中的字典数据增删改的方法。 - */ - @Pointcut("execution(public * com.orangeforms..BaseDictService.saveNew (..)) " + - "|| execution(public * com.orangeforms..BaseDictService.update (..)) " + - "|| execution(public * com.orangeforms..BaseDictService.remove (..))" ) - public void baseDictServicePointCut() { - // 空注释,避免sonar警告 - } - - @SuppressWarnings("unchecked") - @Around("baseDictServicePointCut()") - public Object around(ProceedingJoinPoint joinPoint) throws Throwable { - String methodName = joinPoint.getSignature().getName(); - Object arg = joinPoint.getArgs()[0]; - if ("saveNew".equals(methodName)) { - Object data = joinPoint.proceed(); - 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(); - // update的方法返回的是boolean,因此这里的参数需要使用第一个参数即可。 - service.putDictionaryCache(arg); - return data; - } else { - // remove - BaseDictService service = - (BaseDictService) joinPoint.getTarget(); - service.removeDictionaryCache((Serializable) arg); - return joinPoint.proceed(); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/dao/BaseDaoMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/dao/BaseDaoMapper.java deleted file mode 100644 index bb19dcef..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/dao/BaseDaoMapper.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.orangeforms.common.core.base.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.Select; - -import java.util.List; -import java.util.Map; - -/** - * 数据访问对象的基类。 - * - * @param 主Model实体对象。 - * @author Jerry - * @date 2022-02-20 - */ -public interface BaseDaoMapper extends BaseMapper { - - /** - * 根据指定的表名、显示字段列表、过滤条件字符串和分组字段,返回聚合计算后的查询结果。 - * - * @param selectTable 表名称。 - * @param selectFields 返回字段列表,逗号分隔。 - * @param whereClause SQL常量形式的条件从句。 - * @param groupBy 分组字段列表,逗号分隔。 - * @return 对象可选字段Map列表。 - */ - @Select("") - List> getGroupedListByCondition( - @Param("selectTable") String selectTable, - @Param("selectFields") String selectFields, - @Param("whereClause") String whereClause, - @Param("groupBy") String groupBy); - - /** - * 根据指定的表名、显示字段列表、过滤条件字符串和排序字符串,返回查询结果。 - * - * @param selectTable 表名称。 - * @param selectFields 选择的字段列表。 - * @param whereClause 过滤字符串。 - * @param orderBy 排序字符串。 - * @return 查询结果。 - */ - @Select("") - List> getListByCondition( - @Param("selectTable") String selectTable, - @Param("selectFields") String selectFields, - @Param("whereClause") String whereClause, - @Param("orderBy") String orderBy); - - /** - * 用指定过滤条件,计算记录数量。 - * - * @param selectTable 表名称。 - * @param whereClause 过滤字符串。 - * @return 返回过滤后的数据数量。 - */ - @Select("") - int getCountByCondition(@Param("selectTable") String selectTable, @Param("whereClause") String whereClause); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/BaseModelMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/BaseModelMapper.java deleted file mode 100644 index baf84a27..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/BaseModelMapper.java +++ /dev/null @@ -1,124 +0,0 @@ -package com.orangeforms.common.core.base.mapper; - -import cn.hutool.core.bean.BeanUtil; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.*; -import java.util.stream.Collectors; - -/** - * Model对象到Domain类型对象的相互转换。实现类通常声明在Model实体类中。 - * - * @param Domain域对象类型。 - * @param Model实体对象类型。 - * @author Jerry - * @date 2022-02-20 - */ -public interface BaseModelMapper { - - /** - * 转换Model实体对象到Domain域对象。 - * - * @param model Model实体对象。 - * @return Domain域对象。 - */ - D fromModel(M model); - - /** - * 转换Model实体对象列表到Domain域对象列表。 - * - * @param modelList Model实体对象列表。 - * @return Domain域对象列表。 - */ - List fromModelList(List modelList); - - /** - * 转换Domain域对象到Model实体对象。 - * - * @param domain Domain域对象。 - * @return Model实体对象。 - */ - M toModel(D domain); - - /** - * 转换Domain域对象列表到Model实体对象列表。 - * - * @param domainList Domain域对象列表。 - * @return Model实体对象列表。 - */ - List toModelList(List domainList); - - /** - * 转换bean到map - * - * @param bean bean对象。 - * @param ignoreNullValue 值为null的字段是否转换到Map。 - * @param bean类型。 - * @return 转换后的map对象。 - */ - default Map beanToMap(T bean, boolean ignoreNullValue) { - return BeanUtil.beanToMap(bean, false, ignoreNullValue); - } - - /** - * 转换bean集合到map集合 - * - * @param dataList bean对象集合。 - * @param ignoreNullValue 值为null的字段是否转换到Map。 - * @param bean类型。 - * @return 转换后的map对象集合。 - */ - default List> beanToMap(List dataList, boolean ignoreNullValue) { - if (CollectionUtils.isEmpty(dataList)) { - return new LinkedList<>(); - } - return dataList.stream() - .map(o -> BeanUtil.beanToMap(o, false, ignoreNullValue)) - .collect(Collectors.toList()); - } - - /** - * 转换map到bean。 - * - * @param map map对象。 - * @param beanClazz bean的Class对象。 - * @param bean类型。 - * @return 转换后的bean对象。 - */ - default T mapToBean(Map map, Class beanClazz) { - return BeanUtil.toBeanIgnoreError(map, beanClazz); - } - - /** - * 转换map集合到bean集合。 - * - * @param mapList map对象集合。 - * @param beanClazz bean的Class对象。 - * @param bean类型。 - * @return 转换后的bean对象集合。 - */ - default List mapToBean(List> mapList, Class beanClazz) { - if (CollectionUtils.isEmpty(mapList)) { - return new LinkedList<>(); - } - return mapList.stream() - .map(m -> BeanUtil.toBeanIgnoreError(m, beanClazz)) - .collect(Collectors.toList()); - } - - /** - * 对于Map字段到Map字段的映射场景,MapStruct会根据方法签名自动选择该函数 - * 作为对象copy的函数。由于该函数是直接返回的,因此没有对象copy,效率更高。 - * 如果没有该函数,MapStruct会生成如下代码: - * Map map = courseDto.getTeacherIdDictMap(); - * if ( map != null ) { - * course.setTeacherIdDictMap( new HashMap( map ) ); - * } - * - * @param map map对象。 - * @return 直接返回的map。 - */ - default Map mapToMap(Map map) { - return map; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/DummyModelMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/DummyModelMapper.java deleted file mode 100644 index 09e98939..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/mapper/DummyModelMapper.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.orangeforms.common.core.base.mapper; - -import java.util.List; - -/** - * 哑元占位对象。Model实体对象和Domain域对象相同的场景下使用。 - * 由于没有实际的数据转换,因此同时保证了代码统一和执行效率。 - * - * @param 数据类型。 - * @author Jerry - * @date 2022-02-20 - */ -public class DummyModelMapper implements BaseModelMapper { - - /** - * 不转换直接返回。 - * - * @param model Model实体对象。 - * @return Domain域对象。 - */ - @Override - public M fromModel(M model) { - return model; - } - - /** - * 不转换直接返回。 - * - * @param modelList Model实体对象列表。 - * @return Domain域对象列表。 - */ - @Override - public List fromModelList(List modelList) { - return modelList; - } - - /** - * 不转换直接返回。 - * - * @param domain Domain域对象。 - * @return Model实体对象。 - */ - @Override - public M toModel(M domain) { - return domain; - } - - /** - * 不转换直接返回。 - * - * @param domainList Domain域对象列表。 - * @return Model实体对象列表。 - */ - @Override - public List toModelList(List domainList) { - return domainList; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseDictService.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseDictService.java deleted file mode 100644 index 9aa5fe44..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseDictService.java +++ /dev/null @@ -1,266 +0,0 @@ -package com.orangeforms.common.core.base.service; - -import cn.hutool.core.util.ReflectUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.orangeforms.common.core.constant.GlobalDeletedFlag; -import com.orangeforms.common.core.exception.MyRuntimeException; -import com.orangeforms.common.core.cache.DictionaryCache; -import com.orangeforms.common.core.object.TokenData; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.*; - -/** - * 带有缓存功能的字典Service基类,需要留意的是,由于缓存基于Key/Value方式存储, - * 目前仅支持基于主键字段的缓存查找,其他条件的查找仍然从数据源获取。 - * - * @param Model实体对象的类型。 - * @param Model对象主键的类型。 - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public abstract class BaseDictService extends BaseService implements IBaseDictService { - - /** - * 缓存池对象。 - */ - protected DictionaryCache dictionaryCache; - - /** - * 构造函数使用缺省缓存池对象。 - */ - public BaseDictService() { - super(); - } - - /** - * 重新加载数据库中所有当前表数据到系统内存。 - * - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - @Override - public void reloadCachedData(boolean force) { - // 在非强制刷新情况下。 - // 先行判断缓存中是否存在数据,如果有就不加载了。 - if (!force && dictionaryCache.getCount() > 0) { - return; - } - List allList = super.getAllList(); - dictionaryCache.reload(allList, force); - } - - /** - * 保存新增对象。 - * - * @param data 新增对象。 - * @return 返回新增对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public M saveNew(M data) { - if (deletedFlagFieldName != null) { - try { - setDeletedFlagMethod.invoke(data, GlobalDeletedFlag.NORMAL); - } catch (Exception e) { - log.error("Failed to call reflection [setDeletedFlagMethod] in BaseDictService.saveNew.", e); - throw new MyRuntimeException(e); - } - } - if (tenantIdField != null) { - ReflectUtil.setFieldValue(data, tenantIdField, TokenData.takeFromRequest().getTenantId()); - } - mapper().insert(data); - return data; - } - - /** - * 更新数据对象。 - * - * @param data 更新的对象。 - * @param originalData 原有数据对象。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean update(M data, M originalData) { - if (tenantIdField != null) { - ReflectUtil.setFieldValue(data, tenantIdField, TokenData.takeFromRequest().getTenantId()); - } - return mapper().updateById(data) == 1; - } - - /** - * 删除指定数据。 - * - * @param id 主键Id。 - * @return 成功返回true,否则false。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public boolean remove(K id) { - return mapper().deleteById(id) == 1; - } - - /** - * 直接从缓存池中获取主键Id关联的数据。如果缓存中不存在,再从数据库中取出并回写到缓存。 - * - * @param id 主键Id。 - * @return 主键关联的数据,不存在返回null。 - */ - @SuppressWarnings("unchecked") - @Override - 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((K) id, data); - } - return data; - } - - /** - * 直接从缓存池中获取所有数据。 - * - * @return 返回所有数据。 - */ - @Override - public List getAllListFromCache() { - return dictionaryCache.getAll(); - } - - /** - * 直接从缓存池中返回符合主键 in (idValues) 条件的所有数据。 - * 对于缓存中不存在的数据,从数据库中获取并回写入缓存。 - * - * @param idValues 主键值列表。 - * @return 检索后的数据列表。 - */ - @SuppressWarnings("unchecked") - @Override - public List getInList(Set idValues) { - List resultList = dictionaryCache.getInList(idValues); - if (resultList.size() == idValues.size()) { - return resultList; - } - Set cachedIdList = new HashSet<>(); - for (M data : resultList) { - try { - cachedIdList.add((K) getIdFieldMethod.invoke(data)); - } catch (Exception e) { - log.error("Failed to call reflection method in BaseDictService.getInList.", e); - throw new MyRuntimeException(e); - } - } - // 找到未缓存的数据,然后从数据库读取后缓存。 - Set uncachedIdList = new HashSet<>(); - for (K id : idValues) { - if (!cachedIdList.contains(id)) { - uncachedIdList.add(id); - } - } - List uncachedResultList = super.getInList(uncachedIdList); - if (CollectionUtils.isNotEmpty(uncachedResultList)) { - for (M data : uncachedResultList) { - try { - K id = (K) getIdFieldMethod.invoke(data); - this.dictionaryCache.put(id, data); - } catch (Exception e) { - log.error("Failed to call reflection method in BaseDictService.getInList.", e); - throw new MyRuntimeException(e); - } - } - resultList.addAll(uncachedResultList); - } - return resultList; - } - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。属性property是主键,则从缓存中读取。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @return 检索后的数据列表。 - */ - @SuppressWarnings("unchecked") - @Override - public List getInList(String inFilterField, Set inFilterValues) { - if (inFilterField.equals(this.idFieldName)) { - return this.getInList((Set) inFilterValues); - } - return super.getInList(inFilterField, inFilterValues); - } - - /** - * 判断参数值列表中的所有数据,是否全部存在。另外,keyName字段在数据表中必须是唯一键值,否则返回结果会出现误判。 - * - * @param inFilterField 待校验的数据字段,这里使用Java对象中的属性,如courseId,而不是数据字段名course_id。 - * @param inFilterValues 数据值集合。 - * @return 全部存在返回true,否则false。 - */ - @SuppressWarnings("unchecked") - @Override - public boolean existUniqueKeyList(String inFilterField, Set inFilterValues) { - if (CollectionUtils.isEmpty(inFilterValues)) { - return true; - } - if (inFilterField.equals(this.idFieldName)) { - List dataList = this.getInList((Set) inFilterValues); - return dataList.size() == inFilterValues.size(); - } - String columnName = this.safeMapToColumnName(inFilterField); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in(columnName, inFilterValues); - return mapper().selectCount(queryWrapper) == inFilterValues.size(); - } - - /** - * 存入缓存。 - * - * @param data 新增或更新数据。 - */ - @SuppressWarnings("unchecked") - @Override - public void putDictionaryCache(M data) { - K key = (K) ReflectUtil.getFieldValue(data, idFieldName); - this.dictionaryCache.put(key, data); - } - - /** - * 根据字典主键将数据从缓存中删除。 - * - * @param id 字典主键。 - */ - @Override - public void removeDictionaryCache(K id) { - this.dictionaryCache.invalidate(id); - } - - /** - * 根据字典对象将数据从缓存中删除。 - * - * @param data 字典数据。 - */ - @SuppressWarnings("unchecked") - @Override - public void removeDictionaryCacheByModel(M data) { - K key = (K) ReflectUtil.getFieldValue(data, idFieldName); - this.dictionaryCache.invalidate(key); - } - - /** - * 获取缓存中的数据数量。 - * - * @return 缓存中的数据总量。 - */ - @Override - public int getCachedCount() { - return dictionaryCache.getCount(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseService.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseService.java deleted file mode 100644 index f02b39f1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/BaseService.java +++ /dev/null @@ -1,2008 +0,0 @@ -package com.orangeforms.common.core.base.service; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -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.orangeforms.common.core.annotation.*; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.constant.AggregationType; -import com.orangeforms.common.core.constant.GlobalDeletedFlag; -import com.orangeforms.common.core.exception.InvalidDataFieldException; -import com.orangeforms.common.core.exception.MyRuntimeException; -import com.orangeforms.common.core.object.*; -import com.orangeforms.common.core.util.AopTargetUtil; -import com.orangeforms.common.core.util.ApplicationContextHolder; -import com.orangeforms.common.core.util.MyModelUtil; -import lombok.extern.slf4j.Slf4j; -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 cn.hutool.core.util.ReflectUtil; - -import java.io.Serializable; -import java.lang.reflect.Modifier; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.lang.reflect.ParameterizedType; -import java.util.*; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Function; - -import static java.util.stream.Collectors.*; - -/** - * 所有Service的基类。 - * - * @param Model对象的类型。 - * @param Model对象主键的类型。 - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public abstract class BaseService extends ServiceImpl, M> implements IBaseService { - - /** - * 当前Service关联的主Model实体对象的Class。 - */ - protected final Class modelClass; - /** - * 当前Service关联的主Model实体对象主键字段的Class。 - */ - protected final Class idFieldClass; - /** - * 当前Service关联的主Model实体对象的实际表名称。 - */ - protected final String tableName; - /** - * 当前Service关联的主Model对象主键字段名称。 - */ - protected String idFieldName; - /** - * 当前Service关联的主数据表中主键列名称。 - */ - protected String idColumnName; - /** - * 当前Service关联的主Model对象逻辑删除字段名称。 - */ - protected String deletedFlagFieldName; - /** - * 当前Service关联的主数据表中逻辑删除字段名称。 - */ - protected String deletedFlagColumnName; - /** - * 当前Service关联的主Model对象租户Id字段。 - */ - protected Field tenantIdField; - /** - * 当前Service关联的主Model对象租户Id字段名称。 - */ - protected String tenantIdFieldName; - /** - * 当前Service关联的主数据表中租户Id列名称。 - */ - protected String tenantIdColumnName; - /** - * 当前Job服务源主表Model对象最后更新时间字段名称。 - */ - protected String jobUpdateTimeFieldName; - /** - * 当前Job服务源主表Model对象最后更新时间列名称。 - */ - protected String jobUpdateTimeColumnName; - /** - * 当前业务服务源主表Model对象最后更新时间字段名称。 - */ - protected String updateTimeFieldName; - /** - * 当前业务服务源主表Model对象最后更新时间列名称。 - */ - protected String updateTimeColumnName; - /** - * 当前业务服务源主表Model对象最后更新用户Id字段名称。 - */ - protected String updateUserIdFieldName; - /** - * 当前业务服务源主表Model对象最后更新用户Id列名称。 - */ - protected String updateUserIdColumnName; - /** - * 当前Service关联的主Model对象主键字段赋值方法的反射对象。 - */ - protected Method setIdFieldMethod; - /** - * 当前Service关联的主Model对象主键字段访问方法的反射对象。 - */ - protected Method getIdFieldMethod; - /** - * 当前Service关联的主Model对象逻辑删除字段赋值方法的反射对象。 - */ - protected Method setDeletedFlagMethod; - /** - * 当前Service关联的主Model对象的所有字典关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationDictStructList = new LinkedList<>(); - /** - * 当前Service关联的主Model对象的所有常量字典关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationConstDictStructList = new LinkedList<>(); - /** - * 当前Service关联的主Model对象的所有一对一关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationOneToOneStructList = new LinkedList<>(); - /** - * 当前Service关联的主Model对象的所有一对多关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationOneToManyStructList = new LinkedList<>(); - /** - * 当前Service关联的主Model对象的所有多对多关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationManyToManyStructList = new LinkedList<>(); - /** - * 当前Service关联的主Model对象的所有一对多聚合关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationOneToManyAggrStructList = new LinkedList<>(); - /** - * 当前Service关联的主Model对象的所有多对多聚合关联的结构列表,该字段在系统启动阶段一次性预加载,提升运行时效率。 - */ - private final List relationManyToManyAggrStructList = new LinkedList<>(); - /** - * 基础表的实体对象及表信息。 - */ - private final TableModelInfo tableModelInfo = new TableModelInfo(); - - private static final String GROUPED_KEY = "grouped_key"; - private static final String AGGREGATED_VALUE = "aggregated_value"; - private static final String AND_OP = " AND "; - - @Override - public BaseDaoMapper getBaseMapper() { - return mapper(); - } - - /** - * 构造函数,在实例化的时候,一次性完成所有有关主Model对象信息的加载。 - */ - @SuppressWarnings("unchecked") - public BaseService() { - modelClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; - idFieldClass = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[1]; - this.tableName = modelClass.getAnnotation(TableName.class).value(); - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - initializeField(field); - } - tableModelInfo.setModelName(modelClass.getSimpleName()); - tableModelInfo.setTableName(this.tableName); - tableModelInfo.setKeyFieldName(idFieldName); - tableModelInfo.setKeyColumnName(idColumnName); - } - - @Override - public TableModelInfo getTableModelInfo() { - return this.tableModelInfo; - } - - private void initializeField(Field field) { - if (idFieldName == null && null != field.getAnnotation(TableId.class)) { - idFieldName = field.getName(); - TableId c = field.getAnnotation(TableId.class); - idColumnName = c == null ? idFieldName : c.value(); - setIdFieldMethod = ReflectUtil.getMethod( - modelClass, "set" + StringUtils.capitalize(idFieldName), idFieldClass); - getIdFieldMethod = ReflectUtil.getMethod( - modelClass, "get" + StringUtils.capitalize(idFieldName)); - } - if (jobUpdateTimeFieldName == null && null != field.getAnnotation(JobUpdateTimeColumn.class)) { - jobUpdateTimeFieldName = field.getName(); - jobUpdateTimeColumnName = this.safeMapToColumnName(jobUpdateTimeFieldName); - } - if (deletedFlagFieldName == null && null != field.getAnnotation(TableLogic.class)) { - deletedFlagFieldName = field.getName(); - 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(); - tenantIdColumnName = this.safeMapToColumnName(tenantIdFieldName); - } - } - - /** - * 获取子类中注入的Mapper类。 - * - * @return 子类中注入的Mapper类。 - */ - protected abstract BaseDaoMapper mapper(); - - @SuppressWarnings("unchecked") - @Override - public void saveNewOrUpdate(M data, Consumer saveNew, BiConsumer update) { - if (data == null) { - return; - } - K id = (K) ReflectUtil.getFieldValue(data, idFieldName); - if (id == null) { - saveNew.accept(data); - } else { - update.accept(data, this.getById(id)); - } - } - - @SuppressWarnings("unchecked") - @Override - public void saveNewOrUpdateBatch(List dataList, Consumer> saveNewBatch, BiConsumer update) { - if (CollUtil.isEmpty(dataList)) { - return; - } - List saveNewDataList = dataList.stream() - .filter(c -> ReflectUtil.getFieldValue(c, idFieldName) == null).collect(toList()); - if (CollUtil.isNotEmpty(saveNewDataList)) { - saveNewBatch.accept(saveNewDataList); - } - List updateDataList = dataList.stream() - .filter(c -> ReflectUtil.getFieldValue(c, idFieldName) != null).collect(toList()); - if (CollUtil.isNotEmpty(updateDataList)) { - for (M data : updateDataList) { - K id = (K) ReflectUtil.getFieldValue(data, idFieldName); - update.accept(data, this.getById(id)); - } - } - } - - /** - * 根据过滤条件删除数据。 - * - * @param filter 过滤对象。 - * @return 删除数量。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public Integer removeBy(M filter) { - return mapper().delete(new QueryWrapper<>(filter)); - } - - @Transactional(rollbackFor = Exception.class) - @Override - public void updateBatchOneToManyRelation( - String relationFieldName, - Object relationFieldValue, - String updateUserIdFieldName, - String updateTimeFieldName, - List dataList, - Consumer> batchInserter) { - // 删除在现有数据列表dataList中不存在的从表数据。 - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.eq(this.safeMapToColumnName(relationFieldName), relationFieldValue); - if (CollUtil.isNotEmpty(dataList)) { - Set keptIdSet = dataList.stream() - .filter(c -> ReflectUtil.getFieldValue(c, idFieldName) != null) - .map(c -> ReflectUtil.getFieldValue(c, idFieldName)).collect(toSet()); - if (CollUtil.isNotEmpty(keptIdSet)) { - queryWrapper.notIn(idColumnName, keptIdSet); - } - } - mapper().delete(queryWrapper); - if (CollUtil.isNotEmpty(dataList)) { - // 没有包含主键的对象被视为新对象,为了效率最优化,这里执行批量插入。 - List newDataList = dataList.stream() - .filter(c -> ReflectUtil.getFieldValue(c, idFieldName) == null).collect(toList()); - if (CollUtil.isNotEmpty(newDataList)) { - newDataList.forEach(o -> ReflectUtil.setFieldValue(o, relationFieldName, relationFieldValue)); - batchInserter.accept(newDataList); - } - // 对于主键已经存在的数据,我们视为已存在数据,这里执行逐条更新操作。 - List updateDataList = - dataList.stream().filter(c -> ReflectUtil.getFieldValue(c, idFieldName) != null).collect(toList()); - for (M updateData : updateDataList) { - // 如果前端将更新用户Id置空,这里使用当前用户更新该字段。 - if (updateUserIdFieldName != null && ReflectUtil.getFieldValue(updateData, updateUserIdFieldName) == null) { - ReflectUtil.setFieldValue(updateData, updateUserIdFieldName, TokenData.takeFromRequest().getUserId()); - } - // 如果前端将更新时间置空,这里使用当前时间更新该字段。 - if (updateTimeFieldName != null && ReflectUtil.getFieldValue(updateData, updateTimeFieldName) == null) { - ReflectUtil.setFieldValue(updateData, updateTimeFieldName, new Date()); - } - if (this.deletedFlagFieldName != null) { - ReflectUtil.setFieldValue(updateData, deletedFlagFieldName, GlobalDeletedFlag.NORMAL); - } - @SuppressWarnings("unchecked") - UpdateWrapper uw = this.createUpdateQueryForNullValue( - updateData, (K) ReflectUtil.getFieldValue(updateData, idFieldName)); - mapper().update(updateData, uw); - } - } - } - - /** - * 判断指定字段的数据是否存在,且仅仅存在一条记录。 - * 如果是基于主键的过滤,会直接调用existId过滤函数,提升性能。在有缓存的场景下,也可以利用缓存。 - * - * @param fieldName 待过滤的字段名(Java 字段)。 - * @param fieldValue 字段值。 - * @return 存在且仅存在一条返回true,否则false。 - */ - @SuppressWarnings("unchecked") - @Override - public boolean existOne(String fieldName, Object fieldValue) { - if (fieldName.equals(this.idFieldName)) { - return this.existId((K) fieldValue); - } - String columnName = MyModelUtil.mapToColumnName(fieldName, modelClass); - return mapper().selectCount(new QueryWrapper().eq(columnName, fieldValue)) == 1; - } - - /** - * 判断主键Id关联的数据是否存在。 - * - * @param id 主键Id。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean existId(K id) { - return getById(id) != null; - } - - /** - * 返回符合 filterField = filterValue 条件的一条数据。 - * - * @param filterField 过滤的Java字段。 - * @param filterValue 过滤的Java字段值。 - * @return 查询后的数据对象。 - */ - @SuppressWarnings("unchecked") - @Override - public M getOne(String filterField, Object filterValue) { - if (filterField.equals(idFieldName)) { - return this.getById((K) filterValue); - } - String columnName = this.safeMapToColumnName(filterField); - QueryWrapper queryWrapper = new QueryWrapper().eq(columnName, filterValue); - return mapper().selectOne(queryWrapper); - } - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * - * @param id 主表主键Id。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 查询结果对象。 - */ - @Override - public M getByIdWithRelation(K id, MyRelationParam relationParam) { - M dataObject = this.getById(id); - this.buildRelationForData(dataObject, relationParam); - return dataObject; - } - - /** - * 获取所有数据。 - * - * @return 返回所有数据。 - */ - @Override - public List getAllList() { - return mapper().selectList(Wrappers.emptyWrapper()); - } - - /** - * 获取排序后所有数据。 - * - * @param orderByProperties 需要排序的字段属性,这里使用Java对象中的属性名,而不是数据库字段名。 - * @return 返回排序后所有数据。 - */ - @Override - public List getAllListByOrder(String... orderByProperties) { - String[] columns = new String[orderByProperties.length]; - for (int i = 0; i < orderByProperties.length; i++) { - columns[i] = this.safeMapToColumnName(orderByProperties[i]); - } - return mapper().selectList(new QueryWrapper().orderByAsc(columns)); - } - - /** - * 判断参数值主键集合中的所有数据,是否全部存在 - * - * @param idSet 待校验的主键集合。 - * @return 全部存在返回true,否则false。 - */ - @Override - public boolean existAllPrimaryKeys(Set idSet) { - if (CollectionUtils.isEmpty(idSet)) { - return true; - } - return this.existUniqueKeyList(idFieldName, idSet); - } - - /** - * 判断参数值列表中的所有数据,是否全部存在。另外,keyName字段在数据表中必须是唯一键值,否则返回结果会出现误判。 - * - * @param inFilterField 待校验的数据字段,这里使用Java对象中的属性,如courseId,而不是数据字段名course_id - * @param inFilterValues 数据值列表。 - * @return 全部存在返回true,否则false。 - */ - @Override - public boolean existUniqueKeyList(String inFilterField, Set inFilterValues) { - if (CollectionUtils.isEmpty(inFilterValues)) { - return true; - } - String column = this.safeMapToColumnName(inFilterField); - return mapper().selectCount(new QueryWrapper().in(column, inFilterValues)) == inFilterValues.size(); - } - - @Override - public List notExist(String filterField, Set filterSet, boolean findFirst) { - List notExistIdList = new LinkedList<>(); - String columnName = this.safeMapToColumnName(filterField); - int start = 0; - int count = 1000; - if (filterSet.size() > count) { - outloop: - do { - int end = Math.min(filterSet.size(), start + count); - List subFilterList = CollUtil.sub(filterSet, start, end); - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in(columnName, subFilterList); - queryWrapper.select(columnName); - Set existIdSet = mapper().selectList(queryWrapper).stream() - .map(c -> ReflectUtil.getFieldValue(c, filterField)).collect(toSet()); - for (R filterData : subFilterList) { - if (!existIdSet.contains(filterData)) { - notExistIdList.add(filterData); - if (findFirst) { - break outloop; - } - } - } - if (end == filterSet.size()) { - break; - } - start += count; - } while (true); - } else { - QueryWrapper queryWrapper = new QueryWrapper<>(); - queryWrapper.in(columnName, filterSet); - queryWrapper.select(columnName); - Set existIdSet = mapper().selectList(queryWrapper).stream() - .map(c -> ReflectUtil.getFieldValue(c, filterField)).collect(toSet()); - for (R filterData : filterSet) { - if (!existIdSet.contains(filterData)) { - notExistIdList.add(filterData); - if (findFirst) { - break; - } - } - } - } - return notExistIdList; - } - - /** - * 返回符合主键 in (idValues) 条件的所有数据。 - * - * @param idValues 主键值集合。 - * @return 检索后的数据列表。 - */ - @Override - public List getInList(Set idValues) { - return this.getInList(idFieldName, idValues, null); - } - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @return 检索后的数据列表。 - */ - @Override - public List getInList(String inFilterField, Set inFilterValues) { - return this.getInList(inFilterField, inFilterValues, null); - } - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据,并根据orderBy字段排序。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param orderBy 排序字段。 - * @return 检索后的数据列表。 - */ - @Override - public List getInList(String inFilterField, Set inFilterValues, String orderBy) { - if (CollectionUtils.isEmpty(inFilterValues)) { - return new LinkedList<>(); - } - String column = this.safeMapToColumnName(inFilterField); - QueryWrapper queryWrapper = new QueryWrapper().in(column, inFilterValues); - if (StringUtils.isNotBlank(orderBy)) { - queryWrapper.last(orderBy); - } - return mapper().selectList(queryWrapper); - } - - /** - * 返回符合主键 in (idValues) 条件的所有数据。同时返回关联数据。 - * - * @param idValues 主键值集合。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 检索后的数据列表。 - */ - @Override - public List getInListWithRelation(Set idValues, MyRelationParam relationParam) { - List resultList = this.getInList(idValues); - this.buildRelationForDataList(resultList, relationParam); - return resultList; - } - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。同时返回关联数据。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 检索后的数据列表。 - */ - @Override - public List getInListWithRelation(String inFilterField, Set inFilterValues, MyRelationParam relationParam) { - List resultList = this.getInList(inFilterField, inFilterValues); - this.buildRelationForDataList(resultList, relationParam); - return resultList; - } - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据,并根据orderBy字段排序。同时返回关联数据。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param orderBy 排序字段。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 检索后的数据列表。 - */ - @Override - public List getInListWithRelation( - String inFilterField, Set inFilterValues, String orderBy, MyRelationParam relationParam) { - List resultList = this.getInList(inFilterField, inFilterValues, orderBy); - this.buildRelationForDataList(resultList, relationParam); - return resultList; - } - - /** - * 用参数对象作为过滤条件,获取数据数量。 - * - * @param filter 该方法基于mybatis 通用mapper,过滤对象中,只有被赋值的字段,才会成为where中的条件。 - * @return 返回过滤后的数据数量。 - */ - @Override - public int getCountByFilter(M filter) { - return mapper().selectCount(new QueryWrapper<>(filter)); - } - - /** - * 用参数对象作为过滤条件,判断是否存在过滤数据。 - * - * @param filter 该方法基于mybatis 通用mapper,过滤对象中,只有被赋值的字段,才会成为where中的条件。 - * @return 存在返回true,否则false。 - */ - @Override - public boolean existByFilter(M filter) { - return this.getCountByFilter(filter) > 0; - } - - /** - * 用参数对象作为过滤条件,获取查询结果。 - * - * @param filter 该方法基于mybatis的通用mapper。如果参数为null,则返回全部数据。 - * @return 返回过滤后的数据。 - */ - @Override - public List getListByFilter(M filter) { - return mapper().selectList(new QueryWrapper<>(filter)); - } - - /** - * 获取父主键Id下的所有子数据列表。 - * - * @param parentIdFieldName 父主键字段名字,如"courseId"。 - * @param parentId 父主键的值。 - * @return 父主键Id下的所有子数据列表。 - */ - @Override - public List getListByParentId(String parentIdFieldName, K parentId) { - QueryWrapper queryWrapper = new QueryWrapper<>(); - String parentIdColumn = this.safeMapToColumnName(parentIdFieldName); - if (parentId != null) { - queryWrapper.eq(parentIdColumn, parentId); - } else { - queryWrapper.isNull(parentIdColumn); - } - return mapper().selectList(queryWrapper); - } - - /** - * 根据指定的显示字段列表、过滤条件字符串和分组字符串,返回聚合计算后的查询结果。(基本是内部框架使用,不建议外部接口直接使用)。 - * - * @param selectFields 选择的字段列表,多个字段逗号分隔。 - * NOTE: 如果数据表字段和Java对象字段名字不同,Java对象字段应该以别名的形式出现。 - * 如: table_column_name modelFieldName。否则无法被反射回Bean对象。 - * @param whereClause SQL常量形式的条件从句。 - * @param groupBy SQL常量形式分组字段列表,逗号分隔。 - * @return 聚合计算后的数据结果集。 - */ - @Override - public List> getGroupedListByCondition( - String selectFields, String whereClause, String groupBy) { - return mapper().getGroupedListByCondition(tableName, selectFields, whereClause, groupBy); - } - - /** - * 根据指定的显示字段列表、过滤条件字符串和排序字符串,返回查询结果。(基本是内部框架使用,不建议外部接口直接使用)。 - * - * @param selectList 选择的Java字段列表。如果为空表示返回全部字段。 - * @param filter 过滤对象。 - * @param whereClause SQL常量形式的条件从句。 - * @param orderBy SQL常量形式排序字段列表,逗号分隔。 - * @return 查询结果。 - */ - @Override - public List getListByCondition(List selectList, M filter, String whereClause, String orderBy) { - QueryWrapper queryWrapper = new QueryWrapper<>(filter); - if (CollectionUtils.isNotEmpty(selectList)) { - 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)) { - queryWrapper.apply(whereClause); - } - if (StringUtils.isNotBlank(orderBy)) { - queryWrapper.last(" ORDER BY " + orderBy); - } - return mapper().selectList(queryWrapper); - } - - /** - * 用指定过滤条件,计算记录数量。(基本是内部框架使用,不建议外部接口直接使用)。 - * - * @param whereClause SQL常量形式的条件从句。 - * @return 返回过滤后的数据数量。 - */ - @Override - public Integer getCountByCondition(String whereClause) { - return mapper().getCountByCondition(this.tableName, whereClause); - } - - @Override - public CallResult verifyRelatedData(M data, M originalData) { - return CallResult.ok(); - } - - @SuppressWarnings("unchecked") - @Override - public CallResult verifyRelatedData(M data) { - if (data == null) { - return CallResult.ok(); - } - Object id = ReflectUtil.getFieldValue(data, idFieldName); - if (id == null) { - return this.verifyRelatedData(data, null); - } - M originalData = this.getById((K) id); - if (originalData == null) { - return CallResult.error("数据验证失败,源数据不存在!"); - } - return this.verifyRelatedData(data, originalData); - } - - @SuppressWarnings("unchecked") - @Override - public CallResult verifyRelatedData(List dataList) { - if (CollUtil.isEmpty(dataList)) { - return CallResult.ok(); - } - // 1. 先过滤出数据列表中的主键Id集合。 - Set idList = dataList.stream() - .filter(c -> ReflectUtil.getFieldValue(c, idFieldName) != null) - .map(c -> (K) ReflectUtil.getFieldValue(c, idFieldName)).collect(toSet()); - // 2. 列表中,我们目前仅支持全部是更新数据,或全部新增数据,不能混着。如果有主键值,说明当前全是更新数据。 - if (CollUtil.isNotEmpty(idList)) { - // 3. 这里是批量读取的优化,用一个主键值得in list查询,一步获取全部原有数据。然后再在内存中基于Map排序。 - List originalList = this.getInList(idList); - Map originalMap = originalList.stream() - .collect(toMap(c -> ReflectUtil.getFieldValue(c, idFieldName), c2 -> c2)); - // 迭代列表,传入当前最新数据和更新前数据进行比对,如果关联数据变化了,就对新数据进行合法性验证。 - for (M data : dataList) { - CallResult result = this.verifyRelatedData( - data, originalMap.get(ReflectUtil.getFieldValue(data, idFieldName))); - if (!result.isSuccess()) { - return result; - } - } - } else { - // 4. 迭代列表,传入当前最新数据,对关联数据进行合法性验证。 - for (M data : dataList) { - CallResult result = this.verifyRelatedData(data, null); - if (!result.isSuccess()) { - return result; - } - } - } - return CallResult.ok(); - } - - @Override - public CallResult verifyImportForConstDict(List dataList, String fieldName, Function idGetter) { - if (CollUtil.isEmpty(dataList)) { - return CallResult.ok(); - } - // 这里均为内部调用方法,因此出现任何错误均为代码BUG,所以我们会及时抛出异常。 - Field field = ReflectUtil.getField(modelClass, fieldName); - if (field == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't exist."); - } - RelationConstDict relationConstDict = field.getAnnotation(RelationConstDict.class); - if (relationConstDict == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't have RelationConstDict."); - } - Method m = ReflectUtil.getMethodByName(relationConstDict.constantDictClass(), "isValid"); - for (M data : dataList) { - R id = idGetter.apply(data); - if (id != null) { - boolean ok = ReflectUtil.invokeStatic(m, id); - if (!ok) { - String errorMessage = String.format("数据验证失败,字段 [%s] 存在无效的常量字典值 [%s]!", - relationConstDict.masterIdField(), id); - return CallResult.error(errorMessage, data); - } - } - } - return CallResult.ok(); - } - - @Override - public CallResult verifyImportForDict(List dataList, String fieldName, Function idGetter) { - if (CollUtil.isEmpty(dataList)) { - return CallResult.ok(); - } - // 这里均为内部调用方法,因此出现任何错误均为代码BUG,所以我们会及时抛出异常。 - Field field = ReflectUtil.getField(modelClass, fieldName); - if (field == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't exist."); - } - RelationDict relationDict = field.getAnnotation(RelationDict.class); - if (relationDict == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't have RelationDict."); - } - BaseService service = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationDict.slaveServiceName())); - Set dictIdSet = service.getAllList().stream() - .map(c -> ReflectUtil.getFieldValue(c, relationDict.slaveIdField())).collect(toSet()); - for (M data : dataList) { - R id = idGetter.apply(data); - if (id != null && !dictIdSet.contains(id)) { - String errorMessage = String.format("数据验证失败,字段 [%s] 存在无效的字典表字典值 [%s]!", - relationDict.masterIdField(), id); - return CallResult.error(errorMessage, data); - } - } - return CallResult.ok(); - } - - @Override - public CallResult verifyImportForDatasourceDict(List dataList, String fieldName, Function idGetter) { - if (CollUtil.isEmpty(dataList)) { - return CallResult.ok(); - } - // 这里均为内部调用方法,因此出现任何错误均为代码BUG,所以我们会及时抛出异常。 - Field field = ReflectUtil.getField(modelClass, fieldName); - if (field == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't exist."); - } - RelationDict relationDict = field.getAnnotation(RelationDict.class); - if (relationDict == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't have RelationDict."); - } - // 验证数据源字典Id,由于被依赖的数据表,可能包含大量业务数据,因此还是分批做存在性比对更为高效。 - Set idSet = dataList.stream() - .filter(c -> idGetter.apply(c) != null).map(idGetter).collect(toSet()); - if (CollUtil.isNotEmpty(idSet)) { - BaseService slaveService = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationDict.slaveServiceName())); - List notExistIdList = slaveService.notExist(relationDict.slaveIdField(), idSet, true); - if (CollUtil.isNotEmpty(notExistIdList)) { - R notExistId = notExistIdList.get(0); - String errorMessage = String.format("数据验证失败,字段 [%s] 存在无效的数据源表字典值 [%s]!", - relationDict.masterIdField(), notExistId); - M data = dataList.stream() - .filter(c -> ObjectUtil.equals(idGetter.apply(c), notExistId)).findFirst().orElse(null); - return CallResult.error(errorMessage, data); - } - } - return CallResult.ok(); - } - - @Override - public CallResult verifyImportForOneToOneRelation(List dataList, String fieldName, Function idGetter) { - if (CollUtil.isEmpty(dataList)) { - return CallResult.ok(); - } - // 这里均为内部调用方法,因此出现任何错误均为代码BUG,所以我们会及时抛出异常。 - Field field = ReflectUtil.getField(modelClass, fieldName); - if (field == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't exist."); - } - RelationOneToOne relationOneToOne = field.getAnnotation(RelationOneToOne.class); - if (relationOneToOne == null) { - throw new MyRuntimeException("FieldName [" + fieldName + "] doesn't have RelationOneToOne."); - } - // 验证一对一关联Id,由于被依赖的数据表,可能包含大量业务数据,因此还是分批做存在性比对更为高效。 - Set idSet = dataList.stream() - .filter(c -> idGetter.apply(c) != null).map(idGetter).collect(toSet()); - if (CollUtil.isNotEmpty(idSet)) { - BaseService slaveService = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationOneToOne.slaveServiceName())); - List notExistIdList = slaveService.notExist(relationOneToOne.slaveIdField(), idSet, true); - if (CollUtil.isNotEmpty(notExistIdList)) { - R notExistId = notExistIdList.get(0); - String errorMessage = String.format("数据验证失败,字段 [%s] 存在无效的一对一关联值 [%s]!", - relationOneToOne.masterIdField(), notExistId); - M data = dataList.stream() - .filter(c -> ObjectUtil.equals(idGetter.apply(c), notExistId)).findFirst().orElse(null); - return CallResult.error(errorMessage, data); - } - } - return CallResult.ok(); - } - - /** - * 集成所有与主表实体对象相关的关联数据列表。包括本地和远程服务的一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - */ - @Override - public void buildRelationForDataList(List resultList, MyRelationParam relationParam) { - this.buildRelationForDataList(resultList, relationParam, null); - } - - /** - * 集成所有与主表实体对象相关的关联数据列表。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - @Override - public void buildRelationForDataList( - List resultList, MyRelationParam relationParam, Set ignoreFields) { - if (relationParam == null || CollectionUtils.isEmpty(resultList)) { - return; - } - boolean dataFilterValue = GlobalThreadLocal.setDataFilter(false); - try { - // 集成本地一对一和字段级别的数据关联。 - boolean buildOneToOne = relationParam.isBuildOneToOne() || relationParam.isBuildOneToOneWithDict(); - // 这里集成一对一关联。 - if (buildOneToOne) { - this.buildOneToOneForDataList(resultList, relationParam.isBuildOneToOneWithDict(), ignoreFields); - } - // 集成一对多关联 - if (relationParam.isBuildOneToMany()) { - this.buildOneToManyForDataList(resultList, ignoreFields); - } - // 这里集成字典关联 - if (relationParam.isBuildDict()) { - // 构建常量字典关联关系 - this.buildConstDictForDataList(resultList, ignoreFields); - this.buildDictForDataList(resultList, buildOneToOne, ignoreFields); - } - // 组装本地聚合计算关联数据 - if (relationParam.isBuildRelationAggregation()) { - // 处理多对多场景下,根据主表的结果,进行从表聚合数据的计算。 - this.buildManyToManyAggregationForDataList(resultList, buildAggregationAdditionalWhereCriteria(), ignoreFields); - // 处理多一多场景下,根据主表的结果,进行从表聚合数据的计算。 - this.buildOneToManyAggregationForDataList(resultList, buildAggregationAdditionalWhereCriteria(), ignoreFields); - } - } finally { - GlobalThreadLocal.setDataFilter(dataFilterValue); - } - } - - /** - * 该函数主要用于对查询结果的批量导出。不同于支持分页的列表查询,批量导出没有分页机制, - * 因此在导出数据量较大的情况下,很容易给数据库的内存、CPU和IO带来较大的压力。而通过 - * 我们的分批处理,可以极大的规避该问题的出现几率。调整batchSize的大小,也可以有效的 - * 改善运行效率。 - * 我们目前的处理机制是,先从主表取出所有符合条件的主表数据,这样可以避免分批处理时, - * 后面几批数据,因为skip过多而带来的效率问题。因为是单表过滤,不会给数据库带来过大的压力。 - * 之后再在主表结果集数据上进行分批级联处理。 - * 集成所有与主表实体对象相关的关联数据列表。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param batchSize 每批集成的记录数量。小于等于0时将不做分批处理。 - */ - @Override - public void buildRelationForDataList(List resultList, MyRelationParam relationParam, int batchSize) { - this.buildRelationForDataList(resultList, relationParam, batchSize, null); - } - - /** - * 该函数主要用于对查询结果的批量导出。不同于支持分页的列表查询,批量导出没有分页机制, - * 因此在导出数据量较大的情况下,很容易给数据库的内存、CPU和IO带来较大的压力。而通过 - * 我们的分批处理,可以极大的规避该问题的出现几率。调整batchSize的大小,也可以有效的 - * 改善运行效率。 - * 我们目前的处理机制是,先从主表取出所有符合条件的主表数据,这样可以避免分批处理时, - * 后面几批数据,因为skip过多而带来的效率问题。因为是单表过滤,不会给数据库带来过大的压力。 - * 之后再在主表结果集数据上进行分批级联处理。 - * 集成所有与主表实体对象相关的关联数据列表。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param batchSize 每批集成的记录数量。小于等于0时将不做分批处理。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - @Override - public void buildRelationForDataList( - List resultList, MyRelationParam relationParam, int batchSize, Set ignoreFields) { - if (CollectionUtils.isEmpty(resultList)) { - return; - } - if (batchSize <= 0) { - this.buildRelationForDataList(resultList, relationParam); - return; - } - int totalCount = resultList.size(); - int fromIndex = 0; - int toIndex = Math.min(batchSize, totalCount); - while (toIndex > fromIndex) { - List subResultList = resultList.subList(fromIndex, toIndex); - this.buildRelationForDataList(subResultList, relationParam, ignoreFields); - fromIndex = toIndex; - toIndex = Math.min(batchSize + fromIndex, totalCount); - } - } - - /** - * 集成所有与主表实体对象相关的关联数据对象。包括本地和远程服务的一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param dataObject 主表实体对象。数据集成将直接作用于该对象。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param 实体对象类型。 - */ - @Override - public void buildRelationForData(T dataObject, MyRelationParam relationParam) { - this.buildRelationForData(dataObject, relationParam, null); - } - - /** - * 集成所有与主表实体对象相关的关联数据对象。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param dataObject 主表实体对象。数据集成将直接作用于该对象。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - * @param 实体对象类型。 - */ - @Override - public void buildRelationForData(T dataObject, MyRelationParam relationParam, Set ignoreFields) { - if (dataObject == null || relationParam == null) { - return; - } - boolean dataFilterValue = GlobalThreadLocal.setDataFilter(false); - try { - // 集成本地一对一和字段级别的数据关联。 - boolean buildOneToOne = relationParam.isBuildOneToOne() || relationParam.isBuildOneToOneWithDict(); - if (buildOneToOne) { - this.buildOneToOneForData(dataObject, relationParam.isBuildOneToOneWithDict(), ignoreFields); - } - // 集成一对多关联 - if (relationParam.isBuildOneToMany()) { - this.buildOneToManyForData(dataObject, ignoreFields); - } - if (relationParam.isBuildDict()) { - // 构建常量字典关联关系 - this.buildConstDictForData(dataObject, ignoreFields); - // 构建本地数据字典关联关系。 - this.buildDictForData(dataObject, buildOneToOne, ignoreFields); - } - // 组装本地聚合计算关联数据 - if (relationParam.isBuildRelationAggregation()) { - // 开始处理多对多场景。 - buildManyToManyAggregationForData(dataObject, buildAggregationAdditionalWhereCriteria(), ignoreFields); - // 构建一对多场景 - buildOneToManyAggregationForData(dataObject, buildAggregationAdditionalWhereCriteria(), ignoreFields); - } - if (relationParam.isBuildRelationManyToMany()) { - this.buildRelationManyToMany(dataObject, ignoreFields); - } - } finally { - GlobalThreadLocal.setDataFilter(dataFilterValue); - } - } - - /** - * 集成主表和多对多中间表之间的关联关系。 - * - * @param dataObject 关联后的主表数据对象。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildRelationManyToMany(T dataObject, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationManyToManyStructList)) { - return; - } - for (RelationStruct relationStruct : this.relationManyToManyStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object masterIdValue = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - 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); - } - } - - /** - * 为实体对象参数列表数据集成本地静态字典关联数据。 - * - * @param resultList 主表数据列表。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildConstDictForDataList(List resultList, Set ignoreFields) { - if (CollectionUtils.isEmpty(this.relationConstDictStructList) || CollectionUtils.isEmpty(resultList)) { - return; - } - for (RelationStruct relationStruct : this.relationConstDictStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - for (M dataObject : resultList) { - Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (id != null) { - String name = relationStruct.dictMap.get(id); - if (name != null) { - Map dictMap = new HashMap<>(2); - dictMap.put("id", id); - dictMap.put("name", name); - ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, dictMap); - } - } - } - } - } - - /** - * 为参数实体对象数据集成本地静态字典关联数据。 - * - * @param dataObject 实体对象。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildConstDictForData(T dataObject, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationConstDictStructList)) { - return; - } - for (RelationStruct relationStruct : this.relationConstDictStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (id != null) { - String name = relationStruct.dictMap.get(id); - if (name != null) { - Map dictMap = new HashMap<>(2); - dictMap.put("id", id); - dictMap.put("name", name); - ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, dictMap); - } - } - } - } - - /** - * 为实体对象参数列表数据集成本地字典关联数据。 - * - * @param resultList 实体对象数据列表。 - * @param hasBuiltOneToOne 性能优化参数。如果该值为true,同时注解参数RelationDict.equalOneToOneRelationField - * 不为空,则直接从已经完成一对一数据关联的从表对象中获取数据,减少一次数据库交互。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildDictForDataList(List resultList, boolean hasBuiltOneToOne, Set ignoreFields) { - if (CollectionUtils.isEmpty(this.relationDictStructList) || CollectionUtils.isEmpty(resultList)) { - return; - } - for (RelationStruct relationStruct : this.relationDictStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - List relationList = null; - if (hasBuiltOneToOne && relationStruct.equalOneToOneRelationField != null) { - relationList = resultList.stream() - .map(obj -> ReflectUtil.getFieldValue(obj, relationStruct.equalOneToOneRelationField)) - .filter(Objects::nonNull) - .collect(toList()); - } else { - String slaveId = relationStruct.relationDict.slaveIdField(); - Set masterIdSet = resultList.stream() - .map(obj -> ReflectUtil.getFieldValue(obj, relationStruct.masterIdField)) - .filter(Objects::nonNull) - .collect(toSet()); - if (CollectionUtils.isNotEmpty(masterIdSet)) { - relationList = relationStruct.service.getInList(slaveId, masterIdSet); - } - } - MyModelUtil.makeDictRelation( - modelClass, resultList, relationList, relationStruct.relationField.getName()); - } - } - - /** - * 为实体对象数据集成本地数据字典关联数据。 - * - * @param dataObject 实体对象。 - * @param hasBuiltOneToOne 性能优化参数。如果该值为true,同时注解参数RelationDict.equalOneToOneRelationField - * 不为空,则直接从已经完成一对一数据关联的从表对象中获取数据,减少一次数据库交互。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildDictForData(T dataObject, boolean hasBuiltOneToOne, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationDictStructList)) { - return; - } - for (RelationStruct relationStruct : this.relationDictStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object relationObject = null; - if (hasBuiltOneToOne && relationStruct.equalOneToOneRelationField != null) { - relationObject = ReflectUtil.getFieldValue(dataObject, relationStruct.equalOneToOneRelationField); - } else { - Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (id != null) { - relationObject = relationStruct.service.getOne(relationStruct.relationDict.slaveIdField(), id); - } - } - MyModelUtil.makeDictRelation( - modelClass, dataObject, relationObject, relationStruct.relationField.getName()); - } - } - - /** - * 为实体对象参数列表数据集成本地一对一关联数据。 - * - * @param resultList 实体对象数据列表。 - * @param withDict 关联从表数据后,是否把从表的字典数据也一起关联了。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildOneToOneForDataList(List resultList, boolean withDict, Set ignoreFields) { - if (CollectionUtils.isEmpty(this.relationOneToOneStructList) || CollectionUtils.isEmpty(resultList)) { - return; - } - for (RelationStruct relationStruct : this.relationOneToOneStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Set masterIdSet = resultList.stream() - .map(obj -> ReflectUtil.getFieldValue(obj, relationStruct.masterIdField)) - .filter(Objects::nonNull) - .collect(toSet()); - // 从主表集合中,抽取主表关联字段的集合,再以in list形式去从表中查询。 - if (CollectionUtils.isNotEmpty(masterIdSet)) { - BaseService relationService = relationStruct.service; - List relationList = - relationService.getInList(relationStruct.relationOneToOne.slaveIdField(), masterIdSet); - MyModelUtil.makeOneToOneRelation( - modelClass, resultList, relationList, relationStruct.relationField.getName()); - // 仅仅当需要加载从表字典关联时,才去加载。 - if (withDict && relationStruct.relationOneToOne.loadSlaveDict() - && CollectionUtils.isNotEmpty(relationList)) { - @SuppressWarnings("unchecked") - BaseService proxyTarget = - (BaseService) AopTargetUtil.getTarget(relationService); - // 关联本地字典。 - proxyTarget.buildDictForDataList(relationList, false, ignoreFields); - // 关联常量字典 - proxyTarget.buildConstDictForDataList(relationList, ignoreFields); - } - } - } - } - - /** - * 为实体对象数据集成本地一对一关联数据。 - * - * @param dataObject 实体对象。 - * @param withDict 关联从表数据后,是否把从表的字典数据也一起关联了。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildOneToOneForData(M dataObject, boolean withDict, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationOneToOneStructList)) { - return; - } - for (RelationStruct relationStruct : this.relationOneToOneStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (id != null) { - 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); - // 关联本地字典 - proxyTarget.buildDictForData(relationObject, false, ignoreFields); - // 关联常量字典 - proxyTarget.buildConstDictForData(relationObject, ignoreFields); - } - } - } - } - - /** - * 为实体对象参数列表数据集成本地一对多关联数据。 - * - * @param resultList 实体对象数据列表。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildOneToManyForDataList(List resultList, Set ignoreFields) { - if (CollectionUtils.isEmpty(this.relationOneToManyStructList) || CollectionUtils.isEmpty(resultList)) { - return; - } - for (RelationStruct relationStruct : this.relationOneToManyStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Set masterIdSet = resultList.stream() - .map(obj -> ReflectUtil.getFieldValue(obj, relationStruct.masterIdField)) - .filter(Objects::nonNull) - .collect(toSet()); - // 从主表集合中,抽取主表关联字段的集合,再以in list形式去从表中查询。 - if (CollectionUtils.isNotEmpty(masterIdSet)) { - BaseService relationService = relationStruct.service; - List relationList = - relationService.getInList(relationStruct.relationOneToMany.slaveIdField(), masterIdSet); - MyModelUtil.makeOneToManyRelation( - modelClass, resultList, relationList, relationStruct.relationField.getName()); - } - } - } - - /** - * 为实体对象数据集成本地一对多关联数据。 - * - * @param dataObject 实体对象。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildOneToManyForData(M dataObject, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationOneToManyStructList)) { - return; - } - for (RelationStruct relationStruct : this.relationOneToManyStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object id = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (id != null) { - BaseService relationService = relationStruct.service; - Set masterIdSet = new HashSet<>(1); - masterIdSet.add(id); - List relationObject = relationService.getInList( - relationStruct.relationOneToMany.slaveIdField(), masterIdSet); - ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, relationObject); - } - } - } - - /** - * 根据实体对象参数列表和过滤条件,集成本地多对多关联聚合计算数据。 - * - * @param resultList 实体对象数据列表。 - * @param criteriaListMap 过滤参数。key为主表字段名称,value是过滤条件列表。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildManyToManyAggregationForDataList( - List resultList, Map> criteriaListMap, Set ignoreFields) { - if (CollectionUtils.isEmpty(this.relationManyToManyAggrStructList) || CollectionUtils.isEmpty(resultList)) { - return; - } - if (criteriaListMap == null) { - criteriaListMap = new HashMap<>(this.relationManyToManyAggrStructList.size()); - } - for (RelationStruct relationStruct : this.relationManyToManyAggrStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Set masterIdSet = resultList.stream() - .map(obj -> ReflectUtil.getFieldValue(obj, relationStruct.masterIdField)) - .filter(Objects::nonNull) - .collect(toSet()); - if (CollectionUtils.isEmpty(masterIdSet)) { - continue; - } - RelationManyToManyAggregation relation = relationStruct.relationManyToManyAggregation; - // 提取关联中用到的各种字段和表数据。 - BasicAggregationRelationInfo basicRelationInfo = - this.parseBasicAggregationRelationInfo(relationStruct, criteriaListMap); - // 构建多表关联的where语句 - StringBuilder whereClause = new StringBuilder(256); - // 如果需要从表聚合计算或参与过滤,则需要把中间表和从表之间的关联条件加上。 - if (!basicRelationInfo.onlySelectRelationTable) { - whereClause.append(basicRelationInfo.relationTable) - .append(".") - .append(basicRelationInfo.relationSlaveColumn) - .append(" = ") - .append(basicRelationInfo.slaveTable) - .append(".") - .append(basicRelationInfo.slaveColumn); - } else { - whereClause.append("1 = 1"); - } - List criteriaList = criteriaListMap.get(relationStruct.relationField.getName()); - if (criteriaList == null) { - criteriaList = new LinkedList<>(); - } - MyWhereCriteria inlistFilter = new MyWhereCriteria(); - inlistFilter.setCriteria(relation.relationModelClass(), - relation.relationMasterIdField(), MyWhereCriteria.OPERATOR_IN, masterIdSet); - criteriaList.add(inlistFilter); - if (StringUtils.isNotBlank(relationStruct.service.deletedFlagFieldName)) { - MyWhereCriteria deleteFilter = new MyWhereCriteria(); - deleteFilter.setCriteria( - relation.slaveModelClass(), - relationStruct.service.deletedFlagFieldName, - MyWhereCriteria.OPERATOR_EQUAL, - GlobalDeletedFlag.NORMAL); - criteriaList.add(deleteFilter); - } - String criteriaString = MyWhereCriteria.makeCriteriaString(criteriaList); - whereClause.append(AND_OP).append(criteriaString); - StringBuilder tableNames = new StringBuilder(64); - tableNames.append(basicRelationInfo.relationTable); - if (!basicRelationInfo.onlySelectRelationTable) { - tableNames.append(", ").append(basicRelationInfo.slaveTable); - } - List> aggregationMapList = - mapper().getGroupedListByCondition(tableNames.toString(), - basicRelationInfo.selectList, whereClause.toString(), basicRelationInfo.groupBy); - doMakeLocalAggregationData(aggregationMapList, resultList, relationStruct); - } - } - - /** - * 根据实体对象和过滤条件,集成本地多对多关联聚合计算数据。 - * - * @param dataObject 实体对象。 - * @param criteriaListMap 过滤参数。key为主表字段名称,value是过滤条件列表。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildManyToManyAggregationForData( - T dataObject, Map> criteriaListMap, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationManyToManyAggrStructList)) { - return; - } - if (criteriaListMap == null) { - criteriaListMap = new HashMap<>(relationManyToManyAggrStructList.size()); - } - for (RelationStruct relationStruct : this.relationManyToManyAggrStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object masterIdValue = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (masterIdValue != null) { - BasicAggregationRelationInfo basicRelationInfo = - this.parseBasicAggregationRelationInfo(relationStruct, criteriaListMap); - // 组装过滤条件 - String whereClause = this.makeManyToManyWhereClause( - relationStruct, masterIdValue, basicRelationInfo, criteriaListMap); - StringBuilder tableNames = new StringBuilder(64); - tableNames.append(basicRelationInfo.relationTable); - if (!basicRelationInfo.onlySelectRelationTable) { - tableNames.append(", ").append(basicRelationInfo.slaveTable); - } - List> aggregationMapList = - mapper().getGroupedListByCondition(tableNames.toString(), - basicRelationInfo.selectList, whereClause, basicRelationInfo.groupBy); - // 将查询后的结果回填到主表数据中。 - if (CollectionUtils.isNotEmpty(aggregationMapList)) { - Object value = aggregationMapList.get(0).get(AGGREGATED_VALUE); - if (value != null) { - ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, value); - } - } - } - } - } - - /** - * 根据实体对象参数列表和过滤条件,集成本地一对多关联聚合计算数据。 - * - * @param resultList 实体对象数据列表。 - * @param criteriaListMap 过滤参数。key为主表字段名称,value是过滤条件列表。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildOneToManyAggregationForDataList( - List resultList, Map> criteriaListMap, Set ignoreFields) { - // 处理多一多场景下,根据主表的结果,进行从表聚合数据的计算。 - if (CollectionUtils.isEmpty(this.relationOneToManyAggrStructList) || CollectionUtils.isEmpty(resultList)) { - return; - } - if (criteriaListMap == null) { - criteriaListMap = new HashMap<>(relationOneToManyAggrStructList.size()); - } - for (RelationStruct relationStruct : this.relationOneToManyAggrStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Set masterIdSet = resultList.stream() - .map(obj -> ReflectUtil.getFieldValue(obj, relationStruct.masterIdField)) - .filter(Objects::nonNull) - .collect(toSet()); - if (CollectionUtils.isEmpty(masterIdSet)) { - continue; - } - RelationOneToManyAggregation relation = relationStruct.relationOneToManyAggregation; - // 开始获取后面所需的各种关联数据。此部分今后可以移植到缓存中,无需每次计算。 - String slaveTable = MyModelUtil.mapToTableName(relation.slaveModelClass()); - String slaveColumnName = MyModelUtil.mapToColumnName(relation.slaveIdField(), relation.slaveModelClass()); - Tuple2 selectAndGroupByTuple = makeSelectListAndGroupByClause( - slaveTable, slaveColumnName, relation.slaveModelClass(), - slaveTable, relation.aggregationField(), relation.aggregationType()); - String selectList = selectAndGroupByTuple.getFirst(); - String groupBy = selectAndGroupByTuple.getSecond(); - List criteriaList = criteriaListMap.get(relationStruct.relationField.getName()); - if (criteriaList == null) { - criteriaList = new LinkedList<>(); - } - MyWhereCriteria inlistFilter = new MyWhereCriteria(); - inlistFilter.setCriteria(relation.slaveModelClass(), - relation.slaveIdField(), MyWhereCriteria.OPERATOR_IN, masterIdSet); - criteriaList.add(inlistFilter); - if (StringUtils.isNotBlank(relationStruct.service.deletedFlagFieldName)) { - MyWhereCriteria deleteFilter = new MyWhereCriteria(); - deleteFilter.setCriteria( - relation.slaveModelClass(), - relationStruct.service.deletedFlagFieldName, - MyWhereCriteria.OPERATOR_EQUAL, - GlobalDeletedFlag.NORMAL); - criteriaList.add(deleteFilter); - } - String criteriaString = MyWhereCriteria.makeCriteriaString(criteriaList); - List> aggregationMapList = - mapper().getGroupedListByCondition(slaveTable, selectList, criteriaString, groupBy); - doMakeLocalAggregationData(aggregationMapList, resultList, relationStruct); - } - } - - /** - * 根据实体对象和过滤条件,集成本地一对多关联聚合计算数据。 - * - * @param dataObject 实体对象。 - * @param criteriaListMap 过滤参数。key为主表字段名称,value是过滤条件列表。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - private void buildOneToManyAggregationForData( - T dataObject, Map> criteriaListMap, Set ignoreFields) { - if (dataObject == null || CollectionUtils.isEmpty(this.relationOneToManyAggrStructList)) { - return; - } - if (criteriaListMap == null) { - criteriaListMap = new HashMap<>(relationOneToManyAggrStructList.size()); - } - for (RelationStruct relationStruct : this.relationOneToManyAggrStructList) { - if (ignoreFields != null && ignoreFields.contains(relationStruct.relationField.getName())) { - continue; - } - Object masterIdValue = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (masterIdValue != null) { - RelationOneToManyAggregation relation = relationStruct.relationOneToManyAggregation; - String slaveTable = MyModelUtil.mapToTableName(relation.slaveModelClass()); - String slaveColumnName = - MyModelUtil.mapToColumnName(relation.slaveIdField(), relation.slaveModelClass()); - Tuple2 selectAndGroupByTuple = makeSelectListAndGroupByClause( - slaveTable, slaveColumnName, relation.slaveModelClass(), - slaveTable, relation.aggregationField(), relation.aggregationType()); - String selectList = selectAndGroupByTuple.getFirst(); - String groupBy = selectAndGroupByTuple.getSecond(); - String whereClause = this.makeOneToManyWhereClause( - relationStruct, masterIdValue, slaveColumnName, criteriaListMap); - // 获取分组聚合计算结果 - List> aggregationMapList = - mapper().getGroupedListByCondition(slaveTable, selectList, whereClause, groupBy); - // 将计算结果回填到主表关联字段 - if (CollectionUtils.isNotEmpty(aggregationMapList)) { - Object value = aggregationMapList.get(0).get(AGGREGATED_VALUE); - if (value != null) { - ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, value); - } - } - } - } - } - - /** - * 仅仅在spring boot 启动后的监听器事件中调用,缓存所有service的关联关系,加速后续的数据绑定效率。 - */ - @Override - public void loadRelationStruct() { - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field f : fields) { - initializeRelationDictStruct(f); - initializeRelationStruct(f); - initializeRelationAggregationStruct(f); - } - } - - /** - * 缺省实现返回null,在进行一对多和多对多聚合计算时,没有额外的自定义过滤条件。如有需要,需子类自行实现。 - * - * @return 自定义过滤条件列表。 - */ - protected Map> buildAggregationAdditionalWhereCriteria() { - return null; - } - - /** - * 判断当前对象的关联字段数据是否需要被验证,如果原有对象为null,表示新对象第一次插入,则必须验证。 - * - * @param object 新对象。 - * @param originalObject 原有对象。 - * @param fieldGetter 获取需要验证字段的函数对象。 - * @param 需要验证字段的类型。 - * @return 需要关联验证返回true,否则false。 - */ - protected boolean needToVerify(M object, M originalObject, Function fieldGetter) { - if (object == null) { - return false; - } - T data = fieldGetter.apply(object); - if (data == null) { - return false; - } - if (data instanceof String) { - String stringData = (String) data; - if (stringData.length() == 0) { - return false; - } - } - if (originalObject == null) { - return true; - } - T originalData = fieldGetter.apply(originalObject); - return !data.equals(originalData); - } - - /** - * 因为Mybatis Plus中QueryWrapper的条件方法都要求传入数据表字段名,因此提供该函数将 - * Java实体对象的字段名转换为数据表字段名,如果不存在会抛出异常。 - * 另外在MyModelUtil.mapToColumnName有一级缓存,对于查询过的对象字段都会放到缓存中, - * 下次映射转换的时候,会直接从缓存获取。 - * - * @param fieldName Java实体对象的字段名。 - * @return 对应的数据表字段名。 - */ - protected String safeMapToColumnName(String fieldName) { - String columnName = MyModelUtil.mapToColumnName(fieldName, modelClass); - if (columnName == null) { - throw new InvalidDataFieldException(modelClass.getSimpleName(), fieldName); - } - 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); - } - 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)); - } - } - } - if (CollectionUtils.isNotEmpty(nullColumnList)) { - for (String nullColumn : nullColumnList) { - uw.set(nullColumn, null); - } - } - return uw; - } - - @SuppressWarnings("unchecked") - private void initializeRelationStruct(Field f) { - RelationOneToOne relationOneToOne = f.getAnnotation(RelationOneToOne.class); - if (relationOneToOne != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationOneToOne.masterIdField()); - relationStruct.relationOneToOne = relationOneToOne; - if (StringUtils.isNotBlank(relationOneToOne.slaveServiceName())) { - relationStruct.service = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationOneToOne.slaveServiceName())); - } else { - relationStruct.service = (BaseService) - ApplicationContextHolder.getBean(relationOneToOne.slaveServiceClass()); - } - relationOneToOneStructList.add(relationStruct); - return; - } - RelationOneToMany relationOneToMany = f.getAnnotation(RelationOneToMany.class); - if (relationOneToMany != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationOneToMany.masterIdField()); - relationStruct.relationOneToMany = relationOneToMany; - if (StringUtils.isNotBlank(relationOneToMany.slaveServiceName())) { - relationStruct.service = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationOneToMany.slaveServiceName())); - } else { - relationStruct.service = (BaseService) - ApplicationContextHolder.getBean(relationOneToMany.slaveServiceClass()); - } - relationOneToManyStructList.add(relationStruct); - return; - } - RelationManyToMany relationManyToMany = f.getAnnotation(RelationManyToMany.class); - if (relationManyToMany != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationManyToMany.relationMasterIdField()); - relationStruct.relationManyToMany = relationManyToMany; - relationStruct.manyToManyMapper = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationManyToMany.relationMapperName())); - relationManyToManyStructList.add(relationStruct); - } - } - - @SuppressWarnings("unchecked") - private void initializeRelationAggregationStruct(Field f) { - RelationOneToManyAggregation relationOneToManyAggregation = f.getAnnotation(RelationOneToManyAggregation.class); - if (relationOneToManyAggregation != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationOneToManyAggregation.masterIdField()); - relationStruct.relationOneToManyAggregation = relationOneToManyAggregation; - if (StringUtils.isNotBlank(relationOneToManyAggregation.slaveServiceName())) { - relationStruct.service = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationOneToManyAggregation.slaveServiceName())); - } else { - relationStruct.service = (BaseService) - ApplicationContextHolder.getBean(relationOneToManyAggregation.slaveServiceClass()); - } - relationOneToManyAggrStructList.add(relationStruct); - return; - } - RelationManyToManyAggregation relationManyToManyAggregation = f.getAnnotation(RelationManyToManyAggregation.class); - if (relationManyToManyAggregation != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationManyToManyAggregation.masterIdField()); - relationStruct.relationManyToManyAggregation = relationManyToManyAggregation; - if (StringUtils.isNotBlank(relationManyToManyAggregation.slaveServiceName())) { - relationStruct.service = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationManyToManyAggregation.slaveServiceName())); - } else { - relationStruct.service = (BaseService) - ApplicationContextHolder.getBean(relationManyToManyAggregation.slaveServiceClass()); - } - relationManyToManyAggrStructList.add(relationStruct); - } - } - - @SuppressWarnings("unchecked") - private void initializeRelationDictStruct(Field f) { - RelationConstDict relationConstDict = f.getAnnotation(RelationConstDict.class); - if (relationConstDict != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationConstDict = relationConstDict; - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationConstDict.masterIdField()); - Field dictMapField = ReflectUtil.getField(relationConstDict.constantDictClass(), "DICT_MAP"); - relationStruct.dictMap = (Map) ReflectUtil.getFieldValue(modelClass, dictMapField); - relationConstDictStructList.add(relationStruct); - return; - } - RelationDict relationDict = f.getAnnotation(RelationDict.class); - if (relationDict != null) { - RelationStruct relationStruct = new RelationStruct(); - relationStruct.relationField = f; - relationStruct.masterIdField = ReflectUtil.getField(modelClass, relationDict.masterIdField()); - relationStruct.relationDict = relationDict; - if (StringUtils.isNotBlank(relationDict.equalOneToOneRelationField())) { - relationStruct.equalOneToOneRelationField = - ReflectUtil.getField(modelClass, relationDict.equalOneToOneRelationField()); - } - if (StringUtils.isNotBlank(relationDict.slaveServiceName())) { - relationStruct.service = ApplicationContextHolder.getBean( - StringUtils.uncapitalize(relationDict.slaveServiceName())); - } else { - relationStruct.service = (BaseService) - ApplicationContextHolder.getBean(relationDict.slaveServiceClass()); - } - relationDictStructList.add(relationStruct); - } - } - - private BasicAggregationRelationInfo parseBasicAggregationRelationInfo( - RelationStruct relationStruct, Map> criteriaListMap) { - RelationManyToManyAggregation relation = relationStruct.relationManyToManyAggregation; - BasicAggregationRelationInfo relationInfo = new BasicAggregationRelationInfo(); - // 提取关联中用到的各种字段和表数据。 - relationInfo.slaveTable = MyModelUtil.mapToTableName(relation.slaveModelClass()); - relationInfo.relationTable = MyModelUtil.mapToTableName(relation.relationModelClass()); - relationInfo.relationMasterColumn = - MyModelUtil.mapToColumnName(relation.relationMasterIdField(), relation.relationModelClass()); - relationInfo.relationSlaveColumn = - MyModelUtil.mapToColumnName(relation.relationSlaveIdField(), relation.relationModelClass()); - relationInfo.slaveColumn = MyModelUtil.mapToColumnName(relation.slaveIdField(), relation.slaveModelClass()); - // 判断是否只需要关联中间表即可,从而提升查询统计的效率。 - // 1. 统计字段为中间表字段。2. 自定义过滤条件中没有基于从表字段的过滤条件。 - relationInfo.onlySelectRelationTable = - relation.aggregationModelClass().equals(relation.relationModelClass()); - if (relationInfo.onlySelectRelationTable && MapUtils.isNotEmpty(criteriaListMap)) { - List criteriaList = - criteriaListMap.get(relationStruct.relationField.getName()); - if (CollectionUtils.isNotEmpty(criteriaList)) { - for (MyWhereCriteria whereCriteria : criteriaList) { - if (whereCriteria.getModelClazz().equals(relation.slaveModelClass())) { - relationInfo.onlySelectRelationTable = false; - break; - } - } - } - } - String aggregationTable = relation.aggregationModelClass().equals(relation.relationModelClass()) - ? relationInfo.relationTable : relationInfo.slaveTable; - Tuple2 selectAndGroupByTuple = makeSelectListAndGroupByClause( - relationInfo.relationTable, relationInfo.relationMasterColumn, relation.aggregationModelClass(), - aggregationTable, relation.aggregationField(), relation.aggregationType()); - relationInfo.selectList = selectAndGroupByTuple.getFirst(); - relationInfo.groupBy = selectAndGroupByTuple.getSecond(); - return relationInfo; - } - - private String makeManyToManyWhereClause( - RelationStruct relationStruct, - Object masterIdValue, - BasicAggregationRelationInfo basicRelationInfo, - Map> criteriaListMap) { - StringBuilder whereClause = new StringBuilder(256); - whereClause.append(basicRelationInfo.relationTable) - .append(".").append(basicRelationInfo.relationMasterColumn); - if (masterIdValue instanceof Number) { - whereClause.append(" = ").append(masterIdValue); - } else { - whereClause.append(" = '").append(masterIdValue).append("'"); - } - // 如果需要从表聚合计算或参与过滤,则需要把中间表和从表之间的关联条件加上。 - if (!basicRelationInfo.onlySelectRelationTable) { - whereClause.append(AND_OP) - .append(basicRelationInfo.relationTable) - .append(".") - .append(basicRelationInfo.relationSlaveColumn) - .append(" = ") - .append(basicRelationInfo.slaveTable) - .append(".") - .append(basicRelationInfo.slaveColumn); - } - List criteriaList = criteriaListMap.get(relationStruct.relationField.getName()); - if (criteriaList == null) { - criteriaList = new LinkedList<>(); - } - if (StringUtils.isNotBlank(relationStruct.service.deletedFlagFieldName)) { - MyWhereCriteria deleteFilter = new MyWhereCriteria(); - deleteFilter.setCriteria( - relationStruct.relationManyToManyAggregation.slaveModelClass(), - relationStruct.service.deletedFlagFieldName, - MyWhereCriteria.OPERATOR_EQUAL, - GlobalDeletedFlag.NORMAL); - criteriaList.add(deleteFilter); - } - if (CollectionUtils.isNotEmpty(criteriaList)) { - String criteriaString = MyWhereCriteria.makeCriteriaString(criteriaList); - whereClause.append(AND_OP).append(criteriaString); - } - return whereClause.toString(); - } - - private String makeOneToManyWhereClause( - RelationStruct relationStruct, - Object masterIdValue, - String slaveColumnName, - Map> criteriaListMap) { - StringBuilder whereClause = new StringBuilder(64); - if (masterIdValue instanceof Number) { - whereClause.append(slaveColumnName).append(" = ").append(masterIdValue); - } else { - whereClause.append(slaveColumnName).append(" = '").append(masterIdValue).append("'"); - } - List criteriaList = criteriaListMap.get(relationStruct.relationField.getName()); - if (criteriaList == null) { - criteriaList = new LinkedList<>(); - } - if (StringUtils.isNotBlank(relationStruct.service.deletedFlagFieldName)) { - MyWhereCriteria deleteFilter = new MyWhereCriteria(); - deleteFilter.setCriteria( - relationStruct.relationOneToManyAggregation.slaveModelClass(), - relationStruct.service.deletedFlagFieldName, - MyWhereCriteria.OPERATOR_EQUAL, - GlobalDeletedFlag.NORMAL); - criteriaList.add(deleteFilter); - } - if (CollectionUtils.isNotEmpty(criteriaList)) { - String criteriaString = MyWhereCriteria.makeCriteriaString(criteriaList); - whereClause.append(AND_OP).append(criteriaString); - } - return whereClause.toString(); - } - - private static class BasicAggregationRelationInfo { - private String slaveTable; - private String slaveColumn; - private String relationTable; - private String relationMasterColumn; - private String relationSlaveColumn; - private String selectList; - private String groupBy; - private boolean onlySelectRelationTable; - } - - private void doMakeLocalAggregationData( - List> aggregationMapList, List resultList, RelationStruct relationStruct) { - if (CollectionUtils.isEmpty(resultList)) { - return; - } - // 根据获取的分组聚合结果集,绑定到主表总的关联字段。 - if (CollectionUtils.isNotEmpty(aggregationMapList)) { - Map relatedMap = new HashMap<>(aggregationMapList.size()); - for (Map map : aggregationMapList) { - relatedMap.put(map.get(GROUPED_KEY), map.get(AGGREGATED_VALUE)); - } - for (M dataObject : resultList) { - Object masterIdValue = ReflectUtil.getFieldValue(dataObject, relationStruct.masterIdField); - if (masterIdValue != null) { - Object value = relatedMap.get(masterIdValue); - if (value != null) { - ReflectUtil.setFieldValue(dataObject, relationStruct.relationField, value); - } - } - } - } - } - - private Tuple2 makeSelectListAndGroupByClause( - String groupTableName, - String groupColumnName, - Class aggregationModel, - String aggregationTableName, - String aggregationField, - Integer aggregationType) { - if (!AggregationType.isValid(aggregationType)) { - throw new IllegalArgumentException("Invalid AggregationType Value [" - + aggregationType + "] in Model [" + aggregationModel.getName() + "]."); - } - String aggregationFunc = AggregationType.getAggregationFunction(aggregationType); - String aggregationColumn = MyModelUtil.mapToColumnName(aggregationField, aggregationModel); - if (StringUtils.isBlank(aggregationColumn)) { - throw new IllegalArgumentException("Invalid AggregationField [" - + aggregationField + "] in Model [" + aggregationModel.getName() + "]."); - } - // 构建Select List - // 如:r_table.master_id groupedKey, SUM(r_table.aggr_column) aggregated_value - StringBuilder groupedSelectList = new StringBuilder(128); - groupedSelectList.append(groupTableName) - .append(".") - .append(groupColumnName) - .append(" ") - .append(GROUPED_KEY) - .append(", ") - .append(aggregationFunc) - .append("(") - .append(aggregationTableName) - .append(".") - .append(aggregationColumn) - .append(") ") - .append(AGGREGATED_VALUE) - .append(" "); - StringBuilder groupBy = new StringBuilder(64); - groupBy.append(groupTableName).append(".").append(groupColumnName); - return new Tuple2<>(groupedSelectList.toString(), groupBy.toString()); - } - - static class RelationStruct { - private Field relationField; - private Field masterIdField; - private Field equalOneToOneRelationField; - private BaseService service; - private BaseDaoMapper manyToManyMapper; - private Map dictMap; - private RelationConstDict relationConstDict; - private RelationDict relationDict; - private RelationOneToOne relationOneToOne; - private RelationOneToMany relationOneToMany; - private RelationManyToMany relationManyToMany; - private RelationOneToManyAggregation relationOneToManyAggregation; - private RelationManyToManyAggregation relationManyToManyAggregation; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseDictService.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseDictService.java deleted file mode 100644 index affa17e2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseDictService.java +++ /dev/null @@ -1,82 +0,0 @@ -package com.orangeforms.common.core.base.service; - -import java.io.Serializable; -import java.util.List; - -/** - * 带有缓存功能的字典Service接口。 - * - * @param Model实体对象的类型。 - * @param Model对象主键的类型。 - * @author Jerry - * @date 2022-02-20 - */ -public interface IBaseDictService extends IBaseService { - - /** - * 重新加载数据库中所有当前表数据到系统内存。 - * - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - void reloadCachedData(boolean force); - - /** - * 保存新增对象。 - * - * @param data 新增对象。 - * @return 返回新增对象。 - */ - M saveNew(M data); - - /** - * 更新数据对象。 - * - * @param data 更新的对象。 - * @param originalData 原有数据对象。 - * @return 成功返回true,否则false。 - */ - boolean update(M data, M originalData); - - /** - * 删除指定数据。 - * - * @param id 主键Id。 - * @return 成功返回true,否则false。 - */ - boolean remove(K id); - - /** - * 直接从缓存池中获取所有数据。 - * - * @return 返回所有数据。 - */ - List getAllListFromCache(); - - /** - * 存入缓存。 - * - * @param data 新增或更新数据。 - */ - void putDictionaryCache(M data); - - /** - * 根据字典主键将数据从缓存中删除。 - * - * @param id 字典主键。 - */ - void removeDictionaryCache(K id); - - /** - * 根据字典对象将数据从缓存中删除。 - * - * @param data 字典数据。 - */ - void removeDictionaryCacheByModel(M data); - - /** - * 获取缓存中的数据数量。 - * - * @return 缓存中的数据总量。 - */ - int getCachedCount(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseService.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseService.java deleted file mode 100644 index 9146ce35..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/base/service/IBaseService.java +++ /dev/null @@ -1,439 +0,0 @@ -package com.orangeforms.common.core.base.service; - -import com.baomidou.mybatisplus.extension.service.IService; -import com.orangeforms.common.core.object.CallResult; -import com.orangeforms.common.core.object.MyRelationParam; -import com.orangeforms.common.core.object.TableModelInfo; - -import java.io.Serializable; -import java.util.*; -import java.util.function.BiConsumer; -import java.util.function.Consumer; -import java.util.function.Function; - -/** - * 所有Service的接口。 - * - * @param Model对象的类型。 - * @param Model对象主键的类型。 - * @author Jerry - * @date 2022-02-20 - */ -public interface IBaseService extends IService{ - - /** - * 如果主键存在则更新,否则新增保存实体对象。 - * - * @param data 实体对象数据。 - * @param saveNew 新增实体对象方法。 - * @param update 更新实体对象方法。 - */ - void saveNewOrUpdate(M data, Consumer saveNew, BiConsumer update); - - /** - * 如果主键存在的则更新,否则批量新增保存实体对象。 - * - * @param dataList 实体对象数据列表。 - * @param saveNewBatch 批量新增实体对象方法。 - * @param update 更新实体对象方法。 - */ - void saveNewOrUpdateBatch(List dataList, Consumer> saveNewBatch, BiConsumer update); - - /** - * 根据过滤条件删除数据。 - * - * @param filter 过滤对象。 - * @return 删除数量。 - */ - Integer removeBy(M filter); - - /** - * 基于主从表之间的关联字段,批量改更新一对多从表数据。 - * 该操作会覆盖增、删、改三个操作,具体如下: - * 1. 先删除。从表中relationFieldName字段的值为relationFieldValue, 同时主键Id不在dataList中的。 - * 2. 再批量插入。遍历dataList中没有主键Id的对象,视为新对象批量插入。 - * 3. 最后逐条更新,遍历dataList中有主键Id的对象,视为已存在对象并逐条更新。 - * 4. 如果更新时间和更新用户Id为空,我们将视当前记录为变化数据,因此使用当前时间和用户分别填充这两个字段。 - * - * @param relationFieldName 主从表关联中,从表的Java字段名。 - * @param relationFieldValue 主从表关联中,与从表关联的主表字段值。该值会被赋值给从表关联字段。 - * @param updateUserIdFieldName 一对多从表的更新用户Id字段名。 - * @param updateTimeFieldName 一对多从表的更新时间字段名 - * @param dataList 批量更新的从表数据列表。 - * @param batchInserter 从表批量插入方法。 - */ - void updateBatchOneToManyRelation( - String relationFieldName, - Object relationFieldValue, - String updateUserIdFieldName, - String updateTimeFieldName, - List dataList, - Consumer> batchInserter); - - /** - * 判断指定字段的数据是否存在,且仅仅存在一条记录。 - * 如果是基于主键的过滤,会直接调用existId过滤函数,提升性能。在有缓存的场景下,也可以利用缓存。 - * - * @param fieldName 待过滤的字段名(Java 字段)。 - * @param fieldValue 字段值。 - * @return 存在且仅存在一条返回true,否则false。 - */ - boolean existOne(String fieldName, Object fieldValue); - - /** - * 判断主键Id关联的数据是否存在。 - * - * @param id 主键Id。 - * @return 存在返回true,否则false。 - */ - boolean existId(K id); - - /** - * 返回符合 filterField = filterValue 条件的一条数据。 - * - * @param filterField 过滤的Java字段。 - * @param filterValue 过滤的Java字段值。 - * @return 查询后的数据对象。 - */ - M getOne(String filterField, Object filterValue); - - /** - * 获取主表的查询结果,以及主表关联的字典数据和一对一从表数据,以及一对一从表的字典数据。 - * - * @param id 主表主键Id。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 查询结果对象。 - */ - M getByIdWithRelation(K id, MyRelationParam relationParam); - - /** - * 获取所有数据。 - * - * @return 返回所有数据。 - */ - List getAllList(); - - /** - * 获取排序后所有数据。 - * - * @param orderByProperties 需要排序的字段属性,这里使用Java对象中的属性名,而不是数据库字段名。 - * @return 返回排序后所有数据。 - */ - List getAllListByOrder(String... orderByProperties); - - /** - * 判断参数值主键集合中的所有数据,是否全部存在 - * - * @param idSet 待校验的主键集合。 - * @return 全部存在返回true,否则false。 - */ - boolean existAllPrimaryKeys(Set idSet); - - /** - * 判断参数值列表中的所有数据,是否全部存在。另外,keyName字段在数据表中必须是唯一键值,否则返回结果会出现误判。 - * - * @param inFilterField 待校验的数据字段,这里使用Java对象中的属性,如courseId,而不是数据字段名course_id - * @param inFilterValues 数据值列表。 - * @return 全部存在返回true,否则false。 - */ - boolean existUniqueKeyList(String inFilterField, Set inFilterValues); - - /** - * 根据过滤字段和过滤集合,返回不存在的数据。 - * - * @param filterField 过滤的Java字段。 - * @param filterSet 过滤字段数据集合。 - * @param findFirst 是否找到第一个就返回。 - * @param 过滤字段类型。 - * @return filterSet中,在从表中不存在的数据集合。 - */ - List notExist(String filterField, Set filterSet, boolean findFirst); - - /** - * 返回符合主键 in (idValues) 条件的所有数据。 - * - * @param idValues 主键值集合。 - * @return 检索后的数据列表。 - */ - List getInList(Set idValues); - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @return 检索后的数据列表。 - */ - List getInList(String inFilterField, Set inFilterValues); - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据,并根据orderBy字段排序。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param orderBy 排序字段。 - * @return 检索后的数据列表。 - */ - List getInList(String inFilterField, Set inFilterValues, String orderBy); - - /** - * 返回符合主键 in (idValues) 条件的所有数据。同时返回关联数据。 - * - * @param idValues 主键值集合。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 检索后的数据列表。 - */ - List getInListWithRelation(Set idValues, MyRelationParam relationParam); - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据。同时返回关联数据。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 检索后的数据列表。 - */ - List getInListWithRelation(String inFilterField, Set inFilterValues, MyRelationParam relationParam); - - /** - * 返回符合 inFilterField in (inFilterValues) 条件的所有数据,并根据orderBy字段排序。同时返回关联数据。 - * - * @param inFilterField 参与(In-list)过滤的Java字段。 - * @param inFilterValues 参与(In-list)过滤的Java字段值集合。 - * @param orderBy 排序字段。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @return 检索后的数据列表。 - */ - List getInListWithRelation( - String inFilterField, Set inFilterValues, String orderBy, MyRelationParam relationParam); - - /** - * 用参数对象作为过滤条件,获取数据数量。 - * - * @param filter 该方法基于mybatis 通用mapper,过滤对象中,只有被赋值的字段,才会成为where中的条件。 - * @return 返回过滤后的数据数量。 - */ - int getCountByFilter(M filter); - - /** - * 用参数对象作为过滤条件,判断是否存在过滤数据。 - * - * @param filter 该方法基于mybatis 通用mapper,过滤对象中,只有被赋值的字段,才会成为where中的条件。 - * @return 存在返回true,否则false。 - */ - boolean existByFilter(M filter); - - /** - * 用参数对象作为过滤条件,获取查询结果。 - * - * @param filter 该方法基于mybatis的通用mapper。如果参数为null,则返回全部数据。 - * @return 返回过滤后的数据。 - */ - List getListByFilter(M filter); - - /** - * 获取父主键Id下的所有子数据列表。 - * - * @param parentIdFieldName 父主键字段名字,如"courseId"。 - * @param parentId 父主键的值。 - * @return 父主键Id下的所有子数据列表。 - */ - List getListByParentId(String parentIdFieldName, K parentId); - - /** - * 根据指定的显示字段列表、过滤条件字符串和分组字符串,返回聚合计算后的查询结果。(基本是内部框架使用,不建议外部接口直接使用)。 - * - * @param selectFields 选择的字段列表,多个字段逗号分隔。 - * NOTE: 如果数据表字段和Java对象字段名字不同,Java对象字段应该以别名的形式出现。 - * 如: table_column_name modelFieldName。否则无法被反射回Bean对象。 - * @param whereClause SQL常量形式的条件从句。 - * @param groupBy SQL常量形式分组字段列表,逗号分隔。 - * @return 聚合计算后的数据结果集。 - */ - List> getGroupedListByCondition(String selectFields, String whereClause, String groupBy); - - /** - * 根据指定的显示字段列表、过滤条件字符串和排序字符串,返回查询结果。(基本是内部框架使用,不建议外部接口直接使用)。 - * - * @param selectList 选择的Java字段列表。如果为空表示返回全部字段。 - * @param filter 过滤对象。 - * @param whereClause SQL常量形式的条件从句。 - * @param orderBy SQL常量形式排序字段列表,逗号分隔。 - * @return 查询结果。 - */ - List getListByCondition(List selectList, M filter, String whereClause, String orderBy); - - /** - * 用指定过滤条件,计算记录数量。(基本是内部框架使用,不建议外部接口直接使用)。 - * - * @param whereClause SQL常量形式的条件从句。 - * @return 返回过滤后的数据数量。 - */ - Integer getCountByCondition(String whereClause); - - /** - * 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。 - * NOTE: BaseService中会给出返回CallResult.ok()的缺省实现。每个业务服务实现类在需要的时候可以重载该方法。 - * - * @param data 数据对象。 - * @param originalData 原有数据对象,null表示data为新增对象。 - * @return 应答结果对象。 - */ - CallResult verifyRelatedData(M data, M originalData); - - /** - * 根据最新对象和原有对象的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。 - * 如果data对象中包含主键值,方法内部会获取原有对象值,并进行更新方式的关联数据比对,否则视为新增数据关联对象比对。 - * - * @param data 数据对象。 - * @return 应答结果对象。 - */ - CallResult verifyRelatedData(M data); - - /** - * 根据最新对象列表和原有对象列表的数据对比,判断关联的字典数据和多对一主表数据是否都是合法数据。 - * 如果dataList列表中的对象包含主键值,方法内部会获取原有对象值,并进行更新方式的关联数据比对,否则视为新增数据关联对象比对。 - * - * @param dataList 数据对象列表。 - * @return 应答结果对象。 - */ - CallResult verifyRelatedData(List dataList); - - /** - * 批量导入数据列表,对依赖常量字典的数据进行验证。 - * - * @param dataList 批量导入数据列表。 - * @param fieldName 业务主表中依赖常量字典的字段名。 - * @param idGetter 获取业务主表中依赖常量字典字段值的Function对象。 - * @param 业务主表中依赖常量字典的字段类型。 - * @return 验证结果,如果失败,在data中包含具体的错误对象。 - */ - CallResult verifyImportForConstDict(List dataList, String fieldName, Function idGetter); - - /** - * 批量导入数据列表,对依赖字典表字典的数据进行验证。 - * - * @param dataList 批量导入数据列表。 - * @param fieldName 业务主表中依赖字典表字典的字段名。 - * @param idGetter 获取业务主表中依赖字典表字典字段值的Function对象。 - * @param 业务主表中依赖字典表字典的字段类型。 - * @return 验证结果,如果失败,在data中包含具体的错误对象。 - */ - CallResult verifyImportForDict(List dataList, String fieldName, Function idGetter); - - /** - * 批量导入数据列表,对依赖数据源字典的数据进行验证。 - * - * @param dataList 批量导入数据列表。 - * @param fieldName 业务主表中依赖数据源字典的字段名。 - * @param idGetter 获取业务主表中依赖数据源字典字段值的Function对象。 - * @param 业务主表中依赖数据源字典的字段类型。 - * @return 验证结果,如果失败,在data中包含具体的错误对象。 - */ - CallResult verifyImportForDatasourceDict(List dataList, String fieldName, Function idGetter); - - /** - * 批量导入数据列表,对存在一对一关联的数据进行验证。 - * - * @param dataList 批量导入数据列表。 - * @param fieldName 业务主表中存在一对一关联的字段名。 - * @param idGetter 获取业务主表中一对一关联字段值的Function对象。 - * @param 业务主表中存在一对一关联的字段类型。 - * @return 验证结果,如果失败,在data中包含具体的错误对象。 - */ - CallResult verifyImportForOneToOneRelation(List dataList, String fieldName, Function idGetter); - - /** - * 集成所有与主表实体对象相关的关联数据列表。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - */ - void buildRelationForDataList(List resultList, MyRelationParam relationParam); - - /** - * 集成所有与主表实体对象相关的关联数据列表。包括本地和远程服务的一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - void buildRelationForDataList(List resultList, MyRelationParam relationParam, Set ignoreFields); - - /** - * 该函数主要用于对查询结果的批量导出。不同于支持分页的列表查询,批量导出没有分页机制, - * 因此在导出数据量较大的情况下,很容易给数据库的内存、CPU和IO带来较大的压力。而通过 - * 我们的分批处理,可以极大的规避该问题的出现几率。调整batchSize的大小,也可以有效的 - * 改善运行效率。 - * 我们目前的处理机制是,先从主表取出所有符合条件的主表数据,这样可以避免分批处理时, - * 后面几批数据,因为skip过多而带来的效率问题。因为是单表过滤,不会给数据库带来过大的压力。 - * 之后再在主表结果集数据上进行分批级联处理。 - * 集成所有与主表实体对象相关的关联数据列表。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param batchSize 每批集成的记录数量。小于等于0时将不做分批处理。 - */ - void buildRelationForDataList(List resultList, MyRelationParam relationParam, int batchSize); - - /** - * 该函数主要用于对查询结果的批量导出。不同于支持分页的列表查询,批量导出没有分页机制, - * 因此在导出数据量较大的情况下,很容易给数据库的内存、CPU和IO带来较大的压力。而通过 - * 我们的分批处理,可以极大的规避该问题的出现几率。调整batchSize的大小,也可以有效的 - * 改善运行效率。 - * 我们目前的处理机制是,先从主表取出所有符合条件的主表数据,这样可以避免分批处理时, - * 后面几批数据,因为skip过多而带来的效率问题。因为是单表过滤,不会给数据库带来过大的压力。 - * 之后再在主表结果集数据上进行分批级联处理。 - * 集成所有与主表实体对象相关的关联数据列表。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param resultList 主表实体对象列表。数据集成将直接作用于该对象列表。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param batchSize 每批集成的记录数量。小于等于0时将不做分批处理。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - */ - void buildRelationForDataList( - List resultList, MyRelationParam relationParam, int batchSize, Set ignoreFields); - - /** - * 集成所有与主表实体对象相关的关联数据对象。包括一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param dataObject 主表实体对象。数据集成将直接作用于该对象。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param 实体对象类型。 - */ - void buildRelationForData(T dataObject, MyRelationParam relationParam); - - /** - * 集成所有与主表实体对象相关的关联数据对象。包括本地和远程服务的一对一、字典、一对多和多对多聚合运算等。 - * 也可以根据实际需求,单独调用该函数所包含的各个数据集成函数。 - * NOTE: 该方法内执行的SQL将禁用数据权限过滤。 - * - * @param dataObject 主表实体对象。数据集成将直接作用于该对象。 - * @param relationParam 实体对象数据组装的参数构建器。 - * @param ignoreFields 该集合中的字段,即便包含注解也不会在当前调用中进行数据组装。 - * @param 实体对象类型。 - */ - void buildRelationForData(T dataObject, MyRelationParam relationParam, Set ignoreFields); - - /** - * 仅仅在spring boot 启动后的监听器事件中调用,缓存所有service的关联关系,加速后续的数据绑定效率。 - */ - void loadRelationStruct(); - - /** - * 获取当前服务引用的实体对象及表信息。 - * - * @return 实体对象及表信息。 - */ - TableModelInfo getTableModelInfo(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/DictionaryCache.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/DictionaryCache.java deleted file mode 100644 index d37e7aeb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/DictionaryCache.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.orangeforms.common.core.cache; - -import java.util.List; -import java.util.Set; - -/** - * 主要用于完整缓存字典表数据的接口对象。 - * - * @param 字典表主键类型。 - * @param 字典表对象类型。 - * @author Jerry - * @date 2022-02-20 - */ -public interface DictionaryCache { - - /** - * 按照数据插入的顺序返回全部字典对象的列表。 - * - * @return 全部字段数据列表。 - */ - List getAll(); - - /** - * 获取缓存中与键列表对应的对象列表。 - * - * @param keys 主键集合。 - * @return 对象列表。 - */ - List getInList(Set keys); - - /** - * 将参数List中的数据保存到缓存中,同时保证getAll返回的数据列表,与参数列表中数据项的顺序保持一致。 - * - * @param dataList 待缓存的数据列表。 - */ - void putAll(List dataList); - - /** - * 重新加载,先清空原有数据,在执行putAll的操作。 - * - * @param dataList 待缓存的数据列表。 - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - void reload(List dataList, boolean force); - - /** - * 从缓存中获取指定的数据。 - * - * @param key 数据的key。 - * @return 获取到的数据,如果没有返回null。 - */ - V get(K key); - - /** - * 将数据存入缓存。 - * - * @param key 通常为字典数据的主键。 - * @param object 字典数据对象。 - */ - void put(K key, V object); - - /** - * 获取缓存中数据条目的数量。 - * - * @return 返回缓存的数据数量。 - */ - int getCount(); - - /** - * 删除缓存中指定的键。 - * - * @param key 待删除数据的主键。 - * @return 返回被删除的对象,如果主键不存在,返回null。 - */ - V invalidate(K key); - - /** - * 删除缓存中,参数列表中包含的键。 - * - * @param keys 待删除数据的主键集合。 - */ - void invalidateSet(Set keys); - - /** - * 清空缓存。 - */ - void invalidateAll(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapDictionaryCache.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapDictionaryCache.java deleted file mode 100644 index 7e547942..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapDictionaryCache.java +++ /dev/null @@ -1,358 +0,0 @@ -package com.orangeforms.common.core.cache; - -import com.orangeforms.common.core.exception.MapCacheAccessException; -import lombok.extern.slf4j.Slf4j; - -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.function.Function; - -/** - * 字典数据内存缓存对象。 - * - * @param 字典表主键类型。 - * @param 字典表对象类型。 - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class MapDictionaryCache implements DictionaryCache { - - /** - * 存储字典数据的Map。 - */ - protected final LinkedHashMap dataMap = new LinkedHashMap<>(); - /** - * 获取字典主键数据的函数对象。 - */ - protected final Function idGetter; - /** - * 由于大部分场景是读取操作,所以使用读写锁提高并发的伸缩性。 - */ - protected final ReadWriteLock lock = new ReentrantReadWriteLock(); - /** - * 超时时长。单位毫秒。 - */ - protected static final long TIMEOUT = 2000L; - - /** - * 当前对象的构造器函数。 - * - * @param idGetter 获取当前类主键字段值的函数对象。 - * @param 字典主键类型。 - * @param 字典对象类型 - * @return 实例化后的字典内存缓存对象。 - */ - public static MapDictionaryCache create(Function idGetter) { - if (idGetter == null) { - throw new IllegalArgumentException("IdGetter can't be NULL."); - } - return new MapDictionaryCache<>(idGetter); - } - - /** - * 构造函数。 - * - * @param idGetter 主键Id的获取函数对象。 - */ - public MapDictionaryCache(Function idGetter) { - this.idGetter = idGetter; - } - - /** - * 按照数据插入的顺序返回全部字典对象的列表。 - * - * @return 全部字段数据列表。 - */ - @Override - public List getAll() { - List resultList = new LinkedList<>(); - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - for (Map.Entry entry : dataMap.entrySet()) { - resultList.add(entry.getValue()); - } - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - return resultList; - } - - /** - * 获取缓存中与键列表对应的对象列表。 - * - * @param keys 主键集合。 - * @return 对象列表。 - */ - @Override - public List getInList(Set keys) { - List resultList = new LinkedList<>(); - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - keys.forEach(key -> { - V object = dataMap.get(key); - if (object != null) { - resultList.add(object); - } - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - return resultList; - } - - /** - * 将参数List中的数据保存到缓存中,同时保证getAll返回的数据列表,与参数列表中数据项的顺序保持一致。 - * - * @param dataList 待缓存的数据列表。 - */ - @Override - public void putAll(List dataList) { - if (dataList == null) { - return; - } - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataList.forEach(dataObj -> { - K id = idGetter.apply(dataObj); - dataMap.put(id, dataObj); - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 重新加载,先清空原有数据,在执行putAll的操作。 - * - * @param dataList 待缓存的数据列表。 - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - @Override - public void reload(List dataList, boolean force) { - if (!force && this.getCount() > 0) { - return; - } - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.clear(); - dataList.forEach(dataObj -> { - K id = idGetter.apply(dataObj); - dataMap.put(id, dataObj); - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 从缓存中获取指定的数据。 - * - * @param id 数据的key。 - * @return 获取到的数据,如果没有返回null。 - */ - @Override - public V get(K id) { - if (id == null) { - return null; - } - V data; - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - data = dataMap.get(id); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - return data; - } - - /** - * 将数据存入缓存。 - * - * @param id 通常为字典数据的主键。 - * @param object 字典数据对象。 - */ - @Override - public void put(K id, V object) { - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.put(id, object); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 获取缓存中数据条目的数量。 - * - * @return 返回缓存的数据数量。 - */ - @Override - public int getCount() { - return dataMap.size(); - } - - /** - * 删除缓存中指定的键。 - * - * @param id 待删除数据的主键。 - * @return 返回被删除的对象,如果主键不存在,返回null。 - */ - @Override - public V invalidate(K id) { - if (id == null) { - return null; - } - String exceptionMessage; - V data; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - data = dataMap.remove(id); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - return data; - } - - /** - * 删除缓存中,参数列表中包含的键。 - * - * @param keys 待删除数据的主键集合。 - */ - @Override - public void invalidateSet(Set keys) { - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - keys.forEach(id -> { - if (id != null) { - dataMap.remove(id); - } - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 清空缓存。 - */ - @Override - public void invalidateAll() { - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.clear(); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapTreeDictionaryCache.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapTreeDictionaryCache.java deleted file mode 100644 index 4f2448d8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/cache/MapTreeDictionaryCache.java +++ /dev/null @@ -1,292 +0,0 @@ -package com.orangeforms.common.core.cache; - -import com.orangeforms.common.core.exception.MapCacheAccessException; -import com.google.common.collect.LinkedHashMultimap; -import com.google.common.collect.Multimap; -import lombok.extern.slf4j.Slf4j; - -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.function.Function; - -/** - * 树形字典数据内存缓存对象。 - * - * @param 字典表主键类型。 - * @param 字典表对象类型。 - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class MapTreeDictionaryCache extends MapDictionaryCache { - - /** - * 树形数据存储对象。 - */ - private final Multimap allTreeMap = LinkedHashMultimap.create(); - /** - * 获取字典父主键数据的函数对象。 - */ - protected final Function parentIdGetter; - - /** - * 当前对象的构造器函数。 - * - * @param idGetter 获取当前类主键字段值的函数对象。 - * @param parentIdGetter 获取当前类父主键字段值的函数对象。 - * @param 字典主键类型。 - * @param 字典对象类型 - * @return 实例化后的树形字典内存缓存对象。 - */ - public static MapTreeDictionaryCache create(Function idGetter, Function parentIdGetter) { - if (idGetter == null) { - throw new IllegalArgumentException("IdGetter can't be NULL."); - } - if (parentIdGetter == null) { - throw new IllegalArgumentException("ParentIdGetter can't be NULL."); - } - return new MapTreeDictionaryCache<>(idGetter, parentIdGetter); - } - - /** - * 构造函数。 - * - * @param idGetter 获取当前类主键字段值的函数对象。 - * @param parentIdGetter 获取当前类父主键字段值的函数对象。 - */ - public MapTreeDictionaryCache(Function idGetter, Function parentIdGetter) { - super(idGetter); - this.parentIdGetter = parentIdGetter; - } - - - /** - * 重新加载,先清空原有数据,在执行putAll的操作。 - * - * @param dataList 待缓存的数据列表。 - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - @Override - public void reload(List dataList, boolean force) { - if (!force && this.getCount() > 0) { - return; - } - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.clear(); - allTreeMap.clear(); - dataList.forEach(data -> { - K id = idGetter.apply(data); - dataMap.put(id, data); - K parentId = parentIdGetter.apply(data); - allTreeMap.put(parentId, data); - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 获取该父主键的子数据列表。 - * - * @param parentId 父主键Id。 - * @return 子数据列表。 - */ - public List getListByParentId(K parentId) { - List resultList = new LinkedList<>(); - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - resultList.addAll(allTreeMap.get(parentId)); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - return resultList; - } - - /** - * 将参数List中的数据保存到缓存中,同时保证getAll返回的数据列表,与参数列表中数据项的顺序保持一致。 - * - * @param dataList 待缓存的数据列表。 - */ - @Override - public void putAll(List dataList) { - if (dataList == null) { - return; - } - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataList.forEach(data -> { - K id = idGetter.apply(data); - dataMap.put(id, data); - K parentId = parentIdGetter.apply(data); - allTreeMap.remove(parentId, data); - allTreeMap.put(parentId, data); - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 将数据存入缓存。 - * - * @param id 通常为字典数据的主键。 - * @param data 字典数据对象。 - */ - @Override - public void put(K id, V data) { - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.put(id, data); - K parentId = parentIdGetter.apply(data); - allTreeMap.remove(parentId, data); - allTreeMap.put(parentId, data); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 删除缓存中指定的键。 - * - * @param id 待删除数据的主键。 - * @return 返回被删除的对象,如果主键不存在,返回null。 - */ - @Override - public V invalidate(K id) { - V v; - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - v = dataMap.remove(id); - if (v != null) { - K parentId = parentIdGetter.apply(v); - allTreeMap.remove(parentId, v); - } - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - return v; - } - - /** - * 删除缓存中,参数列表中包含的键。 - * - * @param keys 待删除数据的主键集合。 - */ - @Override - public void invalidateSet(Set keys) { - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - keys.forEach(id -> { - if (id != null) { - V data = dataMap.remove(id); - if (data != null) { - K parentId = parentIdGetter.apply(data); - allTreeMap.remove(parentId, data); - } - } - }); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } - - /** - * 清空缓存。 - */ - @Override - public void invalidateAll() { - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.clear(); - allTreeMap.clear(); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [MapDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT.", - e.getClass().getSimpleName()); - log.warn(exceptionMessage); - throw new MapCacheAccessException(exceptionMessage, e); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CommonWebMvcConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CommonWebMvcConfig.java deleted file mode 100644 index 9ebcfeb1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CommonWebMvcConfig.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.orangeforms.common.core.config; - -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.alibaba.fastjson.support.config.FastJsonConfig; -import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; -import com.orangeforms.common.core.interceptor.MyRequestArgumentResolver; -import com.orangeforms.common.core.util.MyDateUtil; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.MediaType; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.http.converter.StringHttpMessageConverter; -import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.List; - -/** - * 所有的项目拦截器、参数解析器、消息对象转换器都在这里集中配置。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class CommonWebMvcConfig implements WebMvcConfigurer { - - @Bean - public MethodValidationPostProcessor methodValidationPostProcessor() { - return new MethodValidationPostProcessor(); - } - - @Override - public void addArgumentResolvers(List argumentResolvers) { - // 添加MyRequestBody参数解析器 - argumentResolvers.add(new MyRequestArgumentResolver()); - } - - @Bean - public HttpMessageConverter responseBodyConverter() { - return new StringHttpMessageConverter(StandardCharsets.UTF_8); - } - - @Bean - public FastJsonHttpMessageConverter fastJsonHttpMessageConverters() { - FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); - List supportedMediaTypes = new ArrayList<>(); - supportedMediaTypes.add(MediaType.APPLICATION_JSON); - supportedMediaTypes.add(MediaType.APPLICATION_FORM_URLENCODED); - fastConverter.setSupportedMediaTypes(supportedMediaTypes); - FastJsonConfig fastJsonConfig = new FastJsonConfig(); - fastJsonConfig.setSerializerFeatures( - SerializerFeature.PrettyFormat, - SerializerFeature.DisableCircularReferenceDetect, - SerializerFeature.IgnoreNonFieldGetter); - fastJsonConfig.setDateFormat(MyDateUtil.COMMON_SHORT_DATETIME_FORMAT); - fastConverter.setFastJsonConfig(fastJsonConfig); - return fastConverter; - } - - @Override - public void configureMessageConverters(List> converters) { - converters.add(responseBodyConverter()); - converters.add(fastJsonHttpMessageConverters()); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CoreProperties.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CoreProperties.java deleted file mode 100644 index d18e6302..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/CoreProperties.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.orangeforms.common.core.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Configuration; - -/** - * common-core的配置属性类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@Configuration -@ConfigurationProperties(prefix = "common-core") -public class CoreProperties { - - public static final String MYSQL_TYPE = "mysql"; - public static final String POSTGRESQL_TYPE = "postgresql"; - - /** - * 数据库类型。 - */ - private String databaseType = MYSQL_TYPE; - - /** - * 是否为MySQL。 - * - * @return 是返回true,否则false。 - */ - public boolean isMySql() { - return this.databaseType.equals(MYSQL_TYPE); - } - - /** - * 是否为PostgreSQl。 - * - * @return 是返回true,否则false。 - */ - public boolean isPostgresql() { - return this.databaseType.equals(POSTGRESQL_TYPE); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DataSourceContextHolder.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DataSourceContextHolder.java deleted file mode 100644 index ee2dd978..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DataSourceContextHolder.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.orangeforms.common.core.config; - -/** - * 通过线程本地存储的方式,保存当前数据库操作所需的数据源类型,动态数据源会根据该值,进行动态切换。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class DataSourceContextHolder { - - private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); - - /** - * 设置数据源类型。 - * - * @param type 数据源类型 - * @return 原有数据源类型,如果第一次设置则返回null。 - */ - public static Integer setDataSourceType(Integer type) { - Integer datasourceType = CONTEXT_HOLDER.get(); - CONTEXT_HOLDER.set(type); - return datasourceType; - } - - /** - * 获取当前数据库操作执行线程的数据源类型,同时由动态数据源的路由函数调用。 - * - * @return 数据源类型。 - */ - public static Integer getDataSourceType() { - return CONTEXT_HOLDER.get(); - } - - /** - * 清除线程本地变量,以免内存泄漏。 - - * @param originalType 原有的数据源类型,如果该值为null,则情况本地化变量。 - */ - public static void unset(Integer originalType) { - if (originalType == null) { - CONTEXT_HOLDER.remove(); - } else { - CONTEXT_HOLDER.set(originalType); - } - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private DataSourceContextHolder() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DynamicDataSource.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DynamicDataSource.java deleted file mode 100644 index 6c344974..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/DynamicDataSource.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.orangeforms.common.core.config; - -import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; - -/** - * 动态数据源对象。当存在多个数据连接时使用。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class DynamicDataSource extends AbstractRoutingDataSource { - - @Override - protected Object determineCurrentLookupKey() { - return DataSourceContextHolder.getDataSourceType(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/EncryptConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/EncryptConfig.java deleted file mode 100644 index 1629adc7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/EncryptConfig.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.orangeforms.common.core.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; - -/** - * 目前用于用户密码加密,UAA接入应用客户端的client_secret加密。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class EncryptConfig { - - @Bean - public BCryptPasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/RestTemplateConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/RestTemplateConfig.java deleted file mode 100644 index aa0734a7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/RestTemplateConfig.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.orangeforms.common.core.config; - -import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; -import org.apache.http.client.HttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.ClientHttpResponse; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.http.converter.StringHttpMessageConverter; -import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; -import org.springframework.web.client.DefaultResponseErrorHandler; -import org.springframework.web.client.RestOperations; -import org.springframework.web.client.RestTemplate; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.List; - -/** - * RestTemplate连接池配置对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class RestTemplateConfig { - private static final int MAX_TOTAL_CONNECTION = 50; - private static final int MAX_CONNECTION_PER_ROUTE = 20; - private static final int CONNECTION_TIMEOUT = 20000; - private static final int READ_TIMEOUT = 30000; - - @Bean - @ConditionalOnMissingBean({RestOperations.class, RestTemplate.class}) - public RestTemplate restTemplate() { - RestTemplate restTemplate = new RestTemplate(createFactory()); - List> messageConverters = restTemplate.getMessageConverters(); - messageConverters.removeIf( - c -> c instanceof StringHttpMessageConverter || c instanceof MappingJackson2HttpMessageConverter); - messageConverters.add(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); - messageConverters.add(new FastJsonHttpMessageConverter()); - restTemplate.setErrorHandler(new DefaultResponseErrorHandler() { - @Override - public void handleError(ClientHttpResponse response) throws IOException { - // 防止400+和500等错误被直接抛出异常,这里避开了缺省处理方式,所有的错误均交给业务代码处理。 - } - }); - return restTemplate; - } - - private ClientHttpRequestFactory createFactory() { - HttpClient httpClient = HttpClientBuilder.create() - .setMaxConnTotal(MAX_TOTAL_CONNECTION) - .setMaxConnPerRoute(MAX_CONNECTION_PER_ROUTE) - .build(); - HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(httpClient); - factory.setReadTimeout(READ_TIMEOUT); - factory.setConnectTimeout(CONNECTION_TIMEOUT); - return factory; - } -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/TomcatConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/TomcatConfig.java deleted file mode 100644 index 9ca2c19a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/config/TomcatConfig.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.orangeforms.common.core.config; - -import org.apache.tomcat.util.descriptor.web.SecurityCollection; -import org.apache.tomcat.util.descriptor.web.SecurityConstraint; -import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * tomcat配置对象。当前配置禁用了PUT和DELETE方法,防止渗透攻击。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class TomcatConfig { - - @Bean - public TomcatServletWebServerFactory servletContainer() { - TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); - factory.addContextCustomizers(context -> { - SecurityConstraint securityConstraint = new SecurityConstraint(); - securityConstraint.setUserConstraint("CONFIDENTIAL"); - SecurityCollection collection = new SecurityCollection(); - collection.addPattern("/*"); - collection.addMethod("HEAD"); - collection.addMethod("PUT"); - collection.addMethod("PATCH"); - collection.addMethod("DELETE"); - collection.addMethod("TRACE"); - collection.addMethod("COPY"); - collection.addMethod("SEARCH"); - collection.addMethod("PROPFIND"); - securityConstraint.addCollection(collection); - context.addConstraint(securityConstraint); - }); - return factory; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AggregationType.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AggregationType.java deleted file mode 100644 index c09602cf..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AggregationType.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.orangeforms.common.core.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 聚合计算的常量类型对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class AggregationType { - - /** - * sum 计数 - */ - public static final int SUM = 0; - /** - * count 汇总 - */ - public static final int COUNT = 1; - /** - * average 平均值 - */ - public static final int AVG = 2; - /** - * min 最小值 - */ - public static final int MIN = 3; - /** - * max 最大值 - */ - public static final int MAX = 4; - - private static final Map DICT_MAP = new HashMap<>(5); - static { - DICT_MAP.put(SUM, "累计总和"); - DICT_MAP.put(COUNT, "数量总和"); - DICT_MAP.put(AVG, "平均值"); - DICT_MAP.put(MIN, "最小值"); - DICT_MAP.put(MAX, "最大值"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 获取与SQL对应的聚合函数字符串名称。 - * - * @return 聚合函数名称。 - */ - public static String getAggregationFunction(Integer aggregationType) { - switch (aggregationType) { - case COUNT: - return "COUNT"; - case AVG: - return "AVG"; - case SUM: - return "SUM"; - case MAX: - return "MAX"; - case MIN: - return "MIN"; - default: - throw new IllegalArgumentException("无效的聚合类型!"); - } - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private AggregationType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AppDeviceType.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AppDeviceType.java deleted file mode 100644 index 628f581e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/AppDeviceType.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.orangeforms.common.core.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * App 登录的设备类型。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class AppDeviceType { - - /** - * 移动端 (如果不考虑区分android或ios的,可以使用该值) - */ - public static final int MOBILE = 0; - /** - * android - */ - public static final int ANDROID = 1; - /** - * iOS - */ - public static final int IOS = 2; - /** - * 微信公众号和小程序 - */ - public static final int WEIXIN = 3; - /** - * PC WEB - */ - public static final int WEB = 4; - - private static final Map DICT_MAP = new HashMap<>(5); - static { - DICT_MAP.put(MOBILE, "移动端"); - DICT_MAP.put(ANDROID, "Android"); - DICT_MAP.put(IOS, "iOS"); - DICT_MAP.put(WEIXIN, "微信"); - DICT_MAP.put(WEB, "PC WEB"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private AppDeviceType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ApplicationConstant.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ApplicationConstant.java deleted file mode 100644 index 4ba70f81..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ApplicationConstant.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.orangeforms.common.core.constant; - -/** - * 应用程序的常量声明对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class ApplicationConstant { - - /** - * 数据同步使用的缺省消息队列主题名称。 - */ - public static final String DEFAULT_DATA_SYNC_TOPIC = "DemoSinglePg"; - /** - * 全量数据同步中,新增数据对象的键名称。 - */ - public static final String DEFAULT_FULL_SYNC_DATA_KEY = "data"; - /** - * 全量数据同步中,原有数据对象的键名称。 - */ - public static final String DEFAULT_FULL_SYNC_OLD_DATA_KEY = "oldData"; - /** - * 全量数据同步中,数据对象主键的键名称。 - */ - public static final String DEFAULT_FULL_SYNC_ID_KEY = "id"; - /** - * 为字典表数据缓存时,缓存名称的固定后缀。 - */ - public static final String DICT_CACHE_NAME_SUFFIX = "-DICT"; - /** - * 为树形字典表数据缓存时,缓存名称的固定后缀。 - */ - public static final String TREE_DICT_CACHE_NAME_SUFFIX = "-TREE-DICT"; - /** - * 图片文件上传的父目录。 - */ - public static final String UPLOAD_IMAGE_PARENT_PATH = "image"; - /** - * 附件文件上传的父目录。 - */ - public static final String UPLOAD_ATTACHMENT_PARENT_PATH = "attachment"; - /** - * CSV文件扩展名。 - */ - public static final String CSV_EXT = "csv"; - /** - * XLSX文件扩展名。 - */ - public static final String XLSX_EXT = "xlsx"; - /** - * 统计分类计算时,按天聚合计算的常量值。(前端在MyOrderParam和MyGroupParam中传给后台) - */ - public static final String DAY_AGGREGATION = "day"; - /** - * 统计分类计算时,按月聚合计算的常量值。(前端在MyOrderParam和MyGroupParam中传给后台) - */ - public static final String MONTH_AGGREGATION = "month"; - /** - * 统计分类计算时,按年聚合计算的常量值。(前端在MyOrderParam和MyGroupParam中传给后台) - */ - public static final String YEAR_AGGREGATION = "year"; - /** - * 请求头跟踪id名。 - */ - public static final String HTTP_HEADER_TRACE_ID = "traceId"; - /** - * 操作日志的数据源类型。仅当前服务为多数据源时使用。 - * 在common-log模块中,SysOperationLogServiceImpl的MyDataSource注解一定要使用该参数。 - * 在多数据源的业务服务中,DataSourceType的常量一定要包含该值,多数据源的配置中,也一定要有与该值匹配的数据源Bean。 - */ - public static final int OPERATION_LOG_DATASOURCE_TYPE = 1000; - /** - * 重要说明:该值为项目生成后的缺省密钥,仅为使用户可以快速上手并跑通流程。 - * 在实际的应用中,一定要为不同的项目或服务,自行生成公钥和私钥,并将 PRIVATE_KEY 的引用改为服务的配置项。 - * 密钥的生成方式,可通过执行common.core.util.RsaUtil类的main函数动态生成。 - */ - public static final String PRIVATE_KEY = - "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKkLhAydtOtA4WuIkkIIUVaGWu4ElOEAQF9GTulHHWOwCHI1UvcKolvS1G+mdsKcmGtEAQ92AUde/kDRGu8Wn7kLDtCgUfo72soHz7Qfv5pVB4ohMxQd/9cxeKjKbDoirhB9Z3xGF20zUozp4ZPLxpTtI7azr0xzUtd5+D/HfLDrAgMBAAECgYEApESZhDz4YyeAJiPnpJ06lS8oS2VOWzsIUs0av5uoloeoHXtt7Lx7u2kroHeNrl3Hy2yg7ypH4dgQkGHin3VHrVAgjG3TxhgBXIqqntzzk2AGJKBeIIkRX86uTvtKZyp3flUgcwcGmpepAHS1V1DPY3aVYvbcqAmoL6DX6VYN0NECQQDQUitMdC76lEtAr5/ywS0nrZJDo6U7eQ7ywx/eiJ+YmrSye8oorlAj1VBWG+Cl6jdHOHtTQyYv/tu71fjzQiJTAkEAz7wb47/vcSUpNWQxItFpXz0o6rbJh71xmShn1AKP7XptOVZGlW9QRYEzHabV9m/DHqI00cMGhHrWZAhCiTkUCQJAFsJjaJ7o4weAkTieyO7B+CvGZw1h5/V55Jvcx3s1tH5yb22G0Jr6tm9/r2isSnQkReutzZLwgR3e886UvD7lcQJAAUcD2OOuQkDbPwPNtYwaHMbQgJj9JkOI9kskUE5vuiMdltOr/XFAyhygRtdmy2wmhAK1VnDfkmL6/IR8fEGImQJABOB0KCalb0M8CPnqqHzozrD8gPObnIIr4aVvLIPATN2g7MM2N6F7JbI4RZFiKa92LV6bhQCY8OvHi5K2cgFpbw=="; - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private ApplicationConstant() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ErrorCodeEnum.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ErrorCodeEnum.java deleted file mode 100644 index feaa27fe..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/ErrorCodeEnum.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.orangeforms.common.core.constant; - -/** - * 返回应答中的错误代码和错误信息。 - * - * @author Jerry - * @date 2022-02-20 - */ -public enum ErrorCodeEnum { - - /** - * 没有错误 - */ - NO_ERROR("没有错误"), - /** - * 未处理的异常! - */ - UNHANDLED_EXCEPTION("未处理的异常!"), - - ARGUMENT_NULL_EXIST("数据验证失败,接口调用参数存在空值,请核对!"), - ARGUMENT_PK_ID_NULL("数据验证失败,接口调用主键Id参数为空,请核对!"), - INVALID_ARGUMENT_FORMAT("数据验证失败,不合法的参数格式,请核对!"), - INVALID_STATUS_ARGUMENT("数据验证失败,无效的状态参数值,请核对!"), - UPLOAD_FAILED("数据验证失败,数据上传失败!"), - INVALID_UPLOAD_FIELD("数据验证失败,该字段不支持数据上传!"), - INVALID_UPLOAD_STORE_TYPE("数据验证失败,并不支持上传存储类型!"), - INVALID_UPLOAD_FILE_ARGUMENT("数据验证失败,上传文件参数错误,请核对!"), - INVALID_UPLOAD_FILE_IOERROR("上传文件写入失败,请联系管理员!"), - UNAUTHORIZED_LOGIN("当前用户尚未登录或登录已超时,请重新登录!"), - UNAUTHORIZED_USER_PERMISSION("权限验证失败,当前用户不能访问该接口,请核对!"), - NO_ACCESS_PERMISSION("当前用户没有访问权限,请核对!"), - NO_OPERATION_PERMISSION("当前用户没有操作权限,请核对!"), - - PASSWORD_ERR("密码错误,请重试!"), - INVALID_USERNAME_PASSWORD("用户名或密码错误,请重试!"), - INVALID_ACCESS_TOKEN("无效的用户访问令牌!"), - INVALID_USER_STATUS("用户状态错误,请刷新后重试!"), - INVALID_TENANT_CODE("指定的租户编码并不存在,请刷新后重试!"), - INVALID_TENANT_STATUS("当前租户为不可用状态,请刷新后重试!"), - INVALID_USER_TENANT("当前用户并不属于当前租户,请刷新后重试!"), - - HAS_CHILDREN_DATA("数据验证失败,子数据存在,请刷新后重试!"), - DATA_VALIDATED_FAILED("数据验证失败,请核对!"), - UPLOAD_FILE_FAILED("文件上传失败,请联系管理员!"), - DATA_SAVE_FAILED("数据保存失败,请联系管理员!"), - DATA_ACCESS_FAILED("数据访问失败,请联系管理员!"), - DATA_PERM_ACCESS_FAILED("数据访问失败,您没有该页面的数据访问权限!"), - DUPLICATED_UNIQUE_KEY("数据保存失败,存在重复数据,请核对!"), - DATA_NOT_EXIST("数据不存在,请刷新后重试!"), - DATA_PARENT_LEVEL_ID_NOT_EXIST("数据验证失败,父级别关联Id不存在,请刷新后重试!"), - DATA_PARENT_ID_NOT_EXIST("数据验证失败,ParentId不存在,请核对!"), - INVALID_RELATED_RECORD_ID("数据验证失败,关联数据并不存在,请刷新后重试!"), - INVALID_DATA_MODEL("数据验证失败,无效的数据实体对象!"), - INVALID_DATA_FIELD("数据验证失败,无效的数据实体对象字段!"), - INVALID_CLASS_FIELD("数据验证失败,无效的类对象字段!"), - SERVER_INTERNAL_ERROR("服务器内部错误,请联系管理员!"), - REDIS_CACHE_ACCESS_TIMEOUT("Redis缓存数据访问超时,请刷新后重试!"), - REDIS_CACHE_ACCESS_STATE_ERROR("Redis缓存数据访问状态错误,请刷新后重试!"); - - // 下面的枚举值为特定枚举值,即开发者可以根据自己的项目需求定义更多的非通用枚举值 - - /** - * 构造函数。 - * - * @param errorMessage 错误消息。 - */ - ErrorCodeEnum(String errorMessage) { - this.errorMessage = errorMessage; - } - - /** - * 错误信息。 - */ - private final String errorMessage; - - /** - * 获取错误信息。 - * - * @return 错误信息。 - */ - public String getErrorMessage() { - return errorMessage; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/GlobalDeletedFlag.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/GlobalDeletedFlag.java deleted file mode 100644 index 4d9f9bb8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/constant/GlobalDeletedFlag.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.orangeforms.common.core.constant; - -/** - * 数据记录逻辑删除标记常量。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class GlobalDeletedFlag { - - /** - * 表示数据表记录已经删除 - */ - public static final int DELETED = -1; - /** - * 数据记录正常 - */ - public static final int NORMAL = 1; - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private GlobalDeletedFlag() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/DataValidationException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/DataValidationException.java deleted file mode 100644 index 30c146b6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/DataValidationException.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.orangeforms.common.core.exception; - -/** - * 数据验证失败的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class DataValidationException extends RuntimeException { - - /** - * 构造函数。 - */ - public DataValidationException() { - - } - - /** - * 构造函数。 - * - * @param msg 错误信息。 - */ - public DataValidationException(String msg) { - super(msg); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidClassFieldException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidClassFieldException.java deleted file mode 100644 index aa9697bb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidClassFieldException.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.orangeforms.common.core.exception; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 无效的类对象字段的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class InvalidClassFieldException extends RuntimeException { - - private final String className; - private final String fieldName; - - /** - * 构造函数。 - * - * @param className 对象名。 - * @param fieldName 字段名。 - */ - public InvalidClassFieldException(String className, String fieldName) { - super("Invalid FieldName [" + fieldName + "] in Class [" + className + "]."); - this.className = className; - this.fieldName = fieldName; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataFieldException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataFieldException.java deleted file mode 100644 index dc956639..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataFieldException.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.orangeforms.common.core.exception; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 无效的实体对象字段的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class InvalidDataFieldException extends RuntimeException { - - private final String modelName; - private final String fieldName; - - /** - * 构造函数。 - * - * @param modelName 实体对象名。 - * @param fieldName 字段名。 - */ - public InvalidDataFieldException(String modelName, String fieldName) { - super("Invalid FieldName [" + fieldName + "] in Model Class [" + modelName + "]."); - this.modelName = modelName; - this.fieldName = fieldName; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataModelException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataModelException.java deleted file mode 100644 index aa94823b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidDataModelException.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.common.core.exception; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 无效的实体对象的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class InvalidDataModelException extends RuntimeException { - - private final String modelName; - - /** - * 构造函数。 - * - * @param modelName 实体对象名。 - */ - public InvalidDataModelException(String modelName) { - super("Invalid Model Class [" + modelName + "]."); - this.modelName = modelName; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidRedisModeException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidRedisModeException.java deleted file mode 100644 index a0b0189e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/InvalidRedisModeException.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.common.core.exception; - -import lombok.Data; -import lombok.EqualsAndHashCode; - -/** - * 无效的Redis模式的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@EqualsAndHashCode(callSuper = true) -public class InvalidRedisModeException extends RuntimeException { - - private final String mode; - - /** - * 构造函数。 - * - * @param mode 错误的模式。 - */ - public InvalidRedisModeException(String mode) { - super("Invalid Redis Mode [" + mode + "], only supports [single/cluster/sentinel/master_slave]"); - this.mode = mode; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MapCacheAccessException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MapCacheAccessException.java deleted file mode 100644 index 80e9c982..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MapCacheAccessException.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.orangeforms.common.core.exception; - -/** - * 内存缓存访问失败。比如:获取分布式数据锁超时、等待线程中断等。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MapCacheAccessException extends RuntimeException { - - /** - * 构造函数。 - * - * @param msg 错误信息。 - * @param cause 原始异常。 - */ - public MapCacheAccessException(String msg, Throwable cause) { - super(msg, cause); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MyRuntimeException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MyRuntimeException.java deleted file mode 100644 index fbb38e86..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/MyRuntimeException.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.orangeforms.common.core.exception; - -/** - * 自定义的运行时异常,在需要抛出运行时异常时,可使用该异常。 - * NOTE:主要是为了避免SonarQube进行代码质量扫描时,给出警告。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MyRuntimeException extends RuntimeException { - - /** - * 构造函数。 - */ - public MyRuntimeException() { - - } - - /** - * 构造函数。 - * - * @param throwable 引发异常对象。 - */ - public MyRuntimeException(Throwable throwable) { - super(throwable); - } - - /** - * 构造函数。 - * - * @param msg 错误信息。 - */ - public MyRuntimeException(String msg) { - super(msg); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataAffectException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataAffectException.java deleted file mode 100644 index ed40dde0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataAffectException.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.orangeforms.common.core.exception; - -/** - * 没有数据被修改的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class NoDataAffectException extends RuntimeException { - - /** - * 构造函数。 - */ - public NoDataAffectException() { - - } - - /** - * 构造函数。 - * - * @param msg 错误信息。 - */ - public NoDataAffectException(String msg) { - super(msg); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataPermException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataPermException.java deleted file mode 100644 index c758eb4c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/NoDataPermException.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.orangeforms.common.core.exception; - -/** - * 没有数据访问权限的自定义异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class NoDataPermException extends RuntimeException { - - /** - * 构造函数。 - */ - public NoDataPermException() { - - } - - /** - * 构造函数。 - * - * @param msg 错误信息。 - */ - public NoDataPermException(String msg) { - super(msg); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/RedisCacheAccessException.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/RedisCacheAccessException.java deleted file mode 100644 index 6d21a617..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/exception/RedisCacheAccessException.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.orangeforms.common.core.exception; - -/** - * Redis缓存访问失败。比如:获取分布式数据锁超时、等待线程中断等。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class RedisCacheAccessException extends RuntimeException { - - /** - * 构造函数。 - * - * @param msg 错误信息。 - * @param cause 原始异常。 - */ - public RedisCacheAccessException(String msg, Throwable cause) { - super(msg, cause); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/interceptor/MyRequestArgumentResolver.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/interceptor/MyRequestArgumentResolver.java deleted file mode 100644 index 7351dd33..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/interceptor/MyRequestArgumentResolver.java +++ /dev/null @@ -1,234 +0,0 @@ -package com.orangeforms.common.core.interceptor; - -import cn.hutool.core.convert.Convert; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.orangeforms.common.core.annotation.MyRequestBody; -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.core.MethodParameter; -import org.springframework.http.HttpMethod; -import org.springframework.http.MediaType; -import org.springframework.lang.NonNull; -import org.springframework.web.bind.support.WebDataBinderFactory; -import org.springframework.web.context.request.NativeWebRequest; -import org.springframework.web.context.request.RequestAttributes; -import org.springframework.web.method.support.HandlerMethodArgumentResolver; -import org.springframework.web.method.support.ModelAndViewContainer; - -import javax.servlet.http.HttpServletRequest; -import java.io.IOException; -import java.lang.reflect.ParameterizedType; -import java.math.BigDecimal; -import java.util.*; - -/** - * MyRequestBody解析器 - * 解决的问题: - * 1、单个字符串等包装类型都要写一个对象才可以用@RequestBody接收; - * 2、多个对象需要封装到一个对象里才可以用@RequestBody接收。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MyRequestArgumentResolver implements HandlerMethodArgumentResolver { - - private static final String JSONBODY_ATTRIBUTE = "MY_REQUEST_BODY_ATTRIBUTE_XX"; - - private static final Set> CLASS_SET = new HashSet<>(); - - static { - CLASS_SET.add(Integer.class); - CLASS_SET.add(Long.class); - CLASS_SET.add(Short.class); - CLASS_SET.add(Float.class); - CLASS_SET.add(Double.class); - CLASS_SET.add(Boolean.class); - CLASS_SET.add(Byte.class); - CLASS_SET.add(BigDecimal.class); - CLASS_SET.add(Character.class); - } - - /** - * 设置支持的方法参数类型。 - * - * @param parameter 方法参数。 - * @return 支持的类型。 - */ - @Override - public boolean supportsParameter(@NonNull MethodParameter parameter) { - return parameter.hasParameterAnnotation(MyRequestBody.class); - } - - /** - * 参数解析,利用fastjson。 - * 注意:非基本类型返回null会报空指针异常,要通过反射或者JSON工具类创建一个空对象。 - */ - @Override - public Object resolveArgument( - @NonNull MethodParameter parameter, - ModelAndViewContainer mavContainer, - @NonNull NativeWebRequest webRequest, - WebDataBinderFactory binderFactory) throws Exception { - HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class); - String contentType = servletRequest.getContentType(); - if (!HttpMethod.POST.name().equals(servletRequest.getMethod())) { - throw new IllegalArgumentException("Only POST method can be applied @MyRequestBody annotation!"); - } - if (!StringUtils.containsIgnoreCase(contentType, MediaType.APPLICATION_JSON_VALUE)) { - throw new IllegalArgumentException( - "Only application/json Content-Type can be applied @MyRequestBody annotation!"); - } - // 根据@MyRequestBody注解value作为json解析的key - MyRequestBody parameterAnnotation = parameter.getParameterAnnotation(MyRequestBody.class); - JSONObject jsonObject = getRequestBody(webRequest); - if (jsonObject == null) { - if (parameterAnnotation.required()) { - throw new IllegalArgumentException("Request Body is EMPTY!"); - } - return null; - } - String key = parameterAnnotation.value(); - if (StringUtils.isBlank(key)) { - key = parameter.getParameterName(); - } - Object value = jsonObject.get(key); - if (value == null) { - if (parameterAnnotation.required()) { - throw new IllegalArgumentException(String.format("Required parameter %s is not present!", key)); - } - return null; - } - // 获取参数类型。 - Class parameterType = parameter.getParameterType(); - // 基本类型 - if (parameterType.isPrimitive()) { - return parsePrimitive(parameterType.getName(), value); - } - // 基本类型包装类 - if (isBasicDataTypes(parameterType)) { - return parseBasicTypeWrapper(parameterType, value); - } else if (parameterType == String.class) { - // 字符串类型 - return value.toString(); - } - // 数组类型 - if (value instanceof JSONArray) { - return parseArray(parameterType, parameterAnnotation.elementType(), key, value); - } - // 其他复杂对象 - return JSON.toJavaObject((JSONObject) value, parameterType); - } - - @SuppressWarnings("unchecked") - private Object parseArray(Class parameterType, Class elementType, String key, Object value) - throws IllegalAccessException, InstantiationException { - Object o; - if (!parameterType.equals(List.class)) { - o = parameterType.newInstance(); - parameterType = (Class) ((ParameterizedType) - parameterType.getGenericSuperclass()).getActualTypeArguments()[0]; - } else { - parameterType = elementType; - if (parameterType.equals(Class.class)) { - throw new IllegalArgumentException( - String.format("List Type parameter %s MUST have elementType!", key)); - } - o = new LinkedList<>(); - } - if (!(o instanceof List)) { - throw new IllegalArgumentException(String.format("Required parameter %s is List!", key)); - } - ((List) o).addAll(((JSONArray) value).toJavaList(parameterType)); - return o; - } - - private Object parsePrimitive(String parameterTypeName, Object value) { - final String booleanTypeName = "boolean"; - if (booleanTypeName.equals(parameterTypeName)) { - return Boolean.valueOf(value.toString()); - } - final String intTypeName = "int"; - if (intTypeName.equals(parameterTypeName)) { - return Integer.valueOf(value.toString()); - } - final String charTypeName = "char"; - if (charTypeName.equals(parameterTypeName)) { - return value.toString().charAt(0); - } - final String shortTypeName = "short"; - if (shortTypeName.equals(parameterTypeName)) { - return Short.valueOf(value.toString()); - } - final String longTypeName = "long"; - if (longTypeName.equals(parameterTypeName)) { - return Long.valueOf(value.toString()); - } - final String floatTypeName = "float"; - if (floatTypeName.equals(parameterTypeName)) { - return Float.valueOf(value.toString()); - } - final String doubleTypeName = "double"; - if (doubleTypeName.equals(parameterTypeName)) { - return Double.valueOf(value.toString()); - } - final String byteTypeName = "byte"; - if (byteTypeName.equals(parameterTypeName)) { - return Byte.valueOf(value.toString()); - } - return null; - } - - private Object parseBasicTypeWrapper(Class parameterType, Object value) { - if (Number.class.isAssignableFrom(parameterType)) { - if (value instanceof String) { - return Convert.convert(parameterType, value); - } - Number number = (Number) value; - if (parameterType == Integer.class) { - return number.intValue(); - } else if (parameterType == Short.class) { - return number.shortValue(); - } else if (parameterType == Long.class) { - return number.longValue(); - } else if (parameterType == Float.class) { - return number.floatValue(); - } else if (parameterType == Double.class) { - return number.doubleValue(); - } else if (parameterType == Byte.class) { - return number.byteValue(); - } else if (parameterType == BigDecimal.class) { - if (value instanceof Double || value instanceof Float) { - return BigDecimal.valueOf(number.doubleValue()); - } else { - return BigDecimal.valueOf(number.longValue()); - } - } - } else if (parameterType == Boolean.class) { - return value; - } else if (parameterType == Character.class) { - return value.toString().charAt(0); - } - return null; - } - - private boolean isBasicDataTypes(Class clazz) { - return CLASS_SET.contains(clazz); - } - - private JSONObject getRequestBody(NativeWebRequest webRequest) throws IOException { - HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class); - // 有就直接获取 - JSONObject jsonObject = (JSONObject) webRequest.getAttribute(JSONBODY_ATTRIBUTE, RequestAttributes.SCOPE_REQUEST); - // 没有就从请求中读取 - if (jsonObject == null) { - String jsonBody = IOUtils.toString(servletRequest.getReader()); - jsonObject = JSON.parseObject(jsonBody); - if (jsonObject != null) { - webRequest.setAttribute(JSONBODY_ATTRIBUTE, jsonObject, RequestAttributes.SCOPE_REQUEST); - } - } - return jsonObject; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/listener/LoadServiceRelationListener.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/listener/LoadServiceRelationListener.java deleted file mode 100644 index 80c95921..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/listener/LoadServiceRelationListener.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.common.core.listener; - -import com.orangeforms.common.core.base.service.BaseService; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -import java.util.Map; - -/** - * 应用程序启动后的事件监听对象。主要负责加载Model之间的字典关联和一对一关联所对应的Service结构关系。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Component -public class LoadServiceRelationListener implements ApplicationListener { - - @SuppressWarnings("all") - @Override - public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { - Map serviceMap = - applicationReadyEvent.getApplicationContext().getBeansOfType(BaseService.class); - for (Map.Entry e : serviceMap.entrySet()) { - e.getValue().loadRelationStruct(); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/CallResult.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/CallResult.java deleted file mode 100644 index 160958f6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/CallResult.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.orangeforms.common.core.object; - -import com.alibaba.fastjson.JSONObject; -import lombok.Data; - -/** - * 接口数据验证结果对象。主要是Service类使用。 - * 同时为了提升效率,减少查询次数,可以根据具体的需求,将部分验证关联对象存入data字段,以供Controller使用。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -public class CallResult { - - /** - * 为了优化性能,所有没有携带数据的正确结果,均可用该对象表示。 - */ - private static final CallResult OK = new CallResult(); - /** - * 是否成功标记。 - */ - private boolean success = true; - /** - * 错误信息描述。 - */ - private String errorMessage = null; - /** - * 在验证同时,仍然需要附加的关联数据对象。 - */ - private JSONObject data; - - /** - * 创建验证结果对象。 - * - * @param errorMessage 错误描述信息。 - * @return 如果参数为空,表示成功,否则返回代码错误信息的错误对象实例。 - */ - public static CallResult create(String errorMessage) { - return errorMessage == null ? ok() : error(errorMessage); - } - - /** - * 创建验证结果对象。 - * - * @param errorMessage 错误描述信息。 - * @param data 附带的数据对象。 - * @return 如果参数为空,表示成功,否则返回代码错误信息的错误对象实例。 - */ - public static CallResult create(String errorMessage, JSONObject data) { - return errorMessage == null ? ok(data) : error(errorMessage); - } - - /** - * 创建表示验证成功的对象实例。 - * - * @return 验证成功对象实例。 - */ - public static CallResult ok() { - return OK; - } - - /** - * 创建表示验证成功的对象实例。 - * - * @param data 附带的数据对象。 - * @return 验证成功对象实例。 - */ - public static CallResult ok(JSONObject data) { - CallResult result = new CallResult(); - result.data = data; - return result; - } - - /** - * 创建表示验证失败的对象实例。 - * - * @param errorMessage 错误描述。 - * @return 验证失败对象实例。 - */ - public static CallResult error(String errorMessage) { - CallResult result = new CallResult(); - result.success = false; - result.errorMessage = errorMessage; - return result; - } - - /** - * 创建表示验证失败的对象实例。 - * - * @param errorMessage 错误描述。 - * @param data 附带的数据对象。 - * @return 验证失败对象实例。 - */ - public static CallResult error(String errorMessage, T data) { - CallResult result = new CallResult(); - result.success = false; - result.errorMessage = errorMessage; - JSONObject jsonObject = new JSONObject(); - jsonObject.put("errorData", data); - result.data = jsonObject; - return result; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/DummyClass.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/DummyClass.java deleted file mode 100644 index ba358a88..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/DummyClass.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.common.core.object; - -/** - * 哑元对象,主要用于注解中的缺省对象占位符。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class DummyClass { - - private static final Object EMPTY_OBJECT = new Object(); - - /** - * 可以忽略的空对象。避免sonarqube的各种警告。 - * - * @return 空对象。 - */ - public static Object emptyObject() { - return EMPTY_OBJECT; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private DummyClass() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/GlobalThreadLocal.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/GlobalThreadLocal.java deleted file mode 100644 index aebce2ac..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/GlobalThreadLocal.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.orangeforms.common.core.object; - -import cn.hutool.core.util.BooleanUtil; - -/** - * 线程本地化数据管理的工具类。可根据需求自行添加更多的线程本地化变量及其操作方法。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class GlobalThreadLocal { - - /** - * 存储数据权限过滤是否启用的线程本地化对象。 - * 目前的过滤条件,包括数据权限和租户过滤。 - */ - private static final ThreadLocal DATA_FILTER_ENABLE = ThreadLocal.withInitial(() -> Boolean.TRUE); - - /** - * 设置数据过滤是否打开。如果打开,当前Servlet线程所执行的SQL操作,均会进行数据过滤。 - * - * @param enable 打开为true,否则false。 - * @return 返回之前的状态,便于恢复。 - */ - public static boolean setDataFilter(boolean enable) { - boolean oldValue = DATA_FILTER_ENABLE.get(); - DATA_FILTER_ENABLE.set(enable); - return oldValue; - } - - /** - * 判断当前Servlet线程所执行的SQL操作,是否进行数据过滤。 - * - * @return true 进行数据权限过滤,否则false。 - */ - public static boolean enabledDataFilter() { - return BooleanUtil.isTrue(DATA_FILTER_ENABLE.get()); - } - - /** - * 清空该存储数据,主动释放线程本地化存储资源。 - */ - public static void clearDataFilter() { - DATA_FILTER_ENABLE.remove(); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private GlobalThreadLocal() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/LoginUserInfo.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/LoginUserInfo.java deleted file mode 100644 index 1e392568..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/LoginUserInfo.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.orangeforms.common.core.object; - -import lombok.Data; -import lombok.ToString; -import lombok.extern.slf4j.Slf4j; - -import java.util.Date; - -/** - * 在线登录用户信息。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ToString -@Slf4j -public class LoginUserInfo { - - /** - * 用户Id。 - */ - private Long userId; - /** - * 用户所在部门Id。 - * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 - */ - private Long deptId; - /** - * 租户Id。 - * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 - */ - private Long tenantId; - /** - * 是否为超级管理员。 - */ - private Boolean isAdmin; - /** - * 用户登录名。 - */ - private String loginName; - /** - * 用户显示名称。 - */ - private String showName; - /** - * 标识不同登录的会话Id。 - */ - private String sessionId; - /** - * 登录IP。 - */ - private String loginIp; - /** - * 登录时间。 - */ - private Date loginTime; - /** - * 登录设备类型。 - */ - private Integer deviceType; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupCriteria.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupCriteria.java deleted file mode 100644 index 782adda9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupCriteria.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.orangeforms.common.core.object; - -import lombok.AllArgsConstructor; -import lombok.Data; - -/** - * Mybatis Mapper.xml中所需的分组条件对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@AllArgsConstructor -public class MyGroupCriteria { - - /** - * GROUP BY 从句后面的参数。 - */ - private String groupBy; - /** - * SELECT 从句后面的分组显示字段。 - */ - private String groupSelect; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupParam.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupParam.java deleted file mode 100644 index 16fa373e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyGroupParam.java +++ /dev/null @@ -1,194 +0,0 @@ -package com.orangeforms.common.core.object; - -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; -import com.orangeforms.common.core.config.CoreProperties; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.exception.InvalidClassFieldException; -import com.orangeforms.common.core.exception.InvalidDataFieldException; -import com.orangeforms.common.core.exception.InvalidDataModelException; -import com.orangeforms.common.core.util.ApplicationContextHolder; -import com.orangeforms.common.core.util.MyModelUtil; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.extern.slf4j.Slf4j; - -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; - -/** - * 查询分组参数请求对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@EqualsAndHashCode(callSuper = true) -@Slf4j -@Data -public class MyGroupParam extends ArrayList { - - private final CoreProperties coreProperties = - ApplicationContextHolder.getBean(CoreProperties.class); - - /** - * SQL语句的SELECT LIST中,分组字段的返回字段名称列表。 - */ - private List selectGroupFieldList; - /** - * 分组参数解析后构建的SQL语句中所需的分组数据,如GROUP BY的字段列表和SELECT LIST中的分组字段显示列表。 - */ - private MyGroupCriteria groupCriteria; - /** - * 基于分组参数对象中的数据,构建SQL中select list和group by从句可以直接使用的分组对象。 - * - * @param groupParam 分组参数对象。 - * @param modelClazz 查询表对应的主对象的Class。 - * @return SQL中所需的GROUP对象。详见MyGroupCriteria类定义。 - */ - public static MyGroupParam buildGroupBy(MyGroupParam groupParam, Class modelClazz) { - if (groupParam == null) { - return null; - } - if (modelClazz == null) { - throw new IllegalArgumentException("modelClazz Argument can't be NULL"); - } - groupParam.selectGroupFieldList = new LinkedList<>(); - StringBuilder groupByBuilder = new StringBuilder(128); - StringBuilder groupSelectBuilder = new StringBuilder(128); - int i = 0; - for (GroupInfo groupInfo : groupParam) { - GroupBaseData groupBaseData = groupParam.parseGroupBaseData(groupInfo, modelClazz); - if (StrUtil.isBlank(groupBaseData.tableName)) { - throw new InvalidDataModelException(groupBaseData.modelName); - } - if (StrUtil.isBlank(groupBaseData.columnName)) { - throw new InvalidDataFieldException(groupBaseData.modelName, groupBaseData.fieldName); - } - groupParam.processGroupInfo(groupInfo, groupBaseData, groupByBuilder, groupSelectBuilder); - String aliasName = StrUtil.isBlank(groupInfo.aliasName) ? groupInfo.fieldName : groupInfo.aliasName; - // selectGroupFieldList中的元素,目前只是被export操作使用。会根据集合中的元素名称匹配导出表头。 - groupParam.selectGroupFieldList.add(aliasName); - if (++i < groupParam.size()) { - groupByBuilder.append(", "); - groupSelectBuilder.append(", "); - } - } - groupParam.groupCriteria = new MyGroupCriteria(groupByBuilder.toString(), groupSelectBuilder.toString()); - return groupParam; - } - - private GroupBaseData parseGroupBaseData(GroupInfo groupInfo, Class modelClazz) { - GroupBaseData baseData = new GroupBaseData(); - if (StrUtil.isBlank(groupInfo.fieldName)) { - throw new IllegalArgumentException("GroupInfo.fieldName can't be EMPTY"); - } - String[] stringArray = StrUtil.splitToArray(groupInfo.fieldName, '.'); - if (stringArray.length == 1) { - baseData.modelName = modelClazz.getSimpleName(); - baseData.fieldName = groupInfo.fieldName; - baseData.tableName = MyModelUtil.mapToTableName(modelClazz); - baseData.columnName = MyModelUtil.mapToColumnName(groupInfo.fieldName, modelClazz); - } else { - Field field = ReflectUtil.getField(modelClazz, stringArray[0]); - if (field == null) { - throw new InvalidClassFieldException(modelClazz.getSimpleName(), stringArray[0]); - } - Class fieldClazz = field.getType(); - baseData.modelName = fieldClazz.getSimpleName(); - baseData.fieldName = stringArray[1]; - baseData.tableName = MyModelUtil.mapToTableName(fieldClazz); - baseData.columnName = MyModelUtil.mapToColumnName(baseData.fieldName, fieldClazz); - } - return baseData; - } - - private void processGroupInfo( - GroupInfo groupInfo, - GroupBaseData baseData, - StringBuilder groupByBuilder, - StringBuilder groupSelectBuilder) { - String tableName = baseData.tableName; - String columnName = baseData.columnName; - if (StrUtil.isNotBlank(groupInfo.dateAggregateBy)) { - if (coreProperties.isMySql()) { - groupByBuilder.append("DATE_FORMAT(").append(tableName).append(".").append(columnName); - groupSelectBuilder.append("DATE_FORMAT(").append(tableName).append(".").append(columnName); - if (ApplicationConstant.DAY_AGGREGATION.equals(groupInfo.dateAggregateBy)) { - groupByBuilder.append(", '%Y-%m-%d')"); - groupSelectBuilder.append(", '%Y-%m-%d')"); - } else if (ApplicationConstant.MONTH_AGGREGATION.equals(groupInfo.dateAggregateBy)) { - groupByBuilder.append(", '%Y-%m-01')"); - groupSelectBuilder.append(", '%Y-%m-01')"); - } else if (ApplicationConstant.YEAR_AGGREGATION.equals(groupInfo.dateAggregateBy)) { - groupByBuilder.append(", '%Y-01-01')"); - groupSelectBuilder.append(", '%Y-01-01')"); - } else { - throw new IllegalArgumentException("Illegal DATE_FORMAT for GROUP ID list."); - } - } else if (coreProperties.isPostgresql()) { - groupByBuilder.append("TO_CHAR(").append(tableName).append(".").append(columnName); - groupSelectBuilder.append("TO_CHAR(").append(tableName).append(".").append(columnName); - if (ApplicationConstant.DAY_AGGREGATION.equals(groupInfo.dateAggregateBy)) { - groupByBuilder.append(", ''YYYY-MM-dd'')"); - groupSelectBuilder.append(", 'YYYY-MM-dd'')"); - } else if (ApplicationConstant.MONTH_AGGREGATION.equals(groupInfo.dateAggregateBy)) { - groupByBuilder.append(", 'YYYY-MM-01')"); - groupSelectBuilder.append(", 'YYYY-MM-01')"); - } else if (ApplicationConstant.YEAR_AGGREGATION.equals(groupInfo.dateAggregateBy)) { - groupByBuilder.append(", 'YYYY-01-01')"); - groupSelectBuilder.append(", 'YYYY-01-01')"); - } else { - throw new IllegalArgumentException("Illegal TO_CHAR for GROUP ID list."); - } - } else { - throw new UnsupportedOperationException("Unsupport Database Type."); - } - if (StrUtil.isNotBlank(groupInfo.aliasName)) { - groupSelectBuilder.append(" ").append(groupInfo.aliasName); - } else { - groupSelectBuilder.append(" ").append(columnName); - } - } else { - groupByBuilder.append(tableName).append(".").append(columnName); - groupSelectBuilder.append(tableName).append(".").append(columnName); - if (StrUtil.isNotBlank(groupInfo.aliasName)) { - groupSelectBuilder.append(" ").append(groupInfo.aliasName); - } - } - } - - /** - * 分组信息对象。 - */ - @Data - public static class GroupInfo { - /** - * Java对象的字段名。目前主要包含三种格式: - * 1. 简单的属性名称,如userId,将会直接映射到与其关联的数据库字段。表名为当前ModelClazz所对应的表名。 - * 映射结果或为 my_main_table.user_id - * 2. 一对一关联表属性,如user.userId,这里将先获取user属性的对象类型并映射到对应的表名,后面的userId为 - * user所在实体的属性。映射结果或为:my_sys_user.user_id - */ - private String fieldName; - /** - * SQL语句的Select List中,分组字段的别名。如果别名为NULL,直接取fieldName。 - */ - private String aliasName; - /** - * 如果该值不为NULL,则会对分组字段进行DATE_FORMAT函数的计算,并根据具体的值,将日期数据截取到指定的位。 - * day: 表示按照天聚合,将会截取到天。DATE_FORMAT(columnName, '%Y-%m-%d') - * month: 表示按照月聚合,将会截取到月。DATE_FORMAT(columnName, '%Y-%m-01') - * year: 表示按照年聚合,将会截取到年。DATE_FORMAT(columnName, '%Y-01-01') - */ - private String dateAggregateBy; - } - - private static class GroupBaseData { - private String modelName; - private String fieldName; - private String tableName; - private String columnName; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyOrderParam.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyOrderParam.java deleted file mode 100644 index 5b0e551e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyOrderParam.java +++ /dev/null @@ -1,265 +0,0 @@ -package com.orangeforms.common.core.object; - -import cn.hutool.core.util.ReflectUtil; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.exception.InvalidClassFieldException; -import com.orangeforms.common.core.exception.InvalidDataFieldException; -import com.orangeforms.common.core.exception.InvalidDataModelException; -import com.orangeforms.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; - -import java.lang.reflect.Field; -import java.util.*; - -/** - * Controller参数中的排序请求对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@EqualsAndHashCode(callSuper = true) -@Slf4j -@Data -public class MyOrderParam extends ArrayList { - - private static final String DICT_MAP = "DictMap."; - /** - * 基于排序对象中的JSON数据,构建SQL中order by从句可以直接使用的排序字符串。 - * - * @param orderParam 排序参数对象。 - * @param modelClazz 查询主表对应的主对象的Class。 - * @return SQL中order by从句可以直接使用的排序字符串。 - */ - public static String buildOrderBy(MyOrderParam orderParam, Class modelClazz) { - if (orderParam == null) { - return null; - } - if (modelClazz == null) { - throw new IllegalArgumentException( - "modelClazz Argument in MyOrderParam.buildOrderBy can't be NULL"); - } - int i = 0; - StringBuilder orderBy = new StringBuilder(128); - for (OrderInfo orderInfo : orderParam) { - if (StringUtils.isBlank(orderInfo.getFieldName())) { - continue; - } - OrderBaseData orderBaseData = parseOrderBaseData(orderInfo, modelClazz); - if (StringUtils.isBlank(orderBaseData.tableName)) { - throw new InvalidDataModelException(orderBaseData.modelName); - } - if (StringUtils.isBlank(orderBaseData.columnName)) { - throw new InvalidDataFieldException(orderBaseData.modelName, orderBaseData.fieldName); - } - processOrderInfo(orderInfo, orderBaseData, orderBy); - if (++i < orderParam.size()) { - orderBy.append(", "); - } - } - return orderBy.toString(); - } - - private static void processOrderInfo( - OrderInfo orderInfo, OrderBaseData orderBaseData, StringBuilder orderByBuilder) { - if (StringUtils.isNotBlank(orderInfo.dateAggregateBy)) { - orderByBuilder.append("DATE_FORMAT(") - .append(orderBaseData.tableName).append(".").append(orderBaseData.columnName); - if (ApplicationConstant.DAY_AGGREGATION.equals(orderInfo.dateAggregateBy)) { - orderByBuilder.append(", '%Y-%m-%d')"); - } else if (ApplicationConstant.MONTH_AGGREGATION.equals(orderInfo.dateAggregateBy)) { - orderByBuilder.append(", '%Y-%m-01')"); - } else if (ApplicationConstant.YEAR_AGGREGATION.equals(orderInfo.dateAggregateBy)) { - orderByBuilder.append(", '%Y-01-01')"); - } else { - throw new IllegalArgumentException("Illegal DATE_FORMAT for GROUP ID list."); - } - } else { - orderByBuilder.append(orderBaseData.tableName).append(".").append(orderBaseData.columnName); - } - if (orderInfo.asc != null && !orderInfo.asc) { - orderByBuilder.append(" DESC"); - } - } - - private static OrderBaseData parseOrderBaseData(OrderInfo orderInfo, Class modelClazz) { - OrderBaseData orderBaseData = new OrderBaseData(); - orderBaseData.fieldName = StringUtils.substringBefore(orderInfo.fieldName, DICT_MAP); - String[] stringArray = StringUtils.split(orderBaseData.fieldName, '.'); - if (stringArray.length == 1) { - orderBaseData.modelName = modelClazz.getSimpleName(); - orderBaseData.tableName = MyModelUtil.mapToTableName(modelClazz); - orderBaseData.columnName = MyModelUtil.mapToColumnName(orderBaseData.fieldName, modelClazz); - } else { - Field field = ReflectUtil.getField(modelClazz, stringArray[0]); - if (field == null) { - throw new InvalidClassFieldException(modelClazz.getSimpleName(), stringArray[0]); - } - Class fieldClazz = field.getType(); - orderBaseData.modelName = fieldClazz.getSimpleName(); - orderBaseData.fieldName = stringArray[1]; - orderBaseData.tableName = MyModelUtil.mapToTableName(fieldClazz); - orderBaseData.columnName = MyModelUtil.mapToColumnName(orderBaseData.fieldName, fieldClazz); - } - return orderBaseData; - } - - /** - * 在排序列表中,可能存在基于指定表字段的排序,该函数将获取指定表的所有排序字段。 - * 返回的字符串,可直接用于SQL中的ORDER BY从句。 - * - * @param orderParam 排序参数对象。 - * @param modelClazz 查询主表对应的主对象的Class。 - * @param relationModelName 与关联表对应的Model的名称,如my_course_paper表应对的Java对象CoursePaper。 - * 如果该值为null或空字符串,则获取所有主表的排序字段。 - * @return 返回的是表字段,而非Java对象的属性,多个字段之间逗号分隔。 - */ - public static String getOrderClauseByModelName( - MyOrderParam orderParam, Class modelClazz, String relationModelName) { - if (orderParam == null) { - return null; - } - if (modelClazz == null) { - throw new IllegalArgumentException( - "modelClazz Argument in MyOrderParam.getOrderClauseByModelName can't be NULL"); - } - List fieldNameList = new LinkedList<>(); - String prefix = null; - if (StringUtils.isNotBlank(relationModelName)) { - prefix = relationModelName + "."; - } - for (OrderInfo orderInfo : orderParam) { - OrderBaseData baseData = parseOrderBaseData(orderInfo, modelClazz, prefix, relationModelName); - if (baseData != null) { - fieldNameList.add(makeOrderBy(baseData, orderInfo.asc)); - } - } - return StringUtils.join(fieldNameList, ", "); - } - - private static OrderBaseData parseOrderBaseData( - OrderInfo orderInfo, Class modelClazz, String prefix, String relationModelName) { - OrderBaseData baseData = null; - String fieldName = StringUtils.substringBefore(orderInfo.fieldName, DICT_MAP); - if (prefix != null) { - if (fieldName.startsWith(prefix)) { - baseData = new OrderBaseData(); - Field field = ReflectUtil.getField(modelClazz, relationModelName); - if (field == null) { - throw new InvalidClassFieldException(modelClazz.getSimpleName(), relationModelName); - } - Class fieldClazz = field.getType(); - baseData.modelName = fieldClazz.getSimpleName(); - baseData.fieldName = StringUtils.removeStart(fieldName, prefix); - baseData.tableName = MyModelUtil.mapToTableName(fieldClazz); - baseData.columnName = MyModelUtil.mapToColumnName(fieldName, fieldClazz); - } - } else { - String dotLimitor = "."; - if (!fieldName.contains(dotLimitor)) { - baseData = new OrderBaseData(); - baseData.modelName = modelClazz.getSimpleName(); - baseData.tableName = MyModelUtil.mapToTableName(modelClazz); - baseData.columnName = MyModelUtil.mapToColumnName(fieldName, modelClazz); - } - } - return baseData; - } - - private static String makeOrderBy(OrderBaseData baseData, Boolean asc) { - if (StringUtils.isBlank(baseData.tableName)) { - throw new InvalidDataModelException(baseData.modelName); - } - if (StringUtils.isBlank(baseData.columnName)) { - throw new InvalidDataFieldException(baseData.modelName, baseData.fieldName); - } - StringBuilder orderBy = new StringBuilder(128); - orderBy.append(baseData.tableName).append(".").append(baseData.columnName); - if (asc != null && !asc) { - orderBy.append(" DESC"); - } - return orderBy.toString(); - } - - /** - * 在排序列表中,可能存在基于指定表字段的排序,该函数将删除指定表的所有排序字段。 - * - * @param orderParam 排序参数对象。 - * @param modelClazz 查询主表对应的主对象的Class。 - * @param relationModelName 与关联表对应的Model的名称,如my_course_paper表应对的Java对象CoursePaper。 - * 如果该值为null或空字符串,则获取所有主表的排序字段。 - */ - public static void removeOrderClauseByModelName( - MyOrderParam orderParam, Class modelClazz, String relationModelName) { - if (orderParam == null) { - return; - } - if (modelClazz == null) { - throw new IllegalArgumentException( - "modelClazz Argument in MyOrderParam.removeOrderClauseByModelName can't be NULL"); - } - List fieldIndexList = new LinkedList<>(); - String prefix = null; - if (StringUtils.isNotBlank(relationModelName)) { - prefix = relationModelName + "."; - } - int i = 0; - for (OrderInfo orderInfo : orderParam) { - String fieldName = StringUtils.substringBefore(orderInfo.fieldName, DICT_MAP); - if (prefix != null) { - if (fieldName.startsWith(prefix)) { - fieldIndexList.add(i); - } - } else { - if (!fieldName.contains(".")) { - fieldIndexList.add(i); - } - } - ++i; - } - for (int index : fieldIndexList) { - orderParam.remove(index); - } - } - - /** - * 排序信息对象。 - */ - @AllArgsConstructor - @NoArgsConstructor - @Data - public static class OrderInfo { - /** - * Java对象的字段名。如果fieldName为空,则忽略跳过。目前主要包含三种格式: - * 1. 简单的属性名称,如userId,将会直接映射到与其关联的数据库字段。表名为当前ModelClazz所对应的表名。 - * 映射结果或为 my_main_table.user_id - * 2. 字典属性名称,如userIdDictMap.id,由于仅仅支持字典中Id数据的排序,所以直接截取DictMap之前的字符串userId作为排序属性。 - * 表名为当前ModelClazz所对应的表名。映射结果或为 my_main_table.user_id - * 3. 一对一关联表属性,如user.userId,这里将先获取user属性的对象类型并映射到对应的表名,后面的userId为 - * user所在实体的属性。映射结果或为:my_sys_user.user_id - */ - private String fieldName; - /** - * 排序方向。true为升序,否则降序。 - */ - private Boolean asc = true; - /** - * 如果该值不为NULL,则会对日期型排序字段进行DATE_FORMAT函数的计算,并根据具体的值,将日期数据截取到指定的位。 - * day: 表示按照天聚合,将会截取到天。DATE_FORMAT(columnName, '%Y-%m-%d') - * month: 表示按照月聚合,将会截取到月。DATE_FORMAT(columnName, '%Y-%m-01') - * year: 表示按照年聚合,将会截取到年。DATE_FORMAT(columnName, '%Y-01-01') - */ - private String dateAggregateBy; - } - - private static class OrderBaseData { - private String modelName; - private String fieldName; - private String tableName; - private String columnName; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageData.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageData.java deleted file mode 100644 index 1db7f67c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageData.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.orangeforms.common.core.object; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.LinkedList; -import java.util.List; - -/** - * 分页数据的应答返回对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class MyPageData { - /** - * 数据列表。 - */ - private List dataList; - /** - * 数据总数量。 - */ - private Long totalCount; - - /** - * 为了保持前端的数据格式兼容性,在没有数据的时候,需要返回空分页对象。 - * @return 空分页对象。 - */ - public static MyPageData emptyPageData() { - return new MyPageData<>(new LinkedList<>(), 0L); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageParam.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageParam.java deleted file mode 100644 index 0390e63a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyPageParam.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.orangeforms.common.core.object; - -import lombok.Getter; - -/** - * Controller参数中的分页请求对象 - * - * @author Jerry - * @date 2022-02-20 - */ -@Getter -public class MyPageParam { - - public static final int DEFAULT_PAGE_NUM = 1; - public static final int DEFAULT_PAGE_SIZE = 10; - public static final int DEFAULT_MAX_SIZE = 100; - - /** - * 分页号码,从1开始计数。 - */ - private Integer pageNum; - - /** - * 每页大小。 - */ - private Integer pageSize; - - /** - * 设置当前分页页号。 - * - * @param pageNum 页号,如果传入非法值,则使用缺省值。 - */ - public void setPageNum(Integer pageNum) { - if (pageNum == null) { - return; - } - if (pageNum <= 0) { - pageNum = DEFAULT_PAGE_NUM; - } - this.pageNum = pageNum; - } - - /** - * 设置分页的大小。 - * - * @param pageSize 分页大小,如果传入非法值,则使用缺省值。 - */ - public void setPageSize(Integer pageSize) { - if (pageSize == null) { - return; - } - if (pageSize <= 0 || pageSize > DEFAULT_MAX_SIZE) { - pageSize = DEFAULT_PAGE_SIZE; - } - this.pageSize = pageSize; - } - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyRelationParam.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyRelationParam.java deleted file mode 100644 index 150fc161..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyRelationParam.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.orangeforms.common.core.object; - -import lombok.Builder; -import lombok.Data; - -/** - * 实体对象数据组装参数构建器。 - * BaseService中的实体对象数据组装函数,会根据该参数对象进行数据组装。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@Builder -public class MyRelationParam { - - /** - * 是否组装字典关联的标记。 - * 组装RelationDict和RelationConstDict注解标记的字段。 - */ - private boolean buildDict; - - /** - * 是否组装一对一关联的标记。 - * 组装RelationOneToOne注解标记的字段。 - */ - private boolean buildOneToOne; - - /** - * 是否组装一对多关联的标记。 - * 组装RelationOneToMany注解标记的字段。 - */ - private boolean buildOneToMany; - - /** - * 在组装一对一关联的同时,是否继续关联从表中的字典。 - * 从表中RelationDict和RelationConstDict注解标记的字段。 - * 该字段为true时,无需设置buildOneToOne了。 - */ - private boolean buildOneToOneWithDict; - - /** - * 是否组装主表对多对多中间表关联的标记。 - * 组装RelationManyToMany注解标记的字段。 - */ - private boolean buildRelationManyToMany; - - /** - * 是否组装聚合计算关联的标记。 - * 组装RelationOneToManyAggregation和RelationManyToManyAggregation注解标记的字段。 - */ - private boolean buildRelationAggregation; - - /** - * 便捷方法,返回仅做字典关联的参数对象。 - * - * @return 返回仅做字典关联的参数对象。 - */ - public static MyRelationParam dictOnly() { - return MyRelationParam.builder().buildDict(true).build(); - } - - /** - * 便捷方法,返回仅做字典关联、一对一从表及其字典和聚合计算的参数对象。 - * NOTE: 对于一对多和多对多,这种从表数据是列表结果的关联,均不返回。 - * - * @return 返回仅做字典关联、一对一从表及其字典和聚合计算的参数对象。 - */ - public static MyRelationParam normal() { - return MyRelationParam.builder() - .buildDict(true) - .buildOneToOneWithDict(true) - .buildRelationAggregation(true) - .build(); - } - - /** - * 便捷方法,返回全部关联的参数对象。 - * - * @return 返回全部关联的参数对象。 - */ - public static MyRelationParam full() { - return MyRelationParam.builder() - .buildDict(true) - .buildOneToOneWithDict(true) - .buildRelationAggregation(true) - .buildRelationManyToMany(true) - .buildOneToMany(true) - .build(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyWhereCriteria.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyWhereCriteria.java deleted file mode 100644 index 91bbda95..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/MyWhereCriteria.java +++ /dev/null @@ -1,361 +0,0 @@ -package com.orangeforms.common.core.object; - -import cn.hutool.core.util.ReflectUtil; -import com.alibaba.fastjson.annotation.JSONField; -import com.orangeforms.common.core.exception.InvalidDataFieldException; -import com.orangeforms.common.core.exception.InvalidDataModelException; -import com.orangeforms.common.core.util.MyModelUtil; -import lombok.*; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.Collection; -import java.util.Date; -import java.util.List; - -/** - * Where中的条件语句。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Data -@NoArgsConstructor -public class MyWhereCriteria { - - /** - * 等于 - */ - public static final int OPERATOR_EQUAL = 0; - - /** - * 不等于 - */ - public static final int OPERATOR_NOT_EQUAL = 1; - - /** - * 大于等于 - */ - public static final int OPERATOR_GE = 2; - - /** - * 大于 - */ - public static final int OPERATOR_GT = 3; - - /** - * 小于等于 - */ - public static final int OPERATOR_LE = 4; - - /** - * 小于 - */ - public static final int OPERATOR_LT = 5; - - /** - * LIKE - */ - public static final int OPERATOR_LIKE = 6; - - /** - * NOT NULL - */ - public static final int OPERATOR_NOT_NULL = 7; - - /** - * IS NULL - */ - public static final int OPERATOR_IS_NULL = 8; - - /** - * IN - */ - public static final int OPERATOR_IN = 9; - - /** - * 参与过滤的实体对象的Class。 - */ - @JSONField(serialize = false) - private Class modelClazz; - - /** - * 数据库表名。 - */ - private String tableName; - - /** - * Java属性名称。 - */ - private String fieldName; - - /** - * 数据表字段名。 - */ - private String columnName; - - /** - * 数据表字段类型。 - */ - private Integer columnType; - - /** - * 操作符类型,取值范围见上面的常量值。 - */ - private Integer operatorType; - - /** - * 条件数据值。 - */ - 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; - } - - /** - * 设置条件值。 - * - * @param fieldName 条件所属的实体对象的字段名。 - * @param operatorType 条件操作符。具体值可参考当前对象的静态变量。 - * @param value 条件过滤值。 - * @return 验证结果对象,如果有错误将会返回具体的错误信息。 - */ - public CallResult setCriteria(String fieldName, Integer operatorType, Object value) { - this.operatorType = operatorType; - this.fieldName = fieldName; - this.value = value; - return doVerify(); - } - - /** - * 设置条件值。 - * - * @param modelClazz 数据表对应实体对象的Class. - * @param fieldName 条件所属的实体对象的字段名。 - * @param operatorType 条件操作符。具体值可参考当前对象的静态变量。 - * @param value 条件过滤值。 - * @return 验证结果对象,如果有错误将会返回具体的错误信息。 - */ - public CallResult setCriteria(Class modelClazz, String fieldName, Integer operatorType, Object value) { - this.modelClazz = modelClazz; - this.operatorType = operatorType; - this.fieldName = fieldName; - this.value = value; - 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; - } - - /** - * 在执行该函数之前,该对象的所有数据均已经赋值完毕。 - * 该函数主要验证操作符字段和条件值字段对应关系的合法性。 - * - * @return 验证结果对象,如果有错误将会返回具体的错误信息。 - */ - public CallResult doVerify() { - if (fieldName == null) { - return CallResult.error("过滤字段名称 [fieldName] 不能为空!"); - } - if (modelClazz != null && ReflectUtil.getField(modelClazz, fieldName) == null) { - return CallResult.error( - "过滤字段 [" + fieldName + "] 在实体对象 [" + modelClazz.getSimpleName() + "] 中并不存在!"); - } - if (!checkOperatorType()) { - return CallResult.error("无效的操作符类型 [" + operatorType + "]!"); - } - // 其他操作符必须包含value值 - if (operatorType != OPERATOR_IS_NULL && operatorType != OPERATOR_NOT_NULL && value == null) { - String operatorString = this.getOperatorString(); - return CallResult.error("操作符 [" + operatorString + "] 的条件值不能为空!"); - } - if (this.operatorType == OPERATOR_IN) { - if (!(value instanceof Collection)) { - return CallResult.error("操作符 [IN] 的条件值必须为集合对象!"); - } - if (CollectionUtils.isEmpty((Collection) value)) { - return CallResult.error("操作符 [IN] 的条件值不能为空!"); - } - } - return CallResult.ok(); - } - - /** - * 判断操作符类型是否合法。 - * - * @return 合法返回true,否则false。 - */ - public boolean checkOperatorType() { - return operatorType != null - && (operatorType >= OPERATOR_EQUAL && operatorType <= OPERATOR_IN); - } - - /** - * 获取操作符的字符串形式。 - * - * @return 操作符的字符串。 - */ - public String getOperatorString() { - switch (operatorType) { - case OPERATOR_EQUAL: - return " = "; - case OPERATOR_NOT_EQUAL: - return " != "; - case OPERATOR_GE: - return " >= "; - case OPERATOR_GT: - return " > "; - case OPERATOR_LE: - return " <= "; - case OPERATOR_LT: - return " < "; - case OPERATOR_LIKE: - return " LIKE "; - case OPERATOR_NOT_NULL: - return " IS NOT NULL "; - case OPERATOR_IS_NULL: - return " IS NULL "; - case OPERATOR_IN: - return " IN "; - default: - return null; - } - } - - /** - * 获取组装后的SQL Where从句,如 table_name.column_name = 'value'。 - * 与查询数据表对应的实体对象Class为当前对象的modelClazz字段。 - * - * @exception InvalidDataFieldException selectFieldList中存在非法实体字段时,抛出该异常。 - * @return 组装后的SQL条件从句。 - */ - public String makeCriteriaString() { - return makeCriteriaString(this.modelClazz); - } - - /** - * 获取组装后的SQL Where从句,如 table_name.column_name = 'value'。 - * - * @param modelClazz 与查询数据表对应的实体对象的Class。 - * @exception InvalidDataFieldException selectFieldList中存在非法实体字段时,抛出该异常。 - * @exception InvalidDataModelException 参数modelClazz没有对应的table,抛出该异常。 - * @return 组装后的SQL条件从句。 - */ - public String makeCriteriaString(Class modelClazz) { - 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; - } - return this.buildClauseString(tableName, columnName, columnType); - } - - /** - * 获取组装后的SQL Where从句。如 table_name.column_name = 'value'。 - * - * @param criteriaList 条件列表,所有条件直接目前仅支持 AND 的关系。 - * @exception InvalidDataFieldException selectFieldList中存在非法实体字段时,抛出该异常。 - * @return 组装后的SQL条件从句。 - */ - public static String makeCriteriaString(List criteriaList) { - return makeCriteriaString(criteriaList, null); - } - - /** - * 获取组装后的SQL Where从句。如 table_name.column_name = 'value'。 - * - * @param criteriaList 条件列表,所有条件直接目前仅支持 AND 的关系。 - * @param modelClazz 与数据表对应的实体对象的Class。 - * 如果不为NULL实体对象Class使用该值,否则使用每个MyWhereCriteria自身的modelClazz。 - * @exception InvalidDataFieldException selectFieldList中存在非法实体字段时,抛出该异常。 - * @return 组装后的SQL条件从句。 - */ - public static String makeCriteriaString(List criteriaList, Class modelClazz) { - if (CollectionUtils.isEmpty(criteriaList)) { - return null; - } - StringBuilder sb = new StringBuilder(256); - int i = 0; - for (MyWhereCriteria whereCriteria : criteriaList) { - Class clazz = modelClazz; - if (clazz == null) { - clazz = whereCriteria.modelClazz; - } - if (i++ != 0) { - sb.append(" AND "); - } - String criteriaString = whereCriteria.makeCriteriaString(clazz); - sb.append(criteriaString); - } - return sb.length() == 0 ? null : sb.toString(); - } - - private String buildClauseString(String tableName, String columnName, Integer columnType) { - StringBuilder sb = new StringBuilder(64); - sb.append(tableName).append(".").append(columnName).append(getOperatorString()); - if (operatorType == OPERATOR_IN) { - Collection filterValues = (Collection) value; - sb.append("("); - int i = 0; - for (Object filterValue : filterValues) { - if (columnType.equals(MyModelUtil.NUMERIC_FIELD_TYPE)) { - sb.append(filterValue); - } else { - sb.append("'").append(filterValue).append("'"); - } - if (i++ != filterValues.size() - 1) { - sb.append(", "); - } - } - sb.append(")"); - return sb.toString(); - } - if (value != null) { - if (columnType.equals(MyModelUtil.NUMERIC_FIELD_TYPE)) { - sb.append(value); - } else { - sb.append("'").append(value).append("'"); - } - } - return sb.toString(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/ResponseResult.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/ResponseResult.java deleted file mode 100644 index a3cb0c18..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/ResponseResult.java +++ /dev/null @@ -1,235 +0,0 @@ -package com.orangeforms.common.core.object; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import com.orangeforms.common.core.util.ContextUtil; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; - -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.PrintWriter; - -/** - * 接口返回对象 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Data -public class ResponseResult { - - /** - * 为了优化性能,所有没有携带数据的正确结果,均可用该对象表示。 - */ - private static final ResponseResult OK = new ResponseResult<>(); - /** - * 是否成功标记。 - */ - private boolean success = true; - /** - * 错误码。 - */ - private String errorCode = "NO-ERROR"; - /** - * 错误信息描述。 - */ - private String errorMessage = "NO-MESSAGE"; - /** - * 实际数据。 - */ - private T data = null; - - /** - * 根据参数errorCodeEnum的枚举值,判断创建成功对象还是错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCodeEnum 的 name() 和 getErrorMessage()。 - * - * @param errorCodeEnum 错误码枚举 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult create(ErrorCodeEnum errorCodeEnum) { - return create(errorCodeEnum, errorCodeEnum.getErrorMessage()); - } - - /** - * 根据参数errorCodeEnum的枚举值,判断创建成功对象还是错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCodeEnum 的 name() 和参数 errorMessage。 - * - * @param errorCodeEnum 错误码枚举。 - * @param errorMessage 如果该参数为null,错误信息取自errorCodeEnum参数内置的errorMessage,否则使用当前参数。 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult create(ErrorCodeEnum errorCodeEnum, String errorMessage) { - errorMessage = errorMessage != null ? errorMessage : errorCodeEnum.getErrorMessage(); - return errorCodeEnum == ErrorCodeEnum.NO_ERROR ? success() : error(errorCodeEnum.name(), errorMessage); - } - - /** - * 根据参数errorCode是否为空,判断创建成功对象还是错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCode 和参数 errorMessage。 - * - * @param errorCode 自定义的错误码 - * @param errorMessage 自定义的错误信息 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult create(String errorCode, String errorMessage) { - return errorCode == null ? success() : error(errorCode, errorMessage); - } - - /** - * 根据参数errorCodeEnum的枚举值,判断创建成功对象还是错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCodeEnum 的 name() 和参数 errorMessage。 - * - * @param errorCodeEnum 错误码枚举。 - * @param errorMessage 如果该参数为null,错误信息取自errorCodeEnum参数内置的errorMessage,否则使用当前参数。 - * @param data 如果错误枚举值为NO_ERROR,则返回该数据。 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult create(ErrorCodeEnum errorCodeEnum, String errorMessage, T data) { - errorMessage = errorMessage != null ? errorMessage : errorCodeEnum.getErrorMessage(); - return errorCodeEnum == ErrorCodeEnum.NO_ERROR ? success(data) : error(errorCodeEnum.name(), errorMessage); - } - - /** - * 创建成功对象。 - * 如果需要绑定返回数据,可以在实例化后调用setDataObject方法。 - * - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult success() { - return OK; - } - - /** - * 创建带有返回数据的成功对象。 - * - * @param data 返回的数据对象 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult success(T data) { - ResponseResult resp = new ResponseResult<>(); - resp.data = data; - return resp; - } - - /** - * 创建错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCodeEnum 的 name() 和 getErrorMessage()。 - * - * @param errorCodeEnum 错误码枚举 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult error(ErrorCodeEnum errorCodeEnum) { - return error(errorCodeEnum.name(), errorCodeEnum.getErrorMessage()); - } - - /** - * 创建错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCodeEnum 的 name() 和参数 errorMessage。 - * - * @param errorCodeEnum 错误码枚举 - * @param errorMessage 自定义的错误信息 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult error(ErrorCodeEnum errorCodeEnum, String errorMessage) { - return error(errorCodeEnum.name(), errorMessage); - } - - /** - * 创建错误对象。 - * 如果返回错误对象,errorCode 和 errorMessage 分别取自于参数 errorCode 和参数 errorMessage。 - * - * @param errorCode 自定义的错误码 - * @param errorMessage 自定义的错误信息 - * @return 返回创建的ResponseResult实例对象 - */ - public static ResponseResult error(String errorCode, String errorMessage) { - return new ResponseResult<>(errorCode, errorMessage); - } - - /** - * 根据参数中出错的ResponseResult,创建新的错误应答对象。 - * - * @param errorCause 导致错误原因的应答对象。 - * @return 返回创建的ResponseResult实例对象。 - */ - public static ResponseResult errorFrom(ResponseResult errorCause) { - 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()); - } - - /** - * 是否成功。 - * - * @return true成功,否则false。 - */ - public boolean isSuccess() { - return success; - } - - /** - * 通过HttpServletResponse直接输出应该信息的工具方法。 - * - * @param httpStatus http状态码。 - * @param responseResult 应答内容。 - * @param 数据对象类型。 - * @throws IOException 异常错误。 - */ - public static void output(int httpStatus, ResponseResult responseResult) throws IOException { - if (httpStatus != HttpServletResponse.SC_OK) { - log.error(JSON.toJSONString(responseResult)); - } else { - log.info(JSON.toJSONString(responseResult)); - } - HttpServletResponse response = ContextUtil.getHttpResponse(); - PrintWriter out = response.getWriter(); - response.setContentType("application/json; charset=utf-8"); - response.setStatus(httpStatus); - if (responseResult != null) { - out.print(JSON.toJSONString(responseResult)); - } - out.flush(); - } - - /** - * 通过HttpServletResponse直接输出应该信息的工具方法。 - * - * @param httpStatus http状态码。 - * @param 数据对象类型。 - * @throws IOException 异常错误。 - */ - public static void output(int httpStatus) throws IOException { - output(httpStatus, null); - } - - /** - * 通过HttpServletResponse直接输出应该信息的工具方法。Http状态码为200。 - * - * @param responseResult 应答内容。 - * @param 数据对象类型。 - * @throws IOException 异常错误。 - */ - public static void output(ResponseResult responseResult) throws IOException { - output(HttpServletResponse.SC_OK, responseResult); - } - - private ResponseResult() { - - } - - private ResponseResult(String errorCode, String errorMessage) { - this.success = false; - this.errorCode = errorCode; - this.errorMessage = errorMessage; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TableModelInfo.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TableModelInfo.java deleted file mode 100644 index eebfd0b7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TableModelInfo.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.common.core.object; - -import lombok.Data; - -/** - * 数据表模型基础信息。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -public class TableModelInfo { - - /** - * 数据表名。 - */ - private String tableName; - - /** - * 实体对象名。 - */ - private String modelName; - - /** - * 主键的表字段名。 - */ - private String keyColumnName; - - /** - * 主键在实体对象中的属性名。 - */ - private String keyFieldName; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TokenData.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TokenData.java deleted file mode 100644 index 749ee848..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/TokenData.java +++ /dev/null @@ -1,111 +0,0 @@ -package com.orangeforms.common.core.object; - -import com.orangeforms.common.core.util.ContextUtil; -import lombok.Data; -import lombok.ToString; - -import javax.servlet.http.HttpServletRequest; -import java.util.Date; - -/** - * 基于Jwt,用于前后端传递的令牌对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ToString -public class TokenData { - - /** - * 在HTTP Request对象中的属性键。 - */ - public static final String REQUEST_ATTRIBUTE_NAME = "tokenData"; - /** - * 用户Id。 - */ - private Long userId; - /** - * 用户所属角色。多个角色之间逗号分隔。 - */ - private String roleIds; - /** - * 用户所在部门Id。 - * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 - */ - private Long deptId; - /** - * 用户所属岗位Id。多个岗位之间逗号分隔。仅当系统支持岗位时有值。 - */ - private String postIds; - /** - * 用户的部门岗位Id。多个岗位之间逗号分隔。仅当系统支持岗位时有值。 - */ - private String deptPostIds; - /** - * 租户Id。 - * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 - */ - private Long tenantId; - /** - * 是否为超级管理员。 - */ - private Boolean isAdmin; - /** - * 用户登录名。 - */ - private String loginName; - /** - * 用户显示名称。 - */ - private String showName; - /** - * 设备类型。参考 AppDeviceType。 - */ - private Integer deviceType; - /** - * 标识不同登录的会话Id。 - */ - private String sessionId; - /** - * 访问uaa的授权token。 - * 仅当系统支持uaa时可用,否则可以直接忽略该字段。保留该字段是为了保持单体和微服务通用代码部分的兼容性。 - */ - private String uaaAccessToken; - /** - * 数据库路由键(仅当水平分库时使用)。 - */ - private Integer datasourceRouteKey; - /** - * 登录IP。 - */ - private String loginIp; - /** - * 登录时间。 - */ - private Date loginTime; - /** - * 登录头像地址。 - */ - private String headImageUrl; - - /** - * 将令牌对象添加到Http请求对象。 - * - * @param tokenData 令牌对象。 - */ - public static void addToRequest(TokenData tokenData) { - HttpServletRequest request = ContextUtil.getHttpRequest(); - request.setAttribute(TokenData.REQUEST_ATTRIBUTE_NAME, tokenData); - } - - /** - * 从Http Request对象中获取令牌对象。 - * - * @return 令牌对象。 - */ - public static TokenData takeFromRequest() { - HttpServletRequest request = ContextUtil.getHttpRequest(); - return (TokenData) request.getAttribute(REQUEST_ATTRIBUTE_NAME); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/Tuple2.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/Tuple2.java deleted file mode 100644 index efcaf48d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/object/Tuple2.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.orangeforms.common.core.object; - -/** - * 二元组对象。主要用于可以一次返回多个结果的场景,同时还能避免强制转换。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class Tuple2 { - - /** - * 第一个变量。 - */ - private final T1 first; - /** - * 第二个变量。 - */ - private final T2 second; - - /** - * 构造函数。 - * - * @param first 第一个变量。 - * @param second 第二个变量。 - */ - public Tuple2(T1 first, T2 second) { - this.first = first; - this.second = second; - } - - /** - * 获取第一个变量。 - * - * @return 返回第一个变量。 - */ - public T1 getFirst() { - return first; - } - - /** - * 获取第二个变量。 - * - * @return 返回第二个变量。 - */ - public T2 getSecond() { - return second; - } - -} - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/BaseUpDownloader.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/BaseUpDownloader.java deleted file mode 100644 index 10e0d7ae..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/BaseUpDownloader.java +++ /dev/null @@ -1,137 +0,0 @@ -package com.orangeforms.common.core.upload; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.util.ContextUtil; -import com.orangeforms.common.core.util.MyCommonUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.List; - -/** - * 上传或下载文件抽象父类。 - * 包含存储本地文件的功能,以及上传和下载所需的通用方法。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public abstract class BaseUpDownloader { - - /** - * 构建上传文件的完整目录。 - * - * @param rootBaseDir 文件下载的根目录。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @return 上传文件的完整路径名。 - */ - public String makeFullPath( - String rootBaseDir, String modelName, String fieldName, Boolean asImage) { - StringBuilder uploadPathBuilder = new StringBuilder(128); - if (StringUtils.isNotBlank(rootBaseDir)) { - uploadPathBuilder.append(rootBaseDir).append("/"); - } - if (Boolean.TRUE.equals(asImage)) { - uploadPathBuilder.append(ApplicationConstant.UPLOAD_IMAGE_PARENT_PATH); - } else { - uploadPathBuilder.append(ApplicationConstant.UPLOAD_ATTACHMENT_PARENT_PATH); - } - uploadPathBuilder.append("/").append(modelName).append("/").append(fieldName).append("/"); - return uploadPathBuilder.toString(); - } - - /** - * 构建上传操作的返回对象。 - * - * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 - * @param originalFilename 上传文件的原始文件名(包含扩展名)。 - */ - public void fillUploadResponseInfo( - UploadResponseInfo responseInfo, String serviceContextPath, String originalFilename) { - // 根据请求上传的uri构建下载uri,只是将末尾的/upload改为/download即可。 - HttpServletRequest request = ContextUtil.getHttpRequest(); - String uri = request.getRequestURI(); - uri = StringUtils.removeEnd(uri, "/"); - uri = StringUtils.removeEnd(uri, "/upload"); - String downloadUri; - if (StringUtils.isBlank(serviceContextPath)) { - downloadUri = uri + "/download"; - } else { - downloadUri = serviceContextPath + uri + "/download"; - } - StringBuilder filenameBuilder = new StringBuilder(64); - filenameBuilder.append(MyCommonUtil.generateUuid()) - .append(".").append(FilenameUtils.getExtension(originalFilename)); - responseInfo.setDownloadUri(downloadUri); - responseInfo.setFilename(filenameBuilder.toString()); - } - - /** - * 执行下载操作,从本地文件系统读取数据,并将读取的数据直接写入到HttpServletResponse应答对象。 - * - * @param rootBaseDir 文件下载的根目录。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param fileName 文件名。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @param response Http 应答对象。 - * @throws Exception 操作错误。 - */ - public abstract void doDownload( - String rootBaseDir, - String modelName, - String fieldName, - String fileName, - Boolean asImage, - HttpServletResponse response) throws Exception; - - /** - * 执行文件上传操作,并存入本地文件系统,再将与该文件下载对应的Url直接写入到HttpServletResponse应答对象,返回给前端。 - * - * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 - * @param rootBaseDir 存放上传文件的根目录。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param uploadFile Http请求中上传的文件对象。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @return 存储在本地上传文件名。 - * @throws Exception 操作错误。 - */ - public abstract UploadResponseInfo doUpload( - String serviceContextPath, - String rootBaseDir, - String modelName, - String fieldName, - Boolean asImage, - MultipartFile uploadFile) throws Exception; - - /** - * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 - * - * @param fileInfoJson 内部类UploadFileInfo的JSONArray数组。 - * @param filename 被包含的文件名。 - * @return 存在返回true,否则false。 - */ - public static boolean containFile(String fileInfoJson, String filename) { - if (StringUtils.isAnyBlank(fileInfoJson, filename)) { - return false; - } - List fileInfoList = JSON.parseArray(fileInfoJson, UploadResponseInfo.class); - if (CollectionUtils.isNotEmpty(fileInfoList)) { - for (UploadResponseInfo fileInfo : fileInfoList) { - if (StringUtils.equals(filename, fileInfo.getFilename())) { - return true; - } - } - } - return false; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/LocalUpDownloader.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/LocalUpDownloader.java deleted file mode 100644 index a8c399cf..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/LocalUpDownloader.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.orangeforms.common.core.upload; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.common.core.constant.ErrorCodeEnum; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import javax.annotation.PostConstruct; -import javax.servlet.http.HttpServletResponse; -import java.io.*; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.List; -import java.util.Objects; - -/** - * 存储本地文件的上传下载实现类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -@Component -public class LocalUpDownloader extends BaseUpDownloader { - - @Autowired - private UpDownloaderFactory factory; - - @PostConstruct - public void doRegister() { - factory.registerUpDownloader(UploadStoreTypeEnum.LOCAL_SYSTEM, this); - } - - /** - * 执行下载操作,从本地文件系统读取数据,并将读取的数据直接写入到HttpServletResponse应答对象。 - * - * @param rootBaseDir 文件下载的根目录。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param fileName 文件名。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @param response Http 应答对象。 - */ - @Override - public void doDownload( - String rootBaseDir, - String modelName, - String fieldName, - String fileName, - Boolean asImage, - HttpServletResponse response) { - String uploadPath = makeFullPath(rootBaseDir, modelName, fieldName, asImage); - String fullFileanme = uploadPath + "/" + fileName; - File file = new File(fullFileanme); - if (!file.exists()) { - log.warn("Download file [" + fullFileanme + "] failed, no file found!"); - response.setStatus(HttpServletResponse.SC_NOT_FOUND); - return; - } - response.setHeader("content-type", "application/octet-stream"); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + fileName); - byte[] buff = new byte[2048]; - try (OutputStream os = response.getOutputStream(); - BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { - int i = bis.read(buff); - while (i != -1) { - os.write(buff, 0, i); - os.flush(); - i = bis.read(buff); - } - } catch (IOException e) { - log.error("Failed to call LocalUpDownloader.doDownload", e); - } - } - - /** - * 执行文件上传操作,并存入本地文件系统,再将与该文件下载对应的Url直接写入到HttpServletResponse应答对象,返回给前端。 - * - * @param serviceContextPath 微服务的上下文路径,如: /admin/upms。 - * @param rootBaseDir 存放上传文件的根目录。 - * @param modelName 所在数据表的实体对象名。 - * @param fieldName 关联字段的实体对象属性名。 - * @param uploadFile Http请求中上传的文件对象。 - * @param asImage 是否为图片对象。图片是无需权限验证的,因此和附件存放在不同的子目录。 - * @return 存储在本地上传文件名。 - * @throws IOException 文件操作错误。 - */ - @Override - public UploadResponseInfo doUpload( - String serviceContextPath, - String rootBaseDir, - String modelName, - String fieldName, - Boolean asImage, - MultipartFile uploadFile) throws IOException { - UploadResponseInfo responseInfo = new UploadResponseInfo(); - if (Objects.isNull(uploadFile) || uploadFile.isEmpty()) { - responseInfo.setUploadFailed(true); - responseInfo.setErrorMessage(ErrorCodeEnum.INVALID_UPLOAD_FILE_ARGUMENT.getErrorMessage()); - return responseInfo; - } - String uploadPath = makeFullPath(rootBaseDir, modelName, fieldName, asImage); - fillUploadResponseInfo(responseInfo, serviceContextPath, uploadFile.getOriginalFilename()); - try { - byte[] bytes = uploadFile.getBytes(); - Path path = Paths.get(uploadPath + responseInfo.getFilename()); - // 如果没有files文件夹,则创建 - if (!Files.isWritable(path)) { - Files.createDirectories(Paths.get(uploadPath)); - } - // 文件写入指定路径 - Files.write(path, bytes); - } catch (IOException e) { - log.error("Failed to write uploaded file [" + uploadFile.getOriginalFilename() + " ].", e); - responseInfo.setUploadFailed(true); - responseInfo.setErrorMessage(ErrorCodeEnum.INVALID_UPLOAD_FILE_IOERROR.getErrorMessage()); - return responseInfo; - } - return responseInfo; - } - - /** - * 判断filename参数指定的文件名,是否被包含在fileInfoJson参数中。 - * - * @param fileInfoJson 内部类UploadFileInfo的JSONArray数组。 - * @param filename 被包含的文件名。 - * @return 存在返回true,否则false。 - */ - public static boolean containFile(String fileInfoJson, String filename) { - if (StringUtils.isAnyBlank(fileInfoJson, filename)) { - return false; - } - List fileInfoList = JSON.parseArray(fileInfoJson, UploadResponseInfo.class); - if (CollectionUtils.isNotEmpty(fileInfoList)) { - for (UploadResponseInfo fileInfo : fileInfoList) { - if (StringUtils.equals(filename, fileInfo.getFilename())) { - return true; - } - } - } - return false; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UpDownloaderFactory.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UpDownloaderFactory.java deleted file mode 100644 index 8f8d9fcf..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UpDownloaderFactory.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.orangeforms.common.core.upload; - -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -/** - * 业务对象根据上传下载存储类型,获取上传下载对象的工厂类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Component -public class UpDownloaderFactory { - - private final Map upDownloaderMap = new HashMap<>(); - - /** - * 根据存储类型获取上传下载对象。 - * @param storeType 存储类型。 - * @return 匹配的上传下载对象。 - */ - public BaseUpDownloader get(UploadStoreTypeEnum storeType) { - BaseUpDownloader upDownloader = upDownloaderMap.get(storeType); - if (upDownloader == null) { - throw new UnsupportedOperationException( - "The storeType [" + storeType.name() + "] isn't supported, please add dependency jar first."); - } - return upDownloader; - } - - /** - * 注册上传下载对象到工厂。 - * - * @param storeType 存储类型。 - * @param upDownloader 上传下载对象。 - */ - public void registerUpDownloader(UploadStoreTypeEnum storeType, BaseUpDownloader upDownloader) { - if (storeType == null || upDownloader == null) { - throw new IllegalArgumentException("The Argument can't be NULL."); - } - if (upDownloaderMap.containsKey(storeType)) { - throw new UnsupportedOperationException( - "The storeType [" + storeType.name() + "] has been registered already."); - } - upDownloaderMap.put(storeType, upDownloader); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadResponseInfo.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadResponseInfo.java deleted file mode 100644 index f78bb7a9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadResponseInfo.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.orangeforms.common.core.upload; - -import lombok.Data; - -/** - * 数据上传操作的应答信息对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -public class UploadResponseInfo { - /** - * 上传是否出现错误。 - */ - private Boolean uploadFailed = false; - /** - * 具体错误信息。 - */ - private String errorMessage; - /** - * 返回前端的下载url。 - */ - private String downloadUri; - /** - * 返回给前端的文件名。 - */ - private String filename; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreInfo.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreInfo.java deleted file mode 100644 index 65f60346..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreInfo.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.orangeforms.common.core.upload; - -import lombok.Data; - -/** - * 上传数据存储信息对象。这里之所以使用对象,主要是便于今后扩展。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -public class UploadStoreInfo { - - /** - * 是否支持上传。 - */ - private boolean supportUpload; - /** - * 上传数据存储类型。 - */ - private UploadStoreTypeEnum storeType; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreTypeEnum.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreTypeEnum.java deleted file mode 100644 index d97de6fb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/upload/UploadStoreTypeEnum.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.orangeforms.common.core.upload; - -/** - * 上传数据存储介质类型枚举。 - * - * @author Jerry - * @date 2022-02-20 - */ -public enum UploadStoreTypeEnum { - - /** - * 本地系统。 - */ - LOCAL_SYSTEM, - /** - * minio分布式存储。 - */ - MINIO_SYSTEM -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/AopTargetUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/AopTargetUtil.java deleted file mode 100644 index 5a415b9c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/AopTargetUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.orangeforms.common.core.util; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.aop.framework.AdvisedSupport; -import org.springframework.aop.framework.AopProxy; -import org.springframework.aop.support.AopUtils; - -import java.lang.reflect.Field; - -/** - * 获取JDK动态代理/CGLIB代理对象代理的目标对象的工具类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class AopTargetUtil { - - /** - * 获取参数对象代理的目标对象。 - * - * @param proxy 代理对象 - * @return 代理的目标对象。 - */ - public static Object getTarget(Object proxy) { - if (!AopUtils.isAopProxy(proxy)) { - return proxy; - } - try { - if (AopUtils.isJdkDynamicProxy(proxy)) { - return getJdkDynamicProxyTargetObject(proxy); - } else { - return getCglibProxyTargetObject(proxy); - } - } catch (Exception e) { - log.error("Failed to call getJdkDynamicProxyTargetObject or getCglibProxyTargetObject", e); - return null; - } - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private AopTargetUtil() { - } - - private static Object getCglibProxyTargetObject(Object proxy) throws Exception { - Field h = proxy.getClass().getDeclaredField("CGLIB$CALLBACK_0"); - h.setAccessible(true); - Object dynamicAdvisedInterceptor = h.get(proxy); - Field advised = dynamicAdvisedInterceptor.getClass().getDeclaredField("advised"); - advised.setAccessible(true); - return ((AdvisedSupport) advised.get(dynamicAdvisedInterceptor)).getTargetSource().getTarget(); - } - - private static Object getJdkDynamicProxyTargetObject(Object proxy) throws Exception { - Field h = proxy.getClass().getSuperclass().getDeclaredField("h"); - h.setAccessible(true); - AopProxy aopProxy = (AopProxy) h.get(proxy); - Field advised = aopProxy.getClass().getDeclaredField("advised"); - advised.setAccessible(true); - return ((AdvisedSupport) advised.get(aopProxy)).getTargetSource().getTarget(); - } -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ApplicationContextHolder.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ApplicationContextHolder.java deleted file mode 100644 index 975e2368..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ApplicationContextHolder.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.orangeforms.common.core.util; - -import com.orangeforms.common.core.exception.MyRuntimeException; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationContextAware; -import org.springframework.lang.NonNull; -import org.springframework.stereotype.Component; - -import java.util.Collection; -import java.util.Map; - -/** - * Spring 系统启动应用感知对象,主要用于获取Spring Bean的上下文对象,后续的代码中可以直接查找系统中加载的Bean对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Component -public class ApplicationContextHolder implements ApplicationContextAware { - - private static ApplicationContext applicationContext; - - /** - * Spring 启动的过程中会自动调用,并将应用上下文对象赋值进来。 - * - * @param applicationContext 应用上下文对象,可通过该对象查找Spring中已经加载的Bean。 - */ - @Override - public void setApplicationContext(@NonNull ApplicationContext applicationContext) { - doSetApplicationContext(applicationContext); - } - - /** - * 获取应用上下文对象。 - * - * @return 应用上下文。 - */ - public static ApplicationContext getApplicationContext() { - assertApplicationContext(); - return applicationContext; - } - - /** - * 根据BeanName,获取Bean对象。 - * - * @param beanName Bean名称。 - * @param 返回的Bean类型。 - * @return Bean对象。 - */ - @SuppressWarnings("unchecked") - public static T getBean(String beanName) { - assertApplicationContext(); - return (T) applicationContext.getBean(beanName); - } - - /** - * 根据Bean的ClassType,获取Bean对象。 - * - * @param beanType Bean的Class类型。 - * @param 返回的Bean类型。 - * @return Bean对象。 - */ - public static T getBean(Class beanType) { - assertApplicationContext(); - return applicationContext.getBean(beanType); - } - - /** - * 根据Bean的ClassType,获取Bean对象列表。 - * - * @param beanType Bean的Class类型。 - * @param 返回的Bean类型。 - * @return Bean对象列表。 - */ - public static Collection getBeanListOfType(Class beanType) { - assertApplicationContext(); - Map beanMap = applicationContext.getBeansOfType(beanType); - return beanMap == null ? null : beanMap.values(); - } - - private static void assertApplicationContext() { - if (ApplicationContextHolder.applicationContext == null) { - throw new MyRuntimeException("applicaitonContext属性为null,请检查是否注入了ApplicationContextHolder!"); - } - } - - private static void doSetApplicationContext(ApplicationContext applicationContext) { - ApplicationContextHolder.applicationContext = applicationContext; - } -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ContextUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ContextUtil.java deleted file mode 100644 index 696a7ee3..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ContextUtil.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.orangeforms.common.core.util; - -import org.springframework.web.context.request.RequestContextHolder; -import org.springframework.web.context.request.ServletRequestAttributes; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * 获取Servlet HttpRequest和HttpResponse的工具类。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class ContextUtil { - - /** - * 判断当前是否处于HttpServletRequest上下文环境。 - * - * @return 是返回true,否则false。 - */ - public static boolean hasRequestContext() { - return RequestContextHolder.getRequestAttributes() != null; - } - - /** - * 获取Servlet请求上下文的HttpRequest对象。 - * - * @return 请求上下文中的HttpRequest对象。 - */ - public static HttpServletRequest getHttpRequest() { - return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); - } - - /** - * 获取Servlet请求上下文的HttpResponse对象。 - * - * @return 请求上下文中的HttpResponse对象。 - */ - public static HttpServletResponse getHttpResponse() { - return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse(); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private ContextUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/DataSourceResolver.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/DataSourceResolver.java deleted file mode 100644 index 70305325..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/DataSourceResolver.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.orangeforms.common.core.util; - -/** - * 基于自定义解析规则的多数据源解析接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface DataSourceResolver { - - /** - * 动态解析方法。实现类可以根据当前的请求,或者上下文环境进行动态解析。 - * - * @param arg 可选的入参。MyDataSourceResolver注解中的arg参数。 - * @param methodArgs 被织入方法的所有参数。 - * @return 返回用于多数据源切换的类型值。DataSourceResolveAspect 切面方法会根据该返回值和配置信息,进行多数据源切换。 - */ - int resolve(String arg, Object[] methodArgs); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ExportUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ExportUtil.java deleted file mode 100644 index 414203ed..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ExportUtil.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.orangeforms.common.core.util; - -import cn.hutool.core.io.IoUtil; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.ExcelWriter; -import cn.jimmyshi.beanquery.BeanQuery; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.exception.MyRuntimeException; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVPrinter; -import org.apache.commons.io.FilenameUtils; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.Writer; -import java.nio.charset.StandardCharsets; -import java.util.*; - -/** - * 导出工具类,目前支持xlsx和csv两种类型。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class ExportUtil { - - /** - * 数据导出。目前仅支持xlsx和csv。 - * - * @param dataList 导出数据列表。 - * @param selectFieldMap 导出的数据字段,key为对象字段名称,value为中文标题名称。 - * @param filename 导出文件名。 - * @param 数据对象类型。 - * @throws IOException 文件操作失败。 - */ - public static void doExport( - Collection dataList, Map selectFieldMap, String filename) throws IOException { - if (CollectionUtils.isEmpty(dataList)) { - return; - } - StringBuilder sb = new StringBuilder(128); - for (Map.Entry e : selectFieldMap.entrySet()) { - sb.append(e.getKey()).append(" as ").append(e.getValue()).append(", "); - } - // 去掉末尾的逗号 - String selectFieldString = sb.substring(0, sb.length() - 2); - // 写出数据到xcel格式的输出流 - List> resultList = BeanQuery.select(selectFieldString).executeFrom(dataList); - // 构建HTTP输出流参数 - HttpServletResponse response = ContextUtil.getHttpResponse(); - response.setHeader("content-type", "application/octet-stream"); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=" + filename); - if (ApplicationConstant.XLSX_EXT.equals(FilenameUtils.getExtension(filename))) { - ServletOutputStream out = response.getOutputStream(); - ExcelWriter writer = ExcelUtil.getWriter(true); - writer.setRowHeight(-1, 30); - writer.setColumnWidth(-1, 30); - writer.setColumnWidth(1, 20); - writer.write(resultList); - writer.flush(out); - writer.close(); - IoUtil.close(out); - } else if (ApplicationConstant.CSV_EXT.equals(FilenameUtils.getExtension(filename))) { - Collection headerList = selectFieldMap.values(); - String[] headerArray = new String[headerList.size()]; - headerList.toArray(headerArray); - CSVFormat format = CSVFormat.DEFAULT.withHeader(headerArray); - response.setCharacterEncoding(StandardCharsets.UTF_8.name()); - try (Writer out = response.getWriter(); CSVPrinter printer = new CSVPrinter(out, format)) { - for (Map o : resultList) { - for (Map.Entry entry : o.entrySet()) { - printer.print(entry.getValue()); - } - printer.println(); - } - printer.flush(); - } catch (Exception e) { - log.error("Failed to call ExportUtil.doExport", e); - } - } else { - throw new MyRuntimeException("不支持的导出文件类型!"); - } - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private ExportUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ImportUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ImportUtil.java deleted file mode 100644 index ccae2950..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/ImportUtil.java +++ /dev/null @@ -1,252 +0,0 @@ -package com.orangeforms.common.core.util; - -import cn.hutool.core.convert.Convert; -import cn.hutool.core.io.file.FileNameUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.poi.excel.ExcelUtil; -import cn.hutool.poi.excel.sax.handler.RowHandler; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableLogic; -import com.orangeforms.common.core.exception.MyRuntimeException; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.joda.time.DateTime; -import org.springframework.web.multipart.MultipartFile; - -import java.io.File; -import java.io.IOException; -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.math.BigDecimal; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.*; - -/** - * 导入工具类,目前支持xlsx和xls两种类型。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class ImportUtil { - - /** - * 根据实体类的Class类型,生成导入的头信息。 - * - * @param modelClazz 实体对象的Class类型。 - * @param ignoreFields 忽略的字段名集合,如创建时间、创建人、更新时间、更新人等。 - * @param 实体对象类型。 - * @return 创建后的导入头信息列表。 - */ - public static List makeHeaderInfoList(Class modelClazz, Set ignoreFields) { - List resultList = new LinkedList<>(); - Field[] fields = ReflectUtil.getFields(modelClazz); - for (Field field : fields) { - int modifiers = field.getModifiers(); - // transient类型的字段不能作为查询条件,静态字段和逻辑删除都不考虑。需要忽略的字段也要跳过。 - int transientMask = 128; - if ((modifiers & transientMask) == 1 - || Modifier.isStatic(modifiers) - || field.getAnnotation(TableLogic.class) != null - || ignoreFields.contains(field.getName())) { - continue; - } - TableField tableField = field.getAnnotation(TableField.class); - if (tableField == null || tableField.exist()) { - ImportHeaderInfo headerInfo = new ImportHeaderInfo(); - headerInfo.fieldName = field.getName(); - if (field.getType().equals(Integer.class)) { - headerInfo.fieldType = INT_TYPE; - } else if (field.getType().equals(Long.class)) { - headerInfo.fieldType = LONG_TYPE; - } else if (field.getType().equals(String.class)) { - headerInfo.fieldType = STRING_TYPE; - } else if (field.getType().equals(Boolean.class)) { - headerInfo.fieldType = BOOLEAN_TYPE; - } else if (field.getType().equals(Date.class)) { - headerInfo.fieldType = DATE_TYPE; - } else if (field.getType().equals(Double.class)) { - headerInfo.fieldType = DOUBLE_TYPE; - } else if (field.getType().equals(Float.class)) { - headerInfo.fieldType = FLOAT_TYPE; - } else if (field.getType().equals(BigDecimal.class)) { - headerInfo.fieldType = BIG_DECIMAL_TYPE; - } else { - throw new MyRuntimeException("Unsupport Import FieldType"); - } - resultList.add(headerInfo); - } - } - return resultList; - } - - /** - * 保存导入文件。 - * - * @param baseDir 导入文件本地缓存的根目录。 - * @param subDir 导入文件本地缓存的子目录。 - * @param importFile 导入的文件。 - * @return 保存的本地文件名。 - */ - public static String saveImportFile( - String baseDir, String subDir, MultipartFile importFile) throws IOException { - StringBuilder sb = new StringBuilder(256); - sb.append(baseDir); - if (!StrUtil.endWith(baseDir, "/")) { - sb.append("/"); - } - sb.append("importedFile/"); - if (StrUtil.isNotBlank(subDir)) { - sb.append(subDir); - if (!StrUtil.endWith(subDir, "/")) { - sb.append("/"); - } - } - String pathname = sb.toString(); - sb.append(new DateTime().toString("yyyy-MM-dd-HH-mm-")); - sb.append(MyCommonUtil.generateUuid()) - .append(".").append(FileNameUtil.getSuffix(importFile.getOriginalFilename())); - String fullname = sb.toString(); - try { - byte[] bytes = importFile.getBytes(); - Path path = Paths.get(fullname); - // 如果没有files文件夹,则创建 - if (!Files.isWritable(path)) { - Files.createDirectories(Paths.get(pathname)); - } - // 文件写入指定路径 - Files.write(path, bytes); - } catch (IOException e) { - log.error("Failed to write imported file [" + importFile.getOriginalFilename() + " ].", e); - throw e; - } - return fullname; - } - - /** - * 导入指定的excel,基于SAX方式解析后返回数据列表。 - * - * @param headers 头信息数组。 - * @param skipHeader 是否跳过第一行,通常改行为头信息。 - * @param filename 文件名。 - * @return 解析后数据列表。 - */ - public static List> doImport( - ImportHeaderInfo[] headers, boolean skipHeader, String filename) { - Assert.notNull(headers); - Assert.isTrue(StrUtil.isNotBlank(filename)); - List> resultList = new LinkedList<>(); - ExcelUtil.readBySax(new File(filename), 0, createRowHandler(headers, skipHeader, resultList)); - return resultList; - } - - /** - * 导入指定的excel,基于SAX方式解析后返回Bean类型的数据列表。 - * - * @param headers 头信息数组。 - * @param skipHeader 是否跳过第一行,通常改行为头信息。 - * @param filename 文件名。 - * @param clazz Bean的Class类型。 - * @return 解析后数据列表。 - */ - public static List doImport( - ImportHeaderInfo[] headers, boolean skipHeader, String filename, Class clazz) { - List> resultList = doImport(headers, skipHeader, filename); - return MyModelUtil.mapToBeanList(resultList, clazz); - } - - private static RowHandler createRowHandler( - ImportHeaderInfo[] headers, boolean skipHeader, List> resultList) { - return new MyRowHandler(headers, skipHeader, resultList); - } - - public final static int INT_TYPE = 0; - public final static int LONG_TYPE = 1; - public final static int STRING_TYPE = 2; - public final static int BOOLEAN_TYPE = 3; - public final static int DATE_TYPE = 4; - public final static int DOUBLE_TYPE = 5; - public final static int FLOAT_TYPE = 6; - public final static int BIG_DECIMAL_TYPE = 7; - - @Data - public static class ImportHeaderInfo { - /** - * 对应的Java实体对象属性名。 - */ - private String fieldName; - /** - * 对应的Java实体对象类型。 - */ - private Integer fieldType; - } - - private static class MyRowHandler implements RowHandler { - - private ImportHeaderInfo[] headers; - private boolean skipHeader; - private List> resultList; - - public MyRowHandler(ImportHeaderInfo[] headers, boolean skipHeader, List> resultList) { - this.headers = headers; - this.skipHeader = skipHeader; - this.resultList = resultList; - } - - @Override - public void handle(int sheetIndex, long rowIndex, List rowList) { - if (this.skipHeader && rowIndex == 0) { - return; - } - int i = 0; - Map data = new HashMap<>(headers.length); - for (Object rowData : rowList) { - if (i >= headers.length) { - log.warn("Exceeded the size of headers and ignore the left columns"); - break; - } - ImportHeaderInfo headerInfo = this.headers[i++]; - switch (headerInfo.fieldType) { - case INT_TYPE: - data.put(headerInfo.fieldName, Convert.toInt(rowData)); - break; - case LONG_TYPE: - data.put(headerInfo.fieldName, Convert.toLong(rowData)); - break; - case STRING_TYPE: - data.put(headerInfo.fieldName, Convert.toStr(rowData)); - break; - case BOOLEAN_TYPE: - data.put(headerInfo.fieldName, Convert.toBool(rowData)); - break; - case DATE_TYPE: - data.put(headerInfo.fieldName, Convert.toDate(rowData)); - break; - case DOUBLE_TYPE: - data.put(headerInfo.fieldName, Convert.toDouble(rowData)); - break; - case FLOAT_TYPE: - data.put(headerInfo.fieldName, Convert.toFloat(rowData)); - break; - case BIG_DECIMAL_TYPE: - data.put(headerInfo.fieldName, Convert.toBigDecimal(rowData)); - break; - default: - throw new MyRuntimeException( - "Invalid ImportHeaderInfo.fieldType [" + headerInfo.fieldType + "]."); - } - } - resultList.add(data); - } - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private ImportUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/IpUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/IpUtil.java deleted file mode 100644 index 910d8e28..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/IpUtil.java +++ /dev/null @@ -1,104 +0,0 @@ -package com.orangeforms.common.core.util; - -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import javax.servlet.http.HttpServletRequest; -import java.net.Inet6Address; -import java.net.InetAddress; -import java.net.NetworkInterface; -import java.net.SocketException; -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.List; - -/** - * Ip工具类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class IpUtil { - - private static final String UNKNOWN = "unknown"; - - /** - * 通过Servlet的HttpRequest对象获取Ip地址。 - * - * @param request HttpRequest对象。 - * @return 本次请求的Ip地址。 - */ - public static String getRemoteIpAddress(HttpServletRequest request) { - String ip = null; - // X-Forwarded-For:Squid 服务代理 - String ipAddresses = request.getHeader("X-Forwarded-For"); - if (StringUtils.isBlank(ipAddresses) || UNKNOWN.equalsIgnoreCase(ipAddresses)) { - // Proxy-Client-IP:apache 服务代理 - ipAddresses = request.getHeader("Proxy-Client-IP"); - } - if (StringUtils.isBlank(ipAddresses) || UNKNOWN.equalsIgnoreCase(ipAddresses)) { - ipAddresses = request.getHeader("HTTP_X_FORWARDED_FOR"); - } - if (StringUtils.isBlank(ipAddresses) || UNKNOWN.equalsIgnoreCase(ipAddresses)) { - // WL-Proxy-Client-IP:weblogic 服务代理 - ipAddresses = request.getHeader("WL-Proxy-Client-IP"); - } - if (StringUtils.isBlank(ipAddresses) || UNKNOWN.equalsIgnoreCase(ipAddresses)) { - // HTTP_CLIENT_IP:有些代理服务器 - ipAddresses = request.getHeader("HTTP_CLIENT_IP"); - } - if (StringUtils.isBlank(ipAddresses) || UNKNOWN.equalsIgnoreCase(ipAddresses)) { - // X-Real-IP:nginx服务代理 - ipAddresses = request.getHeader("X-Real-IP"); - } - // 有些网络通过多层代理,那么获取到的ip就会有多个,一般都是通过逗号(,)分割开来,并且第一个ip为客户端的真实IP - if (StringUtils.isNotBlank(ipAddresses)) { - ip = ipAddresses.split(",")[0]; - } - // 还是不能获取到,最后再通过request.getRemoteAddr();获取 - if (StringUtils.isBlank(ipAddresses) || UNKNOWN.equalsIgnoreCase(ipAddresses)) { - ip = request.getRemoteAddr(); - } - return ip; - } - - public static String getFirstLocalIpAddress() { - String ip; - try { - List ipList = getHostAddress(); - // default the first - ip = (!ipList.isEmpty()) ? ipList.get(0) : ""; - } catch (Exception ex) { - ip = ""; - log.error("Failed to call ", ex); - } - return ip; - } - - private static List getHostAddress() throws SocketException { - List ipList = new ArrayList<>(5); - Enumeration interfaces = NetworkInterface.getNetworkInterfaces(); - while (interfaces.hasMoreElements()) { - NetworkInterface ni = interfaces.nextElement(); - Enumeration allAddress = ni.getInetAddresses(); - while (allAddress.hasMoreElements()) { - InetAddress address = allAddress.nextElement(); - // skip the IPv6 addr - // skip the IPv6 addr - if (address.isLoopbackAddress() || address instanceof Inet6Address) { - continue; - } - String hostAddress = address.getHostAddress(); - ipList.add(hostAddress); - } - } - return ipList; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private IpUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/JwtUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/JwtUtil.java deleted file mode 100644 index 76b7eaa9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/JwtUtil.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.orangeforms.common.core.util; - -import io.jsonwebtoken.Claims; -import io.jsonwebtoken.Jwts; -import io.jsonwebtoken.SignatureAlgorithm; -import lombok.extern.slf4j.Slf4j; - -import java.util.Date; -import java.util.Map; - -/** - * 基于JWT的Token生成工具类 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class JwtUtil { - - private static final String TOKEN_PREFIX = "Bearer "; - private static final String CLAIM_KEY_CREATEDTIME = "CreatedTime"; - - /** - * Token缺省过期时间是30分钟 - */ - private static final Long TOKEN_EXPIRATION = 1800000L; - /** - * 缺省情况下,Token会每5分钟被刷新一次 - */ - private static final Long REFRESH_TOKEN_INTERVAL = 300000L; - - /** - * 生成加密后的JWT令牌,生成的结果中包含令牌前缀,如"Bearer " - * - * @param claims 令牌中携带的数据 - * @param expirationMillisecond 过期的毫秒数 - * @return 生成后的令牌信息 - */ - public static String generateToken(Map claims, long expirationMillisecond, String signingKey) { - // 自动添加token的创建时间 - long createTime = System.currentTimeMillis(); - claims.put(CLAIM_KEY_CREATEDTIME, createTime); - String token = Jwts.builder() - .setClaims(claims) - .setExpiration(new Date(createTime + expirationMillisecond)) - .signWith(SignatureAlgorithm.HS512, signingKey) - .compact(); - return TOKEN_PREFIX + token; - } - - /** - * 生成加密后的JWT令牌,生成的结果中包含令牌前缀,如"Bearer " - * - * @param claims 令牌中携带的数据 - * @return 生成后的令牌信息 - */ - public static String generateToken(Map claims, String signingKey) { - return generateToken(claims, TOKEN_EXPIRATION, signingKey); - } - - /** - * 获取token中的数据对象 - * - * @param token 令牌信息(需要包含令牌前缀,如"Bearer ") - * @return 令牌中的数据对象,解析视频返回null。 - */ - public static Claims parseToken(String token, String signingKey) { - if (token == null || !token.startsWith(TOKEN_PREFIX)) { - return null; - } - String tokenKey = token.substring(TOKEN_PREFIX.length()); - Claims claims = null; - try { - claims = Jwts.parser().setSigningKey(signingKey).parseClaimsJws(tokenKey).getBody(); - } catch (Exception e) { - log.error("Token Expired", e); - } - return claims; - } - - /** - * 判断令牌是否过期 - * - * @param claims 令牌解密后的Map对象。 - * @return true 过期,否则false。 - */ - public static boolean isNullOrExpired(Claims claims) { - return claims == null || claims.getExpiration().before(new Date()); - } - - /** - * 判断解密后的Token payload是否需要被强制刷新,如果需要,则调用generateToken方法重新生成Token。 - * - * @param claims Token解密后payload数据 - * @return true 需要刷新,否则false - */ - public static boolean needToRefresh(Claims claims) { - if (claims == null) { - return false; - } - Long createTime = (Long) claims.get(CLAIM_KEY_CREATEDTIME); - return createTime == null || System.currentTimeMillis() - createTime > REFRESH_TOKEN_INTERVAL; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private JwtUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/LogMessageUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/LogMessageUtil.java deleted file mode 100644 index 74563129..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/LogMessageUtil.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.common.core.util; - -/** - * 拼接日志消息的工具类。 - * 主要目标是,尽量保证日志输出的统一性,同时也可以有效减少与日志信息相关的常量字符串, - * 提高代码的规范度和可维护性。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class LogMessageUtil { - - /** - * RPC调用错误格式。 - */ - private static final String RPC_ERROR_MSG_FORMAT = "RPC Failed with Error message [%s]"; - - /** - * 组装RPC调用的错误信息。 - * - * @param errorMsg 具体的错误信息。 - * @return 格式化后的错误信息。 - */ - public static String makeRpcError(String errorMsg) { - return String.format(RPC_ERROR_MSG_FORMAT, errorMsg); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private LogMessageUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyCommonUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyCommonUtil.java deleted file mode 100644 index d26c65d7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyCommonUtil.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.orangeforms.common.core.util; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ReflectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.crypto.digest.DigestUtil; -import com.orangeforms.common.core.constant.AppDeviceType; -import com.orangeforms.common.core.validator.AddGroup; -import com.orangeforms.common.core.validator.UpdateGroup; - -import javax.validation.ConstraintViolation; -import javax.validation.Validation; -import javax.validation.Validator; -import javax.validation.groups.Default; -import java.lang.reflect.Field; -import java.util.*; -import java.util.stream.Collectors; - -/** - * 脚手架中常用的基本工具方法集合,一般而言工程内部使用的方法。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MyCommonUtil { - - private static final Validator VALIDATOR; - - static { - VALIDATOR = Validation.buildDefaultValidatorFactory().getValidator(); - } - - /** - * 创建uuid。 - * - * @return 返回uuid。 - */ - public static String generateUuid() { - return UUID.randomUUID().toString().replace("-", ""); - } - - /** - * 对用户密码进行加盐后加密。 - * - * @param password 明文密码。 - * @param passwordSalt 盐值。 - * @return 加密后的密码。 - */ - public static String encrptedPassword(String password, String passwordSalt) { - return DigestUtil.md5Hex(password + passwordSalt); - } - - /** - * 这个方法一般用于Controller对于入口参数的基本验证。 - * 对于字符串,如果为空字符串,也将视为Blank,同时返回true。 - * - * @param objs 一组参数。 - * @return 返回是否存在null或空字符串的参数。 - */ - public static boolean existBlankArgument(Object...objs) { - for (Object obj : objs) { - if (MyCommonUtil.isBlankOrNull(obj)) { - return true; - } - } - return false; - } - - /** - * 结果和 existBlankArgument 相反。 - * - * @param objs 一组参数。 - * @return 返回是否存在null或空字符串的参数。 - */ - public static boolean existNotBlankArgument(Object...objs) { - for (Object obj : objs) { - if (!MyCommonUtil.isBlankOrNull(obj)) { - return true; - } - } - return false; - } - - /** - * 验证参数是否为空。 - * - * @param obj 待判断的参数。 - * @return 空或者null返回true,否则false。 - */ - public static boolean isBlankOrNull(Object obj) { - if (obj instanceof Collection) { - return CollUtil.isEmpty((Collection) obj); - } - return obj == null || (obj instanceof CharSequence && StrUtil.isBlank((CharSequence) obj)); - } - - /** - * 验证参数是否为非空。 - * - * @param obj 待判断的参数。 - * @return 空或者null返回false,否则true。 - */ - public static boolean isNotBlankOrNull(Object obj) { - return !isBlankOrNull(obj); - } - - /** - * 判断模型对象是否通过校验,没有通过返回具体的校验错误信息。 - * - * @param model 带校验的model。 - * @param groups Validate绑定的校验组。 - * @return 没有错误返回null,否则返回具体的错误信息。 - */ - public static String getModelValidationError(T model, Class...groups) { - if (model != null) { - Set> constraintViolations = VALIDATOR.validate(model, groups); - if (!constraintViolations.isEmpty()) { - Iterator> it = constraintViolations.iterator(); - ConstraintViolation constraint = it.next(); - return constraint.getMessage(); - } - } - return null; - } - - /** - * 判断模型对象是否通过校验,没有通过返回具体的校验错误信息。 - * - * @param model 带校验的model。 - * @param forUpdate 是否为更新。 - * @return 没有错误返回null,否则返回具体的错误信息。 - */ - public static String getModelValidationError(T model, boolean forUpdate) { - if (model != null) { - Set> constraintViolations; - if (forUpdate) { - constraintViolations = VALIDATOR.validate(model, Default.class, UpdateGroup.class); - } else { - constraintViolations = VALIDATOR.validate(model, Default.class, AddGroup.class); - } - if (!constraintViolations.isEmpty()) { - Iterator> it = constraintViolations.iterator(); - ConstraintViolation constraint = it.next(); - return constraint.getMessage(); - } - } - return null; - } - - /** - * 判断模型对象是否通过校验,没有通过返回具体的校验错误信息。 - * - * @param modelList 带校验的model列表。 - * @param groups Validate绑定的校验组。 - * @return 没有错误返回null,否则返回具体的错误信息。 - */ - public static String getModelValidationError(List modelList, Class... groups) { - if (CollUtil.isNotEmpty(modelList)) { - for (T model : modelList) { - String errorMessage = getModelValidationError(model, groups); - if (StrUtil.isNotBlank(errorMessage)) { - return errorMessage; - } - } - } - return null; - } - - /** - * 判断模型对象是否通过校验,没有通过返回具体的校验错误信息。 - * - * @param modelList 带校验的model列表。 - * @param forUpdate 是否为更新。 - * @return 没有错误返回null,否则返回具体的错误信息。 - */ - public static String getModelValidationError(List modelList, boolean forUpdate) { - if (CollUtil.isNotEmpty(modelList)) { - for (T model : modelList) { - String errorMessage = getModelValidationError(model, forUpdate); - if (StrUtil.isNotBlank(errorMessage)) { - return errorMessage; - } - } - } - return null; - } - - /** - * 拼接参数中的字符串列表,用指定分隔符进行分割,同时每个字符串对象用单引号括起来。 - * - * @param dataList 字符串集合。 - * @param separator 分隔符。 - * @return 拼接后的字符串。 - */ - public static String joinString(Collection dataList, final char separator) { - int index = 0; - StringBuilder sb = new StringBuilder(128); - for (String data : dataList) { - sb.append("'").append(data).append("'"); - if (index++ != dataList.size() - 1) { - sb.append(separator); - } - } - return sb.toString(); - } - - /** - * 将SQL Like中的通配符替换为字符本身的含义,以便于比较。 - * - * @param str 待替换的字符串。 - * @return 替换后的字符串。 - */ - public static String replaceSqlWildcard(String str) { - if (StrUtil.isBlank(str)) { - return str; - } - return StrUtil.replaceChars(StrUtil.replaceChars(str, "_", "\\_"), "%", "\\%"); - } - - /** - * 获取对象中,非空字段的名字列表。 - * - * @param object 数据对象。 - * @param clazz 数据对象的class类型。 - * @param 数据对象类型。 - * @return 数据对象中,值不为NULL的字段数组。 - */ - public static String[] getNotNullFieldNames(T object, Class clazz) { - Field[] fields = ReflectUtil.getFields(clazz); - List fieldNameList = Arrays.stream(fields) - .filter(f -> ReflectUtil.getFieldValue(object, f) != null) - .map(Field::getName).collect(Collectors.toList()); - if (CollUtil.isNotEmpty(fieldNameList)) { - return fieldNameList.toArray(new String[]{}); - } - return new String[]{}; - } - - /** - * 获取请求头中的设备信息。 - * - * @return 设备类型,具体值可参考AppDeviceType常量类。 - */ - public static int getDeviceType() { - // 缺省都按照Web登录方式设置,如果前端header中的值为不合法值,这里也不会报错,而是使用Web缺省方式。 - int deviceType = AppDeviceType.WEB; - String deviceTypeString = ContextUtil.getHttpRequest().getHeader("deviceType"); - if (StrUtil.isNotBlank(deviceTypeString)) { - Integer type = Integer.valueOf(deviceTypeString); - if (AppDeviceType.isValid(type)) { - deviceType = type; - } - } - return deviceType; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private MyCommonUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyDateUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyDateUtil.java deleted file mode 100644 index 6e7ba0f2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyDateUtil.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.orangeforms.common.core.util; - -import com.orangeforms.common.core.object.Tuple2; -import org.apache.commons.lang3.time.DateUtils; -import org.joda.time.DateTime; -import org.joda.time.Period; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; - -import java.util.Calendar; -import java.util.Date; - -import static org.joda.time.PeriodType.days; - -/** - * 日期工具类,主要封装了部分joda-time中的方法,让很多代码一行完成,同时统一了日期到字符串的pattern格式。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MyDateUtil { - - /** - * 统一的日期pattern,今后可以根据自己的需求去修改。 - */ - public static final String COMMON_DATE_FORMAT = "yyyy-MM-dd"; - /** - * 统一的日期时间pattern,今后可以根据自己的需求去修改。 - */ - public static final String COMMON_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS"; - /** - * 统一的短日期时间pattern,今后可以根据自己的需求去修改。 - */ - public static final String COMMON_SHORT_DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; - /** - * 缺省日期格式化器,提前获取提升运行时效率。 - */ - private static final DateTimeFormatter DATE_PARSE_FORMATTER = - DateTimeFormat.forPattern(MyDateUtil.COMMON_DATE_FORMAT); - /** - * 缺省日期时间格式化器,提前获取提升运行时效率。 - */ - private static final DateTimeFormatter DATETIME_PARSE_FORMATTER = - DateTimeFormat.forPattern(MyDateUtil.COMMON_DATETIME_FORMAT); - - /** - * 缺省短日期时间格式化器,提前获取提升运行时效率。 - */ - private static final DateTimeFormatter DATETIME_SHORT_PARSE_FORMATTER = - DateTimeFormat.forPattern(MyDateUtil.COMMON_SHORT_DATETIME_FORMAT); - - /** - * 获取一天的开始时间的字符串格式,如2019-08-03 00:00:00.000。 - * - * @param dateTime 待格式化的日期时间对象。 - * @return 格式化后的字符串。 - */ - public static String getBeginTimeOfDay(DateTime dateTime) { - return dateTime.withTimeAtStartOfDay().toString(COMMON_DATETIME_FORMAT); - } - - /** - * 获取一天的结束时间的字符串格式,如2019-08-03 23:59:59.999。 - * - * @param dateTime 待格式化的日期时间对象。 - * @return 格式化后的字符串。 - */ - public static String getEndTimeOfDay(DateTime dateTime) { - return dateTime.withTime(23, 59, 59, 999).toString(COMMON_DATETIME_FORMAT); - } - - /** - * 获取一天中的开始时间和结束时间的字符串格式,如2019-08-03 00:00:00.000 和 2019-08-03 23:59:59.999。 - * - * @param dateTime 待格式化的日期时间对象。 - * @return 包含格式后字符串的二元组对象。 - */ - public static Tuple2 getDateTimeRangeOfDay(DateTime dateTime) { - return new Tuple2<>(getBeginTimeOfDay(dateTime), getEndTimeOfDay(dateTime)); - } - - /** - * 获取本月第一天的日期格式。如2019-08-01。 - * - * @param dateTime 待格式化的日期对象。 - * @return 格式化后的字符串。 - */ - public static String getBeginDateOfMonth(DateTime dateTime) { - return dateTime.withDayOfMonth(1).toString(COMMON_DATE_FORMAT); - } - - /** - * 获取本月第一天的日期格式。如2019-08-01。 - * - * @param dateString 待格式化的日期字符串对象。 - * @return 格式化后的字符串。 - */ - public static String getBeginDateOfMonth(String dateString) { - DateTime dateTime = toDate(dateString); - return dateTime.withDayOfMonth(1).toString(COMMON_DATE_FORMAT); - } - - /** - * 计算指定日期距离今天相差的天数。 - * - * @param dateTime 待格式化的日期时间对象。 - * @return 相差天数。 - */ - public static int getDayDiffToNow(DateTime dateTime) { - return new Period(dateTime, new DateTime(), days()).getDays(); - } - - /** - * 将日期对象格式化为缺省的字符串格式。 - * - * @param dateTime 待格式化的日期对象。 - * @return 格式化后的字符串。 - */ - public static String toDateString(DateTime dateTime) { - return dateTime.toString(COMMON_DATE_FORMAT); - } - - /** - * 将日期时间对象格式化为缺省的字符串格式。 - * - * @param dateTime 待格式化的日期对象。 - * @return 格式化后的字符串。 - */ - public static String toDateTimeString(DateTime dateTime) { - return dateTime.toString(COMMON_DATETIME_FORMAT); - } - - /** - * 将缺省格式的日期字符串解析为日期对象。 - * - * @param dateString 待解析的字符串。 - * @return 解析后的日期对象。 - */ - public static DateTime toDate(String dateString) { - return DATE_PARSE_FORMATTER.parseDateTime(dateString); - } - - /** - * 将缺省格式的日期字符串解析为日期对象。 - * - * @param dateTimeString 待解析的字符串。 - * @return 解析后的日期对象。 - */ - public static DateTime toDateTime(String dateTimeString) { - return DATETIME_PARSE_FORMATTER.parseDateTime(dateTimeString); - } - - /** - * 将缺省格式的(不包含毫秒的)日期时间字符串解析为日期对象。 - * - * @param dateTimeString 待解析的字符串。 - * @return 解析后的日期对象。 - */ - public static DateTime toDateTimeWithoutMs(String dateTimeString) { - return DATETIME_SHORT_PARSE_FORMATTER.parseDateTime(dateTimeString); - } - - /** - * 截取时间到天。如2019-10-03 01:20:30 转换为 2019-10-03 00:00:00。 - * 由于没有字符串的中间转换,因此效率更高。 - * - * @param date 待截取日期对象。 - * @return 转换后日期对象。 - */ - public static Date truncateToDay(Date date) { - return DateUtils.truncate(date, Calendar.DAY_OF_MONTH); - } - - /** - * 截取时间到月。如2019-10-03 01:20:30 转换为 2019-10-01 00:00:00。 - * 由于没有字符串的中间转换,因此效率更高。 - * - * @param date 待截取日期对象。 - * @return 转换后日期对象。 - */ - public static Date truncateToMonth(Date date) { - return DateUtils.truncate(date, Calendar.MONTH); - } - - /** - * 截取时间到年。如2019-10-03 01:20:30 转换为 2019-01-01 00:00:00。 - * 由于没有字符串的中间转换,因此效率更高。 - * - * @param date 待截取日期对象。 - * @return 转换后日期对象。 - */ - public static Date truncateToYear(Date date) { - return DateUtils.truncate(date, Calendar.YEAR); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private MyDateUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyModelUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyModelUtil.java deleted file mode 100644 index 7202bacb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyModelUtil.java +++ /dev/null @@ -1,772 +0,0 @@ -package com.orangeforms.common.core.util; - -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.ReflectUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.exception.InvalidDataFieldException; -import com.orangeforms.common.core.annotation.*; -import com.orangeforms.common.core.exception.MyRuntimeException; -import com.orangeforms.common.core.object.TokenData; -import com.orangeforms.common.core.object.Tuple2; -import com.orangeforms.common.core.upload.UploadResponseInfo; -import com.orangeforms.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 java.lang.reflect.Field; -import java.util.*; -import java.util.concurrent.ConcurrentHashMap; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * 负责Model数据操作、类型转换和关系关联等行为的工具类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class MyModelUtil { - - /** - * 数值型字段。 - */ - public static final Integer NUMERIC_FIELD_TYPE = 0; - /** - * 字符型字段。 - */ - public static final Integer STRING_FIELD_TYPE = 1; - /** - * 日期型字段。 - */ - public static final Integer DATE_FIELD_TYPE = 2; - /** - * 整个工程的实体对象中,创建者Id字段的Java对象名。 - */ - public static final String CREATE_USER_ID_FIELD_NAME = "createUserId"; - /** - * 整个工程的实体对象中,创建时间字段的Java对象名。 - */ - public static final String CREATE_TIME_FIELD_NAME = "createTime"; - /** - * 整个工程的实体对象中,更新者Id字段的Java对象名。 - */ - public static final String UPDATE_USER_ID_FIELD_NAME = "updateUserId"; - /** - * 整个工程的实体对象中,更新时间字段的Java对象名。 - */ - public static final String UPDATE_TIME_FIELD_NAME = "updateTime"; - /** - * mapToColumnName和mapToColumnInfo使用的缓存。 - */ - 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 new LinkedList<>(); - } - List> resultList = new LinkedList<>(); - dataList.forEach(data -> resultList.add(BeanUtil.beanToMap(data))); - return resultList; - } - - /** - * 将Map的数据列表转换为Bean列表。 - * - * @param dataList Map数据列表。 - * @param Bean对象类型。 - * @return 转换后的Bean对象列表。 - */ - public static List mapToBeanList(List> dataList, Class clazz) { - if (CollectionUtils.isEmpty(dataList)) { - return new LinkedList<>(); - } - List resultList = new LinkedList<>(); - dataList.forEach(data -> resultList.add(BeanUtil.toBeanIgnoreError(data, clazz))); - return resultList; - } - - /** - * 拷贝源类型的集合数据到目标类型的集合中,其中源类型和目标类型中的对象字段类型完全相同。 - * NOTE: 该函数主要应用于框架中,Dto和Model之间的copy,特别针对一对一关联的深度copy。 - * 在Dto中,一对一对象可以使用Map来表示,而不需要使用从表对象的Dto。 - * - * @param sourceCollection 源类型集合。 - * @param targetClazz 目标类型的Class对象。 - * @param 源类型。 - * @param 目标类型。 - * @return copy后的目标类型对象集合。 - */ - public static List copyCollectionTo(Collection sourceCollection, Class targetClazz) { - if (sourceCollection == null) { - return null; - } - List targetList = new LinkedList<>(); - if (CollectionUtils.isNotEmpty(sourceCollection)) { - for (S source : sourceCollection) { - try { - T target = targetClazz.newInstance(); - BeanUtil.copyProperties(source, target); - targetList.add(target); - } catch (Exception e) { - log.error("Failed to call MyModelUtil.copyCollectionTo", e); - return Collections.emptyList(); - } - } - } - return targetList; - } - - /** - * 拷贝源类型的对象数据到目标类型的对象中,其中源类型和目标类型中的对象字段类型完全相同。 - * NOTE: 该函数主要应用于框架中,Dto和Model之间的copy,特别针对一对一关联的深度copy。 - * 在Dto中,一对一对象可以使用Map来表示,而不需要使用从表对象的Dto。 - * - * @param source 源类型对象。 - * @param targetClazz 目标类型的Class对象。 - * @param 源类型。 - * @param 目标类型。 - * @return copy后的目标类型对象。 - */ - public static T copyTo(S source, Class targetClazz) { - if (source == null) { - return null; - } - try { - T target = targetClazz.newInstance(); - BeanUtil.copyProperties(source, target); - return target; - } catch (Exception e) { - log.error("Failed to call MyModelUtil.copyTo", e); - return null; - } - } - - /** - * 映射Model对象的字段反射对象,获取与该字段对应的数据库列名称。 - * - * @param field 字段反射对象。 - * @param modelClazz Model对象的Class类。 - * @return 该字段所对应的数据表列名称。 - */ - public static String mapToColumnName(Field field, Class modelClazz) { - return mapToColumnName(field.getName(), modelClazz); - } - - /** - * 映射Model对象的字段名称,获取与该字段对应的数据库列名称。 - * - * @param fieldName 字段名称。 - * @param modelClazz Model对象的Class类。 - * @return 该字段所对应的数据表列名称。 - */ - public static String mapToColumnName(String fieldName, Class modelClazz) { - Tuple2 columnInfo = mapToColumnInfo(fieldName, modelClazz); - return columnInfo == null ? null : columnInfo.getFirst(); - } - - /** - * 映射Model对象的字段反射对象,获取与该字段对应的数据库列名称。 - * 如果没有匹配到ColumnName,则立刻抛出异常。 - * - * @param field 字段反射对象。 - * @param modelClazz Model对象的Class类。 - * @return 该字段所对应的数据表列名称。 - */ - public static String safeMapToColumnName(Field field, Class modelClazz) { - return safeMapToColumnName(field.getName(), modelClazz); - } - - /** - * 映射Model对象的字段名称,获取与该字段对应的数据库列名称。 - * 如果没有匹配到ColumnName,则立刻抛出异常。 - * - * @param fieldName 字段名称。 - * @param modelClazz Model对象的Class类。 - * @return 该字段所对应的数据表列名称。 - */ - public static String safeMapToColumnName(String fieldName, Class modelClazz) { - String columnName = mapToColumnName(fieldName, modelClazz); - if (columnName == null) { - throw new InvalidDataFieldException(modelClazz.getSimpleName(), fieldName); - } - return columnName; - } - - /** - * 映射Model对象的字段名称,获取与该字段对应的数据库列名称和字段类型。 - * - * @param fieldName 字段名称。 - * @param modelClazz Model对象的Class类。 - * @return 该字段所对应的数据表列名称和Java字段类型。 - */ - public static Tuple2 mapToColumnInfo(String fieldName, Class modelClazz) { - if (StringUtils.isBlank(fieldName)) { - return null; - } - StringBuilder sb = new StringBuilder(128); - sb.append(modelClazz.getName()).append("-#-").append(fieldName); - Tuple2 columnInfo = CACHED_COLUMNINFO_MAP.get(sb.toString()); - if (columnInfo == null) { - Field field = ReflectUtil.getField(modelClazz, fieldName); - if (field == null) { - return null; - } - 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(); - Integer type = NUMERIC_FIELD_TYPE; - if (String.class.getSimpleName().equals(typeName)) { - type = STRING_FIELD_TYPE; - } else if (Date.class.getSimpleName().equals(typeName)) { - type = DATE_FIELD_TYPE; - } - columnInfo = new Tuple2<>(columnName, type); - CACHED_COLUMNINFO_MAP.put(sb.toString(), columnInfo); - } - return columnInfo; - } - - /** - * 映射Model主对象的Class名称,到Model所对应的表名称。 - * - * @param modelClazz Model主对象的Class。 - * @return Model对象对应的数据表名称。 - */ - public static String mapToTableName(Class modelClazz) { - TableName t = modelClazz.getAnnotation(TableName.class); - return t == null ? null : t.value(); - } - - /** - * 主Model类型中,遍历所有包含RelationConstDict注解的字段,并将关联的静态字典中的数据, - * 填充到thisModel对象的被注解字段中。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModel 主对象。 - * @param 主表对象类型。 - */ - @SuppressWarnings("unchecked") - public static void makeConstDictRelation(Class thisClazz, T thisModel) { - if (thisModel == null) { - return; - } - Field[] fields = ReflectUtil.getFields(thisClazz); - for (Field field : fields) { - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, field.getName()); - RelationConstDict r = thisTargetField.getAnnotation(RelationConstDict.class); - if (r == null) { - continue; - } - Field dictMapField = ReflectUtil.getField(r.constantDictClass(), "DICT_MAP"); - Map dictMap = - (Map) ReflectUtil.getFieldValue(r.constantDictClass(), dictMapField); - Object id = ReflectUtil.getFieldValue(thisModel, r.masterIdField()); - if (id != null) { - String name = dictMap.get(id); - if (name != null) { - Map m = new HashMap<>(2); - m.put("id", id); - m.put("name", name); - ReflectUtil.setFieldValue(thisModel, thisTargetField, m); - } - } - } - } - - /** - * 主Model类型中,遍历所有包含RelationConstDict注解的字段,并将关联的静态字典中的数据, - * 填充到thisModelList集合元素对象的被注解字段中。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param 主表对象类型。 - */ - @SuppressWarnings("unchecked") - public static void makeConstDictRelation(Class thisClazz, List thisModelList) { - if (CollectionUtils.isEmpty(thisModelList)) { - return; - } - Field[] fields = ReflectUtil.getFields(thisClazz); - for (Field field : fields) { - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, field.getName()); - RelationConstDict r = thisTargetField.getAnnotation(RelationConstDict.class); - if (r == null) { - continue; - } - Field dictMapField = ReflectUtil.getField(r.constantDictClass(), "DICT_MAP"); - Map dictMap = - (Map) ReflectUtil.getFieldValue(r.constantDictClass(), dictMapField); - for (T thisModel : thisModelList) { - if (thisModel == null) { - continue; - } - Object id = ReflectUtil.getFieldValue(thisModel, r.masterIdField()); - if (id != null) { - String name = dictMap.get(id); - if (name != null) { - Map m = new HashMap<>(2); - m.put("id", id); - m.put("name", name); - ReflectUtil.setFieldValue(thisModel, thisTargetField, m); - } - } - } - } - } - - /** - * 在主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象thatModel中的数据, - * 关联到thisModel对象的thisRelationField字段中。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModel 主对象。 - * @param thatModel 字典关联对象。 - * @param thisRelationField 主表对象中保存被关联对象的字段名称。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeDictRelation( - Class thisClazz, T thisModel, R thatModel, String thisRelationField) { - if (thatModel == null || thisModel == null) { - return; - } - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField); - RelationDict r = thisTargetField.getAnnotation(RelationDict.class); - Class thatClass = r.slaveModelClass(); - Field slaveIdField = ReflectUtil.getField(thatClass, r.slaveIdField()); - Field slaveNameField = ReflectUtil.getField(thatClass, r.slaveNameField()); - Map m = new HashMap<>(2); - m.put("id", ReflectUtil.getFieldValue(thatModel, slaveIdField)); - m.put("name", ReflectUtil.getFieldValue(thatModel, slaveNameField)); - ReflectUtil.setFieldValue(thisModel, thisTargetField, m); - } - - /** - * 在主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象集合thatModelList中的数据, - * 逐个关联到thisModelList每一个元素的thisRelationField字段中。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param thatModelList 字典关联对象列表集合。 - * @param thisRelationField 主表对象中保存被关联对象的字段名称。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeDictRelation( - Class thisClazz, List thisModelList, List thatModelList, String thisRelationField) { - if (CollectionUtils.isEmpty(thatModelList) - || CollectionUtils.isEmpty(thisModelList)) { - return; - } - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField); - RelationDict r = thisTargetField.getAnnotation(RelationDict.class); - Field masterIdField = ReflectUtil.getField(thisClazz, r.masterIdField()); - Class thatClass = r.slaveModelClass(); - Field slaveIdField = ReflectUtil.getField(thatClass, r.slaveIdField()); - Field slaveNameField = ReflectUtil.getField(thatClass, r.slaveNameField()); - Map thatMap = new HashMap<>(20); - thatModelList.forEach(thatModel -> { - Object id = ReflectUtil.getFieldValue(thatModel, slaveIdField); - thatMap.put(id, thatModel); - }); - thisModelList.forEach(thisModel -> { - if (thisModel != null) { - Object id = ReflectUtil.getFieldValue(thisModel, masterIdField); - R thatModel = thatMap.get(id); - if (thatModel != null) { - Map m = new HashMap<>(4); - m.put("id", id); - m.put("name", ReflectUtil.getFieldValue(thatModel, slaveNameField)); - ReflectUtil.setFieldValue(thisModel, thisTargetField, m); - } - } - }); - } - - /** - * 在主Model类型中,根据thisRelationField字段的RelationDict注解参数,将被关联对象集合thatModelMap中的数据, - * 逐个关联到thisModelList每一个元素的thisRelationField字段中。 - * 该函数之所以使用Map,主要出于性能优化考虑,在连续使用thatModelMap进行关联时,有效的避免了从多次从List转换到Map的过程。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param thatMadelMap 字典关联对象映射集合。 - * @param thisRelationField 主表对象中保存被关联对象的字段名称。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeDictRelation( - Class thisClazz, List thisModelList, Map thatMadelMap, String thisRelationField) { - if (MapUtils.isEmpty(thatMadelMap) - || CollectionUtils.isEmpty(thisModelList)) { - return; - } - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField); - RelationDict r = thisTargetField.getAnnotation(RelationDict.class); - Field masterIdField = ReflectUtil.getField(thisClazz, r.masterIdField()); - Class thatClass = r.slaveModelClass(); - Field slaveNameField = ReflectUtil.getField(thatClass, r.slaveNameField()); - thisModelList.forEach(thisModel -> { - if (thisModel != null) { - Object id = ReflectUtil.getFieldValue(thisModel, masterIdField); - R thatModel = thatMadelMap.get(id); - if (thatModel != null) { - Map m = new HashMap<>(4); - m.put("id", id); - m.put("name", ReflectUtil.getFieldValue(thatModel, slaveNameField)); - ReflectUtil.setFieldValue(thisModel, thisTargetField, m); - } - } - }); - } - - /** - * 在主Model类型中,根据thisRelationField字段的RelationOneToOne注解参数,将被关联对象列表thatModelList中的数据, - * 逐个关联到thisModelList每一个元素的thisRelationField字段中。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param thatModelList 一对一关联对象列表。 - * @param thisRelationField 主表对象中保存被关联对象的字段名称。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeOneToOneRelation( - Class thisClazz, List thisModelList, List thatModelList, String thisRelationField) { - if (CollectionUtils.isEmpty(thatModelList) - || CollectionUtils.isEmpty(thisModelList)) { - return; - } - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField); - RelationOneToOne r = thisTargetField.getAnnotation(RelationOneToOne.class); - Field masterIdField = ReflectUtil.getField(thisClazz, r.masterIdField()); - Class thatClass = r.slaveModelClass(); - Field slaveIdField = ReflectUtil.getField(thatClass, r.slaveIdField()); - Map thatMap = new HashMap<>(20); - thatModelList.forEach(thatModel -> { - Object id = ReflectUtil.getFieldValue(thatModel, slaveIdField); - thatMap.put(id, thatModel); - }); - // 判断放在循环的外部,提升一点儿效率。 - if (thisTargetField.getType().equals(Map.class)) { - thisModelList.forEach(thisModel -> { - Object id = ReflectUtil.getFieldValue(thisModel, masterIdField); - R thatModel = thatMap.get(id); - if (thatModel != null) { - ReflectUtil.setFieldValue(thisModel, thisTargetField, BeanUtil.beanToMap(thatModel)); - } - }); - } else { - thisModelList.forEach(thisModel -> { - Object id = ReflectUtil.getFieldValue(thisModel, masterIdField); - R thatModel = thatMap.get(id); - if (thatModel != null) { - ReflectUtil.setFieldValue(thisModel, thisTargetField, thatModel); - } - }); - } - } - - /** - * 根据主对象和关联对象各自的关联Id函数,将主对象列表和关联对象列表中的数据关联到一起,并将关联对象 - * 设置到主对象的指定关联字段中。 - * NOTE: 用于主对象关联字段中,没有包含RelationOneToOne注解的场景。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param thisIdGetterFunc 主对象Id的Getter函数。 - * @param thatModelList 关联对象列表。 - * @param thatIdGetterFunc 关联对象Id的Getter函数。 - * @param thisRelationField 主对象中保存被关联对象的字段名称。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeOneToOneRelation( - Class thisClazz, - List thisModelList, - Function thisIdGetterFunc, - List thatModelList, - Function thatIdGetterFunc, - String thisRelationField) { - makeOneToOneRelation(thisClazz, thisModelList, - thisIdGetterFunc, thatModelList, thatIdGetterFunc, thisRelationField, false); - } - - /** - * 根据主对象和关联对象各自的关联Id函数,将主对象列表和关联对象列表中的数据关联到一起,并将关联对象 - * 设置到主对象的指定关联字段中。 - * NOTE: 用于主对象关联字段中,没有包含RelationOneToOne注解的场景。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param thisIdGetterFunc 主对象Id的Getter函数。 - * @param thatModelList 关联对象列表。 - * @param thatIdGetterFunc 关联对象Id的Getter函数。 - * @param thisRelationField 主对象中保存被关联对象的字段名称。 - * @param orderByThatList 如果为true,则按照ThatModelList的顺序输出。同时thisModelList被排序后的新列表替换。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeOneToOneRelation( - Class thisClazz, - List thisModelList, - Function thisIdGetterFunc, - List thatModelList, - Function thatIdGetterFunc, - String thisRelationField, - boolean orderByThatList) { - if (CollectionUtils.isEmpty(thisModelList)) { - return; - } - Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField); - boolean isMap = thisTargetField.getType().equals(Map.class); - if (orderByThatList) { - List newThisModelList = new LinkedList<>(); - Map thisModelMap = - thisModelList.stream().collect(Collectors.toMap(thisIdGetterFunc, c -> c)); - thatModelList.forEach(thatModel -> { - Object thatId = thatIdGetterFunc.apply(thatModel); - T thisModel = thisModelMap.get(thatId); - if (thisModel != null) { - ReflectUtil.setFieldValue(thisModel, thisTargetField, normalize(isMap, thatModel)); - newThisModelList.add(thisModel); - } - }); - thisModelList.clear(); - thisModelList.addAll(newThisModelList); - } else { - Map thatMadelMap = - thatModelList.stream().collect(Collectors.toMap(thatIdGetterFunc, c -> c)); - thisModelList.forEach(thisModel -> { - Object thisId = thisIdGetterFunc.apply(thisModel); - R thatModel = thatMadelMap.get(thisId); - if (thatModel != null) { - ReflectUtil.setFieldValue(thisModel, thisTargetField, normalize(isMap, thatModel)); - } - }); - } - } - - /** - * 在主Model类型中,根据thisRelationField字段的RelationOneToMany注解参数,将被关联对象列表thatModelList中的数据, - * 逐个关联到thisModelList每一个元素的thisRelationField字段中。 - * - * @param thisClazz 主对象的Class对象。 - * @param thisModelList 主对象列表。 - * @param thatModelList 一对多关联对象列表。 - * @param thisRelationField 主表对象中保存被关联对象的字段名称。 - * @param 主表对象类型。 - * @param 从表对象类型。 - */ - public static void makeOneToManyRelation( - Class thisClazz, List thisModelList, List thatModelList, String thisRelationField) { - if (CollectionUtils.isEmpty(thatModelList) || CollectionUtils.isEmpty(thisModelList)) { - return; - } - // 这里不做任何空值判断,从而让配置错误在调试期间即可抛出 - Field thisTargetField = ReflectUtil.getField(thisClazz, thisRelationField); - RelationOneToMany r = thisTargetField.getAnnotation(RelationOneToMany.class); - Field masterIdField = ReflectUtil.getField(thisClazz, r.masterIdField()); - Class thatClass = r.slaveModelClass(); - Field slaveIdField = ReflectUtil.getField(thatClass, r.slaveIdField()); - Map> thatMap = new HashMap<>(20); - thatModelList.forEach(thatModel -> { - Object id = ReflectUtil.getFieldValue(thatModel, slaveIdField); - List thatModelSubList = thatMap.computeIfAbsent(id, k -> new LinkedList<>()); - thatModelSubList.add(thatModel); - }); - thisModelList.forEach(thisModel -> { - Object id = ReflectUtil.getFieldValue(thisModel, masterIdField); - List thatModel = thatMap.get(id); - if (thatModel != null) { - ReflectUtil.setFieldValue(thisModel, thisTargetField, thatModel); - } - }); - } - - private static Object normalize(boolean isMap, M model) { - return isMap ? BeanUtil.beanToMap(model) : model; - } - - /** - * 获取上传字段的存储信息。 - * - * @param modelClass model的class对象。 - * @param uploadFieldName 上传字段名。 - * @param model的类型。 - * @return 字段的上传存储信息对象。该值始终不会返回null。 - */ - public static UploadStoreInfo getUploadStoreInfo(Class modelClass, String uploadFieldName) { - UploadStoreInfo uploadStoreInfo = new UploadStoreInfo(); - Field uploadField = ReflectUtil.getField(modelClass, uploadFieldName); - if (uploadField == null) { - throw new UnsupportedOperationException("The Field [" - + uploadFieldName + "] doesn't exist in Model [" + modelClass.getSimpleName() + "]."); - } - uploadStoreInfo.setSupportUpload(false); - UploadFlagColumn anno = uploadField.getAnnotation(UploadFlagColumn.class); - if (anno != null) { - uploadStoreInfo.setSupportUpload(true); - uploadStoreInfo.setStoreType(anno.storeType()); - } - return uploadStoreInfo; - } - - /** - * 在插入实体对象数据之前,可以调用该方法,初始化通用字段的数据。 - * - * @param data 实体对象。 - * @param 实体对象类型。 - */ - public static void fillCommonsForInsert(M data) { - try { - Field createdByField = ReflectUtil.getField(data.getClass(), CREATE_USER_ID_FIELD_NAME); - if (createdByField != null) { - ReflectUtil.setAccessible(createdByField); - createdByField.set(data, TokenData.takeFromRequest().getUserId()); - } - Field createTimeField = ReflectUtil.getField(data.getClass(), CREATE_TIME_FIELD_NAME); - if (createTimeField != null) { - ReflectUtil.setAccessible(createTimeField); - createTimeField.set(data, new Date()); - } - Field updatedByField = ReflectUtil.getField(data.getClass(), UPDATE_USER_ID_FIELD_NAME); - if (updatedByField != null) { - ReflectUtil.setAccessible(updatedByField); - updatedByField.set(data, TokenData.takeFromRequest().getUserId()); - } - Field updateTimeField = ReflectUtil.getField(data.getClass(), UPDATE_TIME_FIELD_NAME); - if (updateTimeField != null) { - ReflectUtil.setAccessible(updateTimeField); - updateTimeField.set(data, new Date()); - } - } catch (IllegalAccessException e) { - throw new MyRuntimeException(e); - } - } - - /** - * 在更新实体对象数据之前,可以调用该方法,更新通用字段的数据。 - * - * @param data 实体对象。 - * @param originalData 原有实体对象。 - * @param 实体对象类型。 - */ - public static void fillCommonsForUpdate(M data, M originalData) { - try { - Object createdByValue = ReflectUtil.getFieldValue(originalData, CREATE_USER_ID_FIELD_NAME); - if (createdByValue != null) { - ReflectUtil.setFieldValue(data, CREATE_USER_ID_FIELD_NAME, createdByValue); - } - Object createTimeValue = ReflectUtil.getFieldValue(originalData, CREATE_TIME_FIELD_NAME); - if (createTimeValue != null) { - ReflectUtil.setFieldValue(data, CREATE_TIME_FIELD_NAME, createTimeValue); - } - Field updatedByField = ReflectUtil.getField(data.getClass(), UPDATE_USER_ID_FIELD_NAME); - if (updatedByField != null) { - ReflectUtil.setAccessible(updatedByField); - updatedByField.set(data, TokenData.takeFromRequest().getUserId()); - } - Field updateTimeField = ReflectUtil.getField(data.getClass(), UPDATE_TIME_FIELD_NAME); - if (updateTimeField != null) { - ReflectUtil.setAccessible(updateTimeField); - updateTimeField.set(data, new Date()); - } - } catch (IllegalAccessException e) { - throw new MyRuntimeException(e); - } - } - - /** - * 为实体对象字段设置缺省值。如果data对象中指定字段的值为NULL,则设置缺省值,否则跳过。 - * @param data 实体对象。 - * @param fieldName 实体对象字段名。 - * @param defaultValue 缺省值。 - * @param 实体对象类型。 - * @param 缺省值类型。 - */ - public static void setDefaultValue(M data, String fieldName, V defaultValue) { - Object v = ReflectUtil.getFieldValue(data, fieldName); - if (v == null) { - ReflectUtil.setFieldValue(data, fieldName, defaultValue); - } - } - - /** - * 获取当前数据对象中,所有上传文件字段的数据,并将上传后的文件名存到集合中并返回。 - * - * @param data 数据对象。 - * @param clazz 数据对象的Class类型。 - * @param 数据对象类型。 - * @return 当前数据对象中,所有上传文件字段中,文件名属性的集合。 - */ - public static Set extractDownloadFileName(M data, Class clazz) { - Set resultSet = new HashSet<>(); - Field[] fields = ReflectUtil.getFields(clazz); - for (Field field : fields) { - if (field.isAnnotationPresent(UploadFlagColumn.class)) { - String v = (String) ReflectUtil.getFieldValue(data, field); - List fileInfoList = JSON.parseArray(v, UploadResponseInfo.class); - if (CollectionUtils.isNotEmpty(fileInfoList)) { - fileInfoList.forEach(fileInfo -> resultSet.add(fileInfo.getFilename())); - } - } - } - return resultSet; - } - - /** - * 获取当前数据对象列表中,所有上传文件字段的数据,并将上传后的文件名存到集合中并返回。 - * - * @param dataList 数据对象。 - * @param clazz 数据对象的Class类型。 - * @param 数据对象类型。 - * @return 当前数据对象中,所有上传文件字段中,文件名属性的集合。 - */ - public static Set extractDownloadFileName(List dataList, Class clazz) { - Set resultSet = new HashSet<>(); - if (CollectionUtils.isEmpty(dataList)) { - return resultSet; - } - dataList.forEach(data -> resultSet.addAll(extractDownloadFileName(data, clazz))); - return resultSet; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private MyModelUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyPageUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyPageUtil.java deleted file mode 100644 index 9b85b390..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/MyPageUtil.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.orangeforms.common.core.util; - -import cn.jimmyshi.beanquery.BeanQuery; -import com.alibaba.fastjson.JSONObject; -import com.github.pagehelper.Page; -import org.apache.commons.collections4.CollectionUtils; -import com.orangeforms.common.core.base.mapper.BaseModelMapper; -import com.orangeforms.common.core.object.MyPageData; -import com.orangeforms.common.core.object.Tuple2; - -import java.util.List; - -/** - * 生成带有分页信息的数据列表 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MyPageUtil { - - private static final String DATA_LIST_LITERAL = "dataList"; - private static final String TOTAL_COUNT_LITERAL = "totalCount"; - - /** - * 用户构建带有分页信息的数据列表。 - * - * @param dataList 数据列表,该参数必须是调用PageMethod.startPage之后,立即执行mybatis查询操作的结果集。 - * @param includeFields 结果集中需要返回到前端的字段,多个字段之间逗号分隔。 - * @return 返回只是包含includeFields字段的数据列表,以及结果集TotalCount。 - */ - public static JSONObject makeResponseData(List dataList, String includeFields) { - JSONObject pageData = new JSONObject(); - pageData.put(DATA_LIST_LITERAL, BeanQuery.select(includeFields).from(dataList).execute()); - if (dataList instanceof Page) { - pageData.put(TOTAL_COUNT_LITERAL, ((Page)dataList).getTotal()); - } - return pageData; - } - - /** - * 用户构建带有分页信息的数据列表。 - * - * @param dataList 数据列表,该参数必须是调用PageMethod.startPage之后,立即执行mybatis查询操作的结果集。 - * @return 返回分页数据对象。 - */ - public static MyPageData makeResponseData(List dataList) { - MyPageData pageData = new MyPageData<>(); - pageData.setDataList(dataList); - if (dataList instanceof Page) { - pageData.setTotalCount(((Page)dataList).getTotal()); - } - return pageData; - } - - /** - * 用户构建带有分页信息的数据列表。 - * - * @param dataList 数据列表,该参数必须是调用PageMethod.startPage之后,立即执行mybatis查询操作的结果集。 - * @param totalCount 总数量。 - * @return 返回分页数据对象。 - */ - public static MyPageData makeResponseData(List dataList, Long totalCount) { - MyPageData pageData = new MyPageData<>(); - pageData.setDataList(dataList); - if (totalCount != null) { - pageData.setTotalCount(totalCount); - } - return pageData; - } - - /** - * 用户构建带有分页信息的数据列表。 - * - * @param dataList 实体对象数据列表。 - * @param modelMapper 实体对象到DomainVO对象的数据映射器。 - * @param DomainVO对象类型。 - * @param 实体对象类型。 - * @return 返回分页数据对象。 - */ - public static MyPageData makeResponseData(List dataList, BaseModelMapper modelMapper) { - long totalCount = 0L; - if (CollectionUtils.isEmpty(dataList)) { - // 这里需要构建分页数据对象,统一前端数据格式 - return MyPageData.emptyPageData(); - } - if (dataList instanceof Page) { - totalCount = ((Page) dataList).getTotal(); - } - return MyPageUtil.makeResponseData(modelMapper.fromModelList(dataList), totalCount); - } - - /** - * 用户构建带有分页信息的数据列表。 - * - * @param responseData 第一个数据时数据列表,第二个是列表数量。 - * @param 源数据类型。 - * @return 返回分页数据对象。 - */ - public static MyPageData makeResponseData(Tuple2, Long> responseData) { - return makeResponseData(responseData.getFirst(), responseData.getSecond()); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private MyPageUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RedisKeyUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RedisKeyUtil.java deleted file mode 100644 index fd766466..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RedisKeyUtil.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.orangeforms.common.core.util; - -/** - * Redis 键生成工具类。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class RedisKeyUtil { - - /** - * 获取通用的session缓存的键前缀。 - * - * @return session缓存的键前缀。 - */ - public static String getSessionIdPrefix() { - return "SESSIONID:"; - } - - /** - * 获取指定用户Id的session缓存的键前缀。 - * - * @param loginName 指定的用户登录名。 - * @return session缓存的键前缀。 - */ - public static String getSessionIdPrefix(String loginName) { - return "SESSIONID:" + loginName + "_"; - } - - /** - * 获取指定用户Id和登录设备类型的session缓存的键前缀。 - * - * @param loginName 指定的用户登录名。 - * @param deviceType 设备类型。 - * @return session缓存的键前缀。 - */ - public static String getSessionIdPrefix(String loginName, int deviceType) { - return "SESSIONID:" + loginName + "_" + deviceType + "_"; - } - - /** - * 计算SessionId返回存储于Redis中的键。 - * - * @param sessionId 会话Id。 - * @return 会话存储于Redis中的键值。 - */ - public static String makeSessionIdKey(String sessionId) { - return "SESSIONID:" + sessionId; - } - - /** - * 计算SessionId关联的权限数据存储于Redis中的键。 - * - * @param sessionId 会话Id。 - * @return 会话关联的权限数据存储于Redis中的键值。 - */ - public static String makeSessionPermIdKey(String sessionId) { - return "PERM:" + sessionId; - } - - /** - * 计算SessionId关联的数据权限数据存储于Redis中的键。 - * - * @param sessionId 会话Id。 - * @return 会话关联的数据权限数据存储于Redis中的键值。 - */ - public static String makeSessionDataPermIdKey(String sessionId) { - return "DATA_PERM:" + sessionId; - } - - /** - * 计算在线表对象缓存在Redis中的键值。 - * - * @param tableId 在线表主键Id。 - * @return 会话关联的数据权限数据存储于Redis中的键值。 - */ - public static String makeOnlineTableKey(Long tableId) { - return "ONLINE_TABLE:" + tableId; - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private RedisKeyUtil() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RsaUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RsaUtil.java deleted file mode 100644 index f952ea9a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/RsaUtil.java +++ /dev/null @@ -1,115 +0,0 @@ -package com.orangeforms.common.core.util; - -import javax.crypto.Cipher; -import java.nio.charset.StandardCharsets; -import java.security.*; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.security.spec.PKCS8EncodedKeySpec; -import java.security.spec.X509EncodedKeySpec; -import java.util.Base64; -import java.util.HashMap; -import java.util.Map; - -/** - * Java RSA 加密工具类。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class RsaUtil { - - /** - * 密钥长度 于原文长度对应 以及越长速度越慢 - */ - private static final int KEY_SIZE = 1024; - /** - * 用于封装随机产生的公钥与私钥 - */ - private static final Map KEY_MAP = new HashMap<>(); - - /** - * 随机生成密钥对。 - */ - public static void genKeyPair() throws NoSuchAlgorithmException { - // KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象 - KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA"); - // 初始化密钥对生成器 - keyPairGen.initialize(KEY_SIZE, new SecureRandom()); - // 生成一个密钥对,保存在keyPair中 - KeyPair keyPair = keyPairGen.generateKeyPair(); - // 得到私钥 - RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate(); - // 得到公钥 - RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); - String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded()); - // 得到私钥字符串 - String privateKeyString = Base64.getEncoder().encodeToString(privateKey.getEncoded()); - // 将公钥和私钥保存到Map - // 0表示公钥 - KEY_MAP.put(0, publicKeyString); - // 1表示私钥 - KEY_MAP.put(1, privateKeyString); - } - - /** - * RSA公钥加密。 - * - * @param str 加密字符串 - * @param publicKey 公钥 - * @return 密文 - * @throws Exception 加密过程中的异常信息 - */ - public static String encrypt(String str, String publicKey) throws Exception { - // base64编码的公钥 - byte[] decoded = Base64.getDecoder().decode(publicKey); - RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded)); - // RSA加密。后面这个更安全,但是SonarQube始终report安全漏洞。"RSA/ECB/PKCS1Padding" - // 而浏览器自带的Javascript加密功能,目前safari不支持,而且用的人也不太多。所以暂时都不考虑了。 - Cipher cipher = Cipher.getInstance("RSA"); - cipher.init(Cipher.ENCRYPT_MODE, pubKey); - return Base64.getEncoder().encodeToString(cipher.doFinal(str.getBytes(StandardCharsets.UTF_8))); - } - - /** - * RSA私钥解密。 - * - * @param str 加密字符串 - * @param privateKey 私钥 - * @return 明文 - * @throws Exception 解密过程中的异常信息 - */ - public static String decrypt(String str, String privateKey) throws Exception { - // 64位解码加密后的字符串 - byte[] inputByte = Base64.getDecoder().decode(str); - // base64编码的私钥 - byte[] decoded = Base64.getDecoder().decode(privateKey); - RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded)); - // RSA解密 - Cipher cipher = Cipher.getInstance("RSA"); - cipher.init(Cipher.DECRYPT_MODE, priKey); - return new String(cipher.doFinal(inputByte)); - } - - public static void main(String[] args) throws Exception { - long temp = System.currentTimeMillis(); - // 生成公钥和私钥 - genKeyPair(); - // 加密字符串 - System.out.println("公钥:" + KEY_MAP.get(0)); - System.out.println("私钥:" + KEY_MAP.get(1)); - System.out.println("生成密钥消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒"); - System.out.println("生成后的公钥前端使用!"); - System.out.println("生成后的私钥后台使用!"); - String message = "RSA测试ABCD~!@#$"; - System.out.println("原文:" + message); - temp = System.currentTimeMillis(); - String messageEn = encrypt(message, KEY_MAP.get(0)); - System.out.println("密文:" + messageEn); - System.out.println("加密消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒"); - temp = System.currentTimeMillis(); - String messageDe = decrypt(messageEn, KEY_MAP.get(1)); - System.out.println("解密:" + messageDe); - System.out.println("解密消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒"); - } -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/TreeNode.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/TreeNode.java deleted file mode 100644 index deab5c92..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/util/TreeNode.java +++ /dev/null @@ -1,93 +0,0 @@ -package com.orangeforms.common.core.util; - -import lombok.Data; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -/** - * 将列表结构组建为树结构的工具类。 - * - * @param 对象类型。 - * @param 节点之间关联键的类型。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -public class TreeNode { - - private K id; - private K parentId; - private T data; - private List> childList = new ArrayList<>(); - - /** - * 将列表结构组建为树结构的工具方法。 - * - * @param dataList 数据列表结构。 - * @param idFunc 获取关联id的函数对象。 - * @param parentIdFunc 获取关联ParentId的函数对象。 - * @param root 根节点。 - * @param 数据对象类型。 - * @param 节点之间关联键的类型。 - * @return 源数据对象的树结构存储。 - */ - public static List> build( - List dataList, Function idFunc, Function parentIdFunc, K root) { - List> treeNodeList = new ArrayList<>(); - for (T data : dataList) { - if (parentIdFunc.apply(data).equals(idFunc.apply(data))) { - continue; - } - TreeNode dataNode = new TreeNode<>(); - dataNode.setId(idFunc.apply(data)); - dataNode.setParentId(parentIdFunc.apply(data)); - dataNode.setData(data); - treeNodeList.add(dataNode); - } - return root == null ? toBuildTreeWithoutRoot(treeNodeList) : toBuildTree(treeNodeList, root); - } - - private static List> toBuildTreeWithoutRoot(List> treeNodes) { - Map> treeNodeMap = new HashMap<>(treeNodes.size()); - for (TreeNode treeNode : treeNodes) { - treeNodeMap.put(treeNode.id, treeNode); - } - List> treeNodeList = new ArrayList<>(); - for (TreeNode treeNode : treeNodes) { - TreeNode parentNode = treeNodeMap.get(treeNode.getParentId()); - if (parentNode == null) { - treeNodeList.add(treeNode); - } else { - parentNode.add(treeNode); - } - } - return treeNodeList; - } - - private static List> toBuildTree(List> treeNodes, K root) { - List> treeNodeList = new ArrayList<>(); - for (TreeNode treeNode : treeNodes) { - if (root.equals(treeNode.getParentId())) { - treeNodeList.add(treeNode); - } - for (TreeNode it : treeNodes) { - if (it.getParentId() == treeNode.getId()) { - if (treeNode.getChildList() == null) { - treeNode.setChildList(new ArrayList<>()); - } - treeNode.add(it); - } - } - } - return treeNodeList; - } - - private void add(TreeNode node) { - childList.add(node); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/AddGroup.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/AddGroup.java deleted file mode 100644 index 08826a55..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/AddGroup.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.orangeforms.common.core.validator; - -/** - * 数据增加的验证分组。通常用于数据新增场景。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface AddGroup { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictRef.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictRef.java deleted file mode 100644 index 5503f7cb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictRef.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.orangeforms.common.core.validator; - -import javax.validation.Constraint; -import javax.validation.Payload; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 定义在Model对象中,标注字段值引用自指定的常量字典,和ConstDictRefValidator对象配合完成数据验证。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Constraint(validatedBy = ConstDictValidator.class) -public @interface ConstDictRef { - - /** - * 引用的常量字典对象,该对象必须包含isValid的静态方法。 - * - * @return 最大长度。 - */ - Class constDictClass(); - - /** - * 超过边界后的错误消息提示。 - * - * @return 错误提示。 - */ - String message() default "无效的字典引用值!"; - - /** - * 验证分组。 - * - * @return 验证分组。 - */ - Class[] groups() default {}; - - /** - * 载荷对象类型。 - * - * @return 载荷对象。 - */ - Class[] payload() default {}; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictValidator.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictValidator.java deleted file mode 100644 index 36e7302c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/ConstDictValidator.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.common.core.validator; - -import cn.hutool.core.util.ReflectUtil; - -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; -import java.lang.reflect.Method; - -/** - * 数据字段自定义验证,用于验证Model中字符串字段的最大长度和最小长度。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class ConstDictValidator implements ConstraintValidator { - - private ConstDictRef constDictRef; - - @Override - public void initialize(ConstDictRef constDictRef) { - this.constDictRef = constDictRef; - } - - @Override - public boolean isValid(Object s, ConstraintValidatorContext constraintValidatorContext) { - if (s == null) { - return true; - } - Method method = - ReflectUtil.getMethodByName(constDictRef.constDictClass(), "isValid"); - return ReflectUtil.invokeStatic(method, s); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLength.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLength.java deleted file mode 100644 index e9771f65..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLength.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.orangeforms.common.core.validator; - -import javax.validation.Constraint; -import javax.validation.Payload; -import java.lang.annotation.ElementType; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; -import java.lang.annotation.Target; - -/** - * 定义在Model或Dto对象中,UTF-8编码的字符串字段长度的上限和下限,和TextLengthValidator对象配合完成数据验证。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.FIELD}) -@Retention(RetentionPolicy.RUNTIME) -@Constraint(validatedBy = TextLengthValidator.class) -public @interface TextLength { - - /** - * 字符串字段的最小长度。 - * - * @return 最小长度。 - */ - int min() default 0; - - /** - * 字符串字段的最大长度。 - * - * @return 最大长度。 - */ - int max() default Integer.MAX_VALUE; - - /** - * 超过边界后的错误消息提示。 - * - * @return 错误提示。 - */ - String message() default "字段长度超过最大字节数!"; - - /** - * 验证分组。 - * - * @return 验证分组。 - */ - Class[] groups() default { }; - - /** - * 载荷对象类型。 - * - * @return 载荷对象。 - */ - Class[] payload() default { }; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLengthValidator.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLengthValidator.java deleted file mode 100644 index 4f1ab427..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/TextLengthValidator.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.orangeforms.common.core.validator; - -import org.apache.commons.lang3.CharUtils; - -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; - -/** - * 数据字段自定义验证,用于验证Model中UTF-8编码的字符串字段的最大长度和最小长度。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class TextLengthValidator implements ConstraintValidator { - - private TextLength textLength; - - @Override - public void initialize(TextLength textLength) { - this.textLength = textLength; - } - - @Override - public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { - if (s == null) { - return true; - } - int length = 0; - for (int i = 0; i < s.length(); i++) { - char c = s.charAt(i); - if (CharUtils.isAscii(c)) { - ++length; - } else { - length += 2; - } - } - return length >= textLength.min() && length <= textLength.max(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/UpdateGroup.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/UpdateGroup.java deleted file mode 100644 index 6e587f32..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-core/src/main/java/com/orangeforms/common/core/validator/UpdateGroup.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.orangeforms.common.core.validator; - -/** - * 数据修改的验证分组。通常用于数据更新的场景。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface UpdateGroup { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/pom.xml deleted file mode 100644 index e791d2f7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - common - com.orangeforms - 1.0.0 - - 4.0.0 - - common-datafilter - 1.0.0 - common-datafilter - jar - - - - com.orangeforms - common-core - 1.0.0 - - - com.orangeforms - common-redis - 1.0.0 - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/aop/DisableDataFilterAspect.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/aop/DisableDataFilterAspect.java deleted file mode 100644 index f2bf2b9d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/aop/DisableDataFilterAspect.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.orangeforms.common.datafilter.aop; - -import com.orangeforms.common.core.object.GlobalThreadLocal; -import lombok.extern.slf4j.Slf4j; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -/** - * 禁用Mybatis拦截器数据过滤的AOP处理类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Aspect -@Component -@Order(1) -@Slf4j -public class DisableDataFilterAspect { - - /** - * 所有标记了DisableDataFilter注解的方法。 - */ - @Pointcut("@annotation(com.orangeforms.common.core.annotation.DisableDataFilter)") - public void disableDataFilterPointCut() { - // 空注释,避免sonar警告 - } - - @Around("disableDataFilterPointCut()") - public Object around(ProceedingJoinPoint point) throws Throwable { - boolean dataFilterEnabled = GlobalThreadLocal.setDataFilter(false); - try { - return point.proceed(); - } finally { - GlobalThreadLocal.setDataFilter(dataFilterEnabled); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterAutoConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterAutoConfig.java deleted file mode 100644 index 3affce81..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterAutoConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.common.datafilter.config; - -import org.springframework.boot.context.properties.EnableConfigurationProperties; - -/** - * common-datafilter模块的自动配置引导类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@EnableConfigurationProperties({DataFilterProperties.class}) -public class DataFilterAutoConfig { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterProperties.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterProperties.java deleted file mode 100644 index cd8dfbd7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterProperties.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.orangeforms.common.datafilter.config; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * common-datafilter模块的配置类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ConfigurationProperties(prefix = "datafilter") -public class DataFilterProperties { - - /** - * 是否启用租户过滤。 - */ - @Value("${datafilter.tenant.enabled:false}") - private Boolean enabledTenantFilter; - - /** - * 是否启动数据权限过滤。 - */ - @Value("${datafilter.dataperm.enabled:false}") - private Boolean enabledDataPermFilter; - - /** - * 部门关联表的表名前缀,如zz_。该值主要用在MybatisDataFilterInterceptor拦截器中, - * 用于拼接数据权限过滤的SQL语句。 - */ - @Value("${datafilter.dataperm.deptRelationTablePrefix:}") - private String deptRelationTablePrefix; - - /** - * 该值为true的时候,在进行数据权限过滤时,会加上表名,如:zz_sys_user.dept_id = xxx。 - * 为false时,过滤条件不加表名,只是使用字段名,如:dept_id = xxx。该值目前主要适用于 - * Oracle分页SQL使用了子查询的场景。此场景下,由于子查询使用了别名,再在数据权限过滤条件中 - * 加上原有表名时,SQL语法会报错。 - */ - @Value("${datafilter.dataperm.addTableNamePrefix:true}") - private Boolean addTableNamePrefix; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterWebMvcConfigurer.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterWebMvcConfigurer.java deleted file mode 100644 index 3b4ce02f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/config/DataFilterWebMvcConfigurer.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.orangeforms.common.datafilter.config; - -import com.orangeforms.common.datafilter.interceptor.DataFilterInterceptor; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.InterceptorRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -/** - * 添加数据过滤相关的拦截器。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -public class DataFilterWebMvcConfigurer implements WebMvcConfigurer { - - @Override - public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new DataFilterInterceptor()).addPathPatterns("/**"); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/constant/DataPermRuleType.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/constant/DataPermRuleType.java deleted file mode 100644 index c4026de1..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/constant/DataPermRuleType.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.orangeforms.common.datafilter.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 数据权限规则类型常量类。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class DataPermRuleType { - - /** - * 查看全部。 - */ - public static final int TYPE_ALL = 0; - - /** - * 仅查看当前用户 - */ - public static final int TYPE_USER_ONLY = 1; - - /** - * 仅查看当前部门 - */ - public static final int TYPE_DEPT_ONLY = 2; - - /** - * 所在部门及子部门 - */ - public static final int TYPE_DEPT_AND_CHILD_DEPT = 3; - - /** - * 多部门及子部门 - */ - public static final int TYPE_MULTI_DEPT_AND_CHILD_DEPT = 4; - - /** - * 自定义部门列表 - */ - public static final int TYPE_CUSTOM_DEPT_LIST = 5; - - private static final Map DICT_MAP = new HashMap<>(6); - static { - DICT_MAP.put(0, "查看全部"); - DICT_MAP.put(1, "仅查看当前用户"); - DICT_MAP.put(2, "仅查看所在部门"); - DICT_MAP.put(3, "所在部门及子部门"); - DICT_MAP.put(4, "多部门及子部门"); - DICT_MAP.put(5, "自定义部门列表"); - } - - /** - * 判断参数是否为当前常量字典的合法取值范围。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private DataPermRuleType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/DataFilterInterceptor.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/DataFilterInterceptor.java deleted file mode 100644 index 1c9fb226..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/DataFilterInterceptor.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.orangeforms.common.datafilter.interceptor; - -import com.orangeforms.common.core.object.GlobalThreadLocal; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.servlet.HandlerInterceptor; -import org.springframework.web.servlet.ModelAndView; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * 主要用于初始化,通过Mybatis拦截器插件进行数据过滤的标记。 - * 在调用controller接口处理方法之前,必须强制将数据过滤标记设置为缺省值。 - * 这样可以避免使用当前线程在处理上一个请求时,未能正常清理的数据过滤标记值。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class DataFilterInterceptor implements HandlerInterceptor { - - @Override - public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) - throws Exception { - // 每次进入Controller接口之前,均主动打开数据权限验证。 - // 可以避免该Servlet线程在处理之前的请求时异常退出,从而导致该状态数据没有被正常清除。 - GlobalThreadLocal.setDataFilter(true); - return true; - } - - @Override - public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, - ModelAndView modelAndView) throws Exception { - // 这里需要加注释,否则sonar不happy。 - } - - @Override - public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) - throws Exception { - GlobalThreadLocal.clearDataFilter(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/MybatisDataFilterInterceptor.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/MybatisDataFilterInterceptor.java deleted file mode 100644 index d0584bde..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/interceptor/MybatisDataFilterInterceptor.java +++ /dev/null @@ -1,479 +0,0 @@ -package com.orangeforms.common.datafilter.interceptor; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ReflectUtil; -import com.alibaba.fastjson.JSON; -import com.baomidou.mybatisplus.annotation.TableName; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.annotation.*; -import com.orangeforms.common.core.exception.NoDataPermException; -import com.orangeforms.common.core.object.GlobalThreadLocal; -import com.orangeforms.common.core.object.TokenData; -import com.orangeforms.common.core.util.ApplicationContextHolder; -import com.orangeforms.common.core.util.ContextUtil; -import com.orangeforms.common.core.util.MyModelUtil; -import com.orangeforms.common.core.util.RedisKeyUtil; -import com.orangeforms.common.datafilter.config.DataFilterProperties; -import com.orangeforms.common.datafilter.constant.DataPermRuleType; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import net.sf.jsqlparser.JSQLParserException; -import net.sf.jsqlparser.expression.operators.conditional.AndExpression; -import net.sf.jsqlparser.parser.CCJSqlParserUtil; -import net.sf.jsqlparser.statement.Statement; -import net.sf.jsqlparser.statement.delete.Delete; -import net.sf.jsqlparser.statement.select.FromItem; -import net.sf.jsqlparser.statement.select.PlainSelect; -import net.sf.jsqlparser.statement.select.Select; -import net.sf.jsqlparser.statement.select.SubSelect; -import net.sf.jsqlparser.statement.update.Update; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.ibatis.executor.statement.RoutingStatementHandler; -import org.apache.ibatis.executor.statement.StatementHandler; -import org.apache.ibatis.mapping.BoundSql; -import org.apache.ibatis.mapping.MappedStatement; -import org.apache.ibatis.mapping.SqlCommandType; -import org.apache.ibatis.plugin.*; -import org.redisson.api.RedissonClient; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.lang.reflect.Field; -import java.lang.reflect.ParameterizedType; -import java.sql.Connection; -import java.util.*; - -/** - * Mybatis拦截器。目前用于数据权限的统一拦截和注入处理。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})}) -@Slf4j -@Component -public class MybatisDataFilterInterceptor implements Interceptor { - - @Autowired - private RedissonClient redissonClient; - @Autowired - private DataFilterProperties properties; - - /** - * 对象缓存。由于Set是排序后的,因此在查找排除方法名称时效率更高。 - * 在应用服务启动的监听器中(LoadDataPermMapperListener),会调用当前对象的(loadMappersWithDataPerm)方法,加载缓存。 - */ - private final Map cachedDataPermMap = new HashMap<>(); - /** - * 租户租户对象缓存。 - */ - private final Map cachedTenantMap = new HashMap<>(); - - /** - * 预先加载与数据过滤相关的数据到缓存,该函数会在(LoadDataFilterInfoListener)监听器中调用。 - */ - public void loadInfoWithDataFilter() { - Map mapperMap = - ApplicationContextHolder.getApplicationContext().getBeansOfType(BaseDaoMapper.class); - for (BaseDaoMapper mapperProxy : mapperMap.values()) { - // 优先处理jdk的代理 - Object proxy = ReflectUtil.getFieldValue(mapperProxy, "h"); - // 如果不是jdk的代理,再看看cjlib的代理。 - if (proxy == null) { - proxy = ReflectUtil.getFieldValue(mapperProxy, "CGLIB$CALLBACK_0"); - } - Class mapperClass = (Class) ReflectUtil.getFieldValue(proxy, "mapperInterface"); - if (properties.getEnabledTenantFilter()) { - loadTenantFilterData(mapperClass); - } - if (properties.getEnabledDataPermFilter()) { - EnableDataPerm rule = mapperClass.getAnnotation(EnableDataPerm.class); - if (rule != null) { - loadDataPermFilterRules(mapperClass, rule); - } - } - } - } - - private void loadTenantFilterData(Class mapperClass) { - Class modelClass = (Class) ((ParameterizedType) - mapperClass.getGenericInterfaces()[0]).getActualTypeArguments()[0]; - Field[] fields = ReflectUtil.getFields(modelClass); - for (Field field : fields) { - if (field.getAnnotation(TenantFilterColumn.class) != null) { - ModelTenantInfo tenantInfo = new ModelTenantInfo(); - tenantInfo.setModelName(modelClass.getSimpleName()); - tenantInfo.setTableName(modelClass.getAnnotation(TableName.class).value()); - tenantInfo.setFieldName(field.getName()); - tenantInfo.setColumnName(MyModelUtil.mapToColumnName(field, modelClass)); - // 判断当前dao中是否包括不需要自动注入租户Id过滤的方法。 - DisableTenantFilter disableTenantFilter = mapperClass.getAnnotation(DisableTenantFilter.class); - if (disableTenantFilter != null) { - // 这里开始获取当前Mapper已经声明的的SqlId中,有哪些是需要排除在外的。 - // 排除在外的将不进行数据过滤。 - Set excludeMethodNameSet = new HashSet<>(); - for (String excludeName : disableTenantFilter.includeMethodName()) { - excludeMethodNameSet.add(excludeName); - // 这里是给pagehelper中,分页查询先获取数据总量的查询。 - excludeMethodNameSet.add(excludeName + "_COUNT"); - } - tenantInfo.setExcludeMethodNameSet(excludeMethodNameSet); - } - cachedTenantMap.put(mapperClass.getName(), tenantInfo); - break; - } - } - } - - private void loadDataPermFilterRules(Class mapperClass, EnableDataPerm rule) { - String sysDataPermMapperName = "SysDataPermMapper"; - // 由于给数据权限Mapper添加@EnableDataPerm,将会导致无限递归,因此这里检测到之后, - // 会在系统启动加载监听器的时候,及时抛出异常。 - if (StringUtils.equals(sysDataPermMapperName, mapperClass.getSimpleName())) { - throw new IllegalStateException("Add @EnableDataPerm annotation to SysDataPermMapper is ILLEGAL!"); - } - // 这里开始获取当前Mapper已经声明的的SqlId中,有哪些是需要排除在外的。 - // 排除在外的将不进行数据过滤。 - Set excludeMethodNameSet = null; - String[] excludes = rule.excluseMethodName(); - if (excludes.length > 0) { - excludeMethodNameSet = new HashSet<>(); - for (String excludeName : excludes) { - excludeMethodNameSet.add(excludeName); - // 这里是给pagehelper中,分页查询先获取数据总量的查询。 - excludeMethodNameSet.add(excludeName + "_COUNT"); - } - } - // 获取Mapper关联的主表信息,包括表名,user过滤字段名和dept过滤字段名。 - Class modelClazz = (Class) - ((ParameterizedType) mapperClass.getGenericInterfaces()[0]).getActualTypeArguments()[0]; - Field[] fields = ReflectUtil.getFields(modelClazz); - Field userFilterField = null; - Field deptFilterField = null; - for (Field field : fields) { - if (null != field.getAnnotation(UserFilterColumn.class)) { - userFilterField = field; - } - if (null != field.getAnnotation(DeptFilterColumn.class)) { - deptFilterField = field; - } - if (userFilterField != null && deptFilterField != null) { - break; - } - } - // 通过注解解析与Mapper关联的Model,并获取与数据权限关联的信息,并将结果缓存。 - ModelDataPermInfo info = new ModelDataPermInfo(); - info.setMainTableName(MyModelUtil.mapToTableName(modelClazz)); - info.setMustIncludeUserRule(rule.mustIncludeUserRule()); - info.setExcludeMethodNameSet(excludeMethodNameSet); - if (userFilterField != null) { - info.setUserFilterColumn(MyModelUtil.mapToColumnName(userFilterField, modelClazz)); - } - if (deptFilterField != null) { - info.setDeptFilterColumn(MyModelUtil.mapToColumnName(deptFilterField, modelClazz)); - } - cachedDataPermMap.put(mapperClass.getName(), info); - } - - @Override - public Object intercept(Invocation invocation) throws Throwable { - // 判断当前线程本地存储中,业务操作是否禁用了数据权限过滤,如果禁用,则不进行后续的数据过滤处理了。 - if (!GlobalThreadLocal.enabledDataFilter()) { - return invocation.proceed(); - } - // 只有在HttpServletRequest场景下,该拦截器才起作用,对于系统级别的预加载数据不会应用数据权限。 - if (!ContextUtil.hasRequestContext()) { - return invocation.proceed(); - } - // 没有登录的用户,不会参与租户过滤,如果需要过滤的,自己在代码中手动实现 - // 通常对于无需登录的白名单url,也无需过滤了。 - // 另外就是登录接口中,获取菜单列表的接口,由于尚未登录,没有TokenData,所以这个接口我们手动加入了该条件。 - if (TokenData.takeFromRequest() == null) { - return invocation.proceed(); - } - RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget(); - StatementHandler delegate = - (StatementHandler) ReflectUtil.getFieldValue(handler, "delegate"); - // 通过反射获取delegate父类BaseStatementHandler的mappedStatement属性 - MappedStatement mappedStatement = - (MappedStatement) ReflectUtil.getFieldValue(delegate, "mappedStatement"); - SqlCommandType commandType = mappedStatement.getSqlCommandType(); - // 对于INSERT语句,我们不进行任何数据过滤。 - if (commandType == SqlCommandType.INSERT) { - return invocation.proceed(); - } - String sqlId = mappedStatement.getId(); - int pos = StringUtils.lastIndexOf(sqlId, "."); - String className = StringUtils.substring(sqlId, 0, pos); - String methodName = StringUtils.substring(sqlId, pos + 1); - // 先进行租户过滤条件的处理,再将解析并处理后的SQL Statement交给下一步的数据权限过滤去处理。 - // 这样做的目的主要是为了减少一次SQL解析的过程,因为这是高频操作,所以要尽量去优化。 - Statement statement = null; - if (properties.getEnabledTenantFilter()) { - statement = this.processTenantFilter(className, methodName, delegate.getBoundSql(), commandType); - } - // 处理数据权限过滤。 - if (properties.getEnabledDataPermFilter()) { - this.processDataPermFilter(className, methodName, delegate.getBoundSql(), commandType, statement, sqlId); - } - return invocation.proceed(); - } - - private Statement processTenantFilter( - String className, String methodName, BoundSql boundSql, SqlCommandType commandType) throws JSQLParserException { - ModelTenantInfo info = cachedTenantMap.get(className); - if (info == null || CollUtil.contains(info.getExcludeMethodNameSet(), methodName)) { - return null; - } - String sql = boundSql.getSql(); - Statement statement = CCJSqlParserUtil.parse(sql); - StringBuilder filterBuilder = new StringBuilder(64); - filterBuilder.append(info.tableName).append(".") - .append(info.columnName) - .append("=") - .append(TokenData.takeFromRequest().getTenantId()); - String dataFilter = filterBuilder.toString(); - if (commandType == SqlCommandType.UPDATE) { - Update update = (Update) statement; - this.buildWhereClause(update, dataFilter); - } else if (commandType == SqlCommandType.DELETE) { - Delete delete = (Delete) statement; - this.buildWhereClause(delete, dataFilter); - } else { - Select select = (Select) statement; - PlainSelect selectBody = (PlainSelect) select.getSelectBody(); - FromItem fromItem = selectBody.getFromItem(); - if (fromItem != null) { - PlainSelect subSelect = null; - if (fromItem instanceof SubSelect) { - subSelect = (PlainSelect) ((SubSelect) fromItem).getSelectBody(); - } - if (subSelect != null) { - buildWhereClause(subSelect, dataFilter); - } else { - buildWhereClause(selectBody, dataFilter); - } - } - } - log.info("Tenant Filter Where Clause [{}]", dataFilter); - ReflectUtil.setFieldValue(boundSql, "sql", statement.toString()); - return statement; - } - - private void processDataPermFilter( - String className, String methodName, BoundSql boundSql, SqlCommandType commandType, Statement statement, String sqlId) - throws JSQLParserException { - // 判断当前线程本地存储中,业务操作是否禁用了数据权限过滤,如果禁用,则不进行后续的数据过滤处理了。 - // 数据过滤权限中,INSERT不过滤。如果是管理员则不参与数据权限的数据过滤,显示全部数据。 - TokenData tokenData = TokenData.takeFromRequest(); - if (Boolean.TRUE.equals(tokenData.getIsAdmin())) { - return; - } - ModelDataPermInfo info = cachedDataPermMap.get(className); - // 再次查找当前方法是否为排除方法,如果不是,就参与数据权限注入过滤。 - if (info == null || CollUtil.contains(info.getExcludeMethodNameSet(), methodName)) { - return; - } - String dataPermSessionKey = RedisKeyUtil.makeSessionDataPermIdKey(tokenData.getSessionId()); - Object cachedData = redissonClient.getBucket(dataPermSessionKey).get(); - if (cachedData == null) { - throw new NoDataPermException("No Related DataPerm found for SQL_ID [ " + sqlId + " ]."); - } - String dataPermData = cachedData.toString(); - Map dataPermMap = new HashMap<>(8); - for (Map.Entry entry : JSON.parseObject(dataPermData).entrySet()) { - dataPermMap.put(Integer.valueOf(entry.getKey()), entry.getValue().toString()); - } - if (MapUtils.isEmpty(dataPermMap)) { - throw new NoDataPermException("No Related DataPerm found for SQL_ID [ " + sqlId + " ]."); - } - if (dataPermMap.containsKey(DataPermRuleType.TYPE_ALL)) { - return; - } - // 如果当前过滤注解中mustIncludeUserRule参数为true,同时当前用户的数据权限中,不包含TYPE_USER_ONLY, - // 这里就需要自动添加该数据权限。 - if (info.getMustIncludeUserRule() - && !dataPermMap.containsKey(DataPermRuleType.TYPE_USER_ONLY)) { - dataPermMap.put(DataPermRuleType.TYPE_USER_ONLY, null); - } - this.processDataPerm(info, dataPermMap, boundSql, commandType, statement); - } - - private void processDataPerm( - ModelDataPermInfo info, - Map dataPermMap, - BoundSql boundSql, - SqlCommandType commandType, - Statement statement) throws JSQLParserException { - List criteriaList = new LinkedList<>(); - for (Map.Entry entry : dataPermMap.entrySet()) { - String filterClause = processDataPermRule(info, entry.getKey(), entry.getValue()); - if (StringUtils.isNotBlank(filterClause)) { - criteriaList.add(filterClause); - } - } - if (CollectionUtils.isEmpty(criteriaList)) { - return; - } - StringBuilder filterBuilder = new StringBuilder(128); - filterBuilder.append("("); - filterBuilder.append(StringUtils.join(criteriaList, " OR ")); - filterBuilder.append(")"); - String dataFilter = filterBuilder.toString(); - if (statement == null) { - String sql = boundSql.getSql(); - statement = CCJSqlParserUtil.parse(sql); - } - if (commandType == SqlCommandType.UPDATE) { - Update update = (Update) statement; - this.buildWhereClause(update, dataFilter); - } else if (commandType == SqlCommandType.DELETE) { - Delete delete = (Delete) statement; - this.buildWhereClause(delete, dataFilter); - } else { - Select select = (Select) statement; - PlainSelect selectBody = (PlainSelect) select.getSelectBody(); - FromItem fromItem = selectBody.getFromItem(); - PlainSelect subSelect = null; - if (fromItem != null) { - if (fromItem instanceof SubSelect) { - subSelect = (PlainSelect) ((SubSelect) fromItem).getSelectBody(); - } - if (subSelect != null) { - buildWhereClause(subSelect, dataFilter); - } else { - buildWhereClause(selectBody, dataFilter); - } - } - } - log.info("DataPerm Filter Where Clause [{}]", dataFilter); - ReflectUtil.setFieldValue(boundSql, "sql", statement.toString()); - } - - private String processDataPermRule(ModelDataPermInfo info, Integer ruleType, String deptIds) { - TokenData tokenData = TokenData.takeFromRequest(); - StringBuilder filter = new StringBuilder(128); - if (ruleType == DataPermRuleType.TYPE_USER_ONLY) { - if (StringUtils.isNotBlank(info.getUserFilterColumn())) { - if (properties.getAddTableNamePrefix()) { - filter.append(info.getMainTableName()).append("."); - } - filter.append(info.getUserFilterColumn()) - .append(" = ") - .append(tokenData.getUserId()); - } - } else { - if (StringUtils.isNotBlank(info.getDeptFilterColumn())) { - if (ruleType == DataPermRuleType.TYPE_DEPT_ONLY) { - if (properties.getAddTableNamePrefix()) { - filter.append(info.getMainTableName()).append("."); - } - filter.append(info.getDeptFilterColumn()) - .append(" = ") - .append(tokenData.getDeptId()); - } else if (ruleType == DataPermRuleType.TYPE_DEPT_AND_CHILD_DEPT) { - filter.append(" EXISTS ") - .append("(SELECT 1 FROM ") - .append(properties.getDeptRelationTablePrefix()) - .append("sys_dept_relation WHERE ") - .append(properties.getDeptRelationTablePrefix()) - .append("sys_dept_relation.parent_dept_id = ") - .append(tokenData.getDeptId()) - .append(" AND "); - if (properties.getAddTableNamePrefix()) { - filter.append(info.getMainTableName()).append("."); - } - filter.append(info.getDeptFilterColumn()) - .append(" = ") - .append(properties.getDeptRelationTablePrefix()) - .append("sys_dept_relation.dept_id) "); - } else if (ruleType == DataPermRuleType.TYPE_MULTI_DEPT_AND_CHILD_DEPT) { - filter.append(" EXISTS ") - .append("(SELECT 1 FROM ") - .append(properties.getDeptRelationTablePrefix()) - .append("sys_dept_relation WHERE ") - .append(properties.getDeptRelationTablePrefix()) - .append("sys_dept_relation.parent_dept_id IN (") - .append(deptIds) - .append(") AND "); - if (properties.getAddTableNamePrefix()) { - filter.append(info.getMainTableName()).append("."); - } - filter.append(info.getDeptFilterColumn()) - .append(" = ") - .append(properties.getDeptRelationTablePrefix()) - .append("sys_dept_relation.dept_id) "); - } else if (ruleType == DataPermRuleType.TYPE_CUSTOM_DEPT_LIST) { - if (properties.getAddTableNamePrefix()) { - filter.append(info.getMainTableName()).append("."); - } - filter.append(info.getDeptFilterColumn()) - .append(" IN (") - .append(deptIds) - .append(") "); - } - } - } - return filter.toString(); - } - - private void buildWhereClause(Update update, String dataFilter) throws JSQLParserException { - if (update.getWhere() == null) { - update.setWhere(CCJSqlParserUtil.parseCondExpression(dataFilter)); - } else { - AndExpression and = new AndExpression( - CCJSqlParserUtil.parseCondExpression(dataFilter), update.getWhere()); - update.setWhere(and); - } - } - - private void buildWhereClause(Delete delete, String dataFilter) throws JSQLParserException { - if (delete.getWhere() == null) { - delete.setWhere(CCJSqlParserUtil.parseCondExpression(dataFilter)); - } else { - AndExpression and = new AndExpression( - CCJSqlParserUtil.parseCondExpression(dataFilter), delete.getWhere()); - delete.setWhere(and); - } - } - - private void buildWhereClause(PlainSelect select, String dataFilter) throws JSQLParserException { - if (select.getWhere() == null) { - select.setWhere(CCJSqlParserUtil.parseCondExpression(dataFilter)); - } else { - AndExpression and = new AndExpression( - CCJSqlParserUtil.parseCondExpression(dataFilter), select.getWhere()); - select.setWhere(and); - } - } - - @Override - public Object plugin(Object target) { - return Plugin.wrap(target, this); - } - - @Override - public void setProperties(Properties properties) { - // 这里需要空注解,否则sonar会不happy。 - } - - @Data - private static final class ModelDataPermInfo { - private Set excludeMethodNameSet; - private String userFilterColumn; - private String deptFilterColumn; - private String mainTableName; - private Boolean mustIncludeUserRule; - } - - @Data - private static final class ModelTenantInfo { - private Set excludeMethodNameSet; - private String modelName; - private String tableName; - private String fieldName; - private String columnName; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/listener/LoadDataFilterInfoListener.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/listener/LoadDataFilterInfoListener.java deleted file mode 100644 index adb99a72..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/java/com/orangeforms/common/datafilter/listener/LoadDataFilterInfoListener.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.orangeforms.common.datafilter.listener; - -import com.orangeforms.common.datafilter.interceptor.MybatisDataFilterInterceptor; -import org.springframework.boot.context.event.ApplicationReadyEvent; -import org.springframework.context.ApplicationListener; -import org.springframework.stereotype.Component; - -/** - * 应用服务启动监听器。 - * 目前主要功能是调用MybatisDataFilterInterceptor中的loadInfoWithDataFilter方法, - * 将标记有过滤注解的数据加载到缓存,以提升系统运行时效率。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Component -public class LoadDataFilterInfoListener implements ApplicationListener { - - @Override - public void onApplicationEvent(ApplicationReadyEvent applicationReadyEvent) { - MybatisDataFilterInterceptor interceptor = - applicationReadyEvent.getApplicationContext().getBean(MybatisDataFilterInterceptor.class); - interceptor.loadInfoWithDataFilter(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/resources/META-INF/spring.factories b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/resources/META-INF/spring.factories deleted file mode 100644 index e9628e63..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-datafilter/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.orangeforms.common.datafilter.config.DataFilterAutoConfig \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/pom.xml deleted file mode 100644 index d5b6e39b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/pom.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - common - com.orangeforms - 1.0.0 - - 4.0.0 - - common-log - 1.0.0 - common-log - jar - - - - com.orangeforms - common-sequence - 1.0.0 - - - - - - - src/main/resources - - **/*.* - - false - - - src/main/java - - **/*.xml - - false - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/annotation/OperationLog.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/annotation/OperationLog.java deleted file mode 100644 index 00e2e422..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/annotation/OperationLog.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.orangeforms.common.log.annotation; - -import com.orangeforms.common.log.model.constant.SysOperationLogType; - -import java.lang.annotation.*; - -/** - * 操作日志记录注解。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Target({ElementType.METHOD}) -@Retention(RetentionPolicy.RUNTIME) -@Documented -public @interface OperationLog { - - /** - * 描述。 - */ - String description() default ""; - - /** - * 操作类型。 - */ - int type() default SysOperationLogType.OTHER; - - /** - * 是否保存应答结果。 - * 对于类似导出和文件下载之类的接口,该参与应该设置为false。 - */ - boolean saveResponse() default true; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/aop/OperationLogAspect.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/aop/OperationLogAspect.java deleted file mode 100644 index 2d3fecbd..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/aop/OperationLogAspect.java +++ /dev/null @@ -1,260 +0,0 @@ -package com.orangeforms.common.log.aop; - -import cn.hutool.core.collection.CollUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.object.ResponseResult; -import com.orangeforms.common.core.object.TokenData; -import com.orangeforms.common.core.util.ContextUtil; -import com.orangeforms.common.core.util.IpUtil; -import com.orangeforms.common.core.util.MyCommonUtil; -import com.orangeforms.common.log.annotation.OperationLog; -import com.orangeforms.common.log.config.OperationLogProperties; -import com.orangeforms.common.log.model.SysOperationLog; -import com.orangeforms.common.log.model.constant.SysOperationLogType; -import com.orangeforms.common.log.service.SysOperationLogService; -import com.orangeforms.common.sequence.wrapper.IdGeneratorWrapper; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.aspectj.lang.JoinPoint; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.Signature; -import org.aspectj.lang.annotation.*; -import org.aspectj.lang.reflect.MethodSignature; -import org.slf4j.MDC; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.lang.reflect.Method; -import java.util.*; - -/** - * 操作日志记录处理AOP对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Aspect -@Component -@Order(1) -@Slf4j -public class OperationLogAspect { - - @Value("${spring.application.name}") - private String serviceName; - @Autowired - private SysOperationLogService operationLogService; - @Autowired - private OperationLogProperties properties; - @Autowired - private IdGeneratorWrapper idGenerator; - - /** - * 错误信息、请求参数和应答结果字符串的最大长度。 - */ - private final static int MAX_LENGTH = 2000; - - /** - * 所有controller方法。 - */ - @Pointcut("execution(public * com.orangeforms..controller..*(..))") - public void operationLogPointCut() { - // 空注释,避免sonar警告 - } - - @Around("operationLogPointCut()") - public Object around(ProceedingJoinPoint joinPoint) throws Throwable { - // 计时。 - long start = System.currentTimeMillis(); - HttpServletRequest request = ContextUtil.getHttpRequest(); - HttpServletResponse response = ContextUtil.getHttpResponse(); - String traceId = this.getTraceId(request); - request.setAttribute(ApplicationConstant.HTTP_HEADER_TRACE_ID, traceId); - // 将流水号通过应答头返回给前端,便于问题精确定位。 - response.setHeader(ApplicationConstant.HTTP_HEADER_TRACE_ID, traceId); - MDC.put(ApplicationConstant.HTTP_HEADER_TRACE_ID, traceId); - TokenData tokenData = TokenData.takeFromRequest(); - // 为日志框架设定变量,使日志可以输出更多有价值的信息。 - if (tokenData != null) { - MDC.put("sessionId", tokenData.getSessionId()); - MDC.put("userId", tokenData.getUserId().toString()); - } - String[] parameterNames = this.getParameterNames(joinPoint); - Object[] args = joinPoint.getArgs(); - JSONObject jsonArgs = new JSONObject(); - for (int i = 0; i < args.length; i++) { - Object arg = args[i]; - if (this.isNormalArgs(arg)) { - String parameterName = parameterNames[i]; - jsonArgs.put(parameterName, arg); - } - } - String params = jsonArgs.toJSONString(); - SysOperationLog operationLog = null; - OperationLog operationLogAnnotation = null; - boolean saveOperationLog = properties.isEnabled(); - if (saveOperationLog) { - operationLogAnnotation = getOperationLogAnnotation(joinPoint); - saveOperationLog = (operationLogAnnotation != null); - } - if (saveOperationLog) { - operationLog = this.buildSysOperationLog(operationLogAnnotation, joinPoint, params, traceId, tokenData); - } - Object result; - log.info("开始请求,url={}, reqData={}", request.getRequestURI(), params); - try { - // 调用原来的方法 - result = joinPoint.proceed(); - String respData = result == null ? "null" : JSON.toJSONString(result); - Long elapse = System.currentTimeMillis() - start; - if (saveOperationLog) { - this.operationLogPostProcess(operationLogAnnotation, respData, operationLog, result); - } - if (elapse > properties.getSlowLogMs()) { - log.warn("耗时较长的请求完成警告, url={},elapse={}ms reqData={} respData={}", - request.getRequestURI(), elapse, params, respData); - } - log.info("请求完成, url={},elapse={}ms, respData={}", request.getRequestURI(), elapse, respData); - } catch (Exception e) { - if (saveOperationLog) { - operationLog.setSuccess(false); - operationLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, MAX_LENGTH)); - } - log.error("请求报错,url={}, reqData={}, error={}", request.getRequestURI(), params, e.getMessage()); - throw e; - } finally { - if (saveOperationLog) { - operationLog.setElapse(System.currentTimeMillis() - start); - operationLogService.saveNewAsync(operationLog); - } - MDC.remove(ApplicationConstant.HTTP_HEADER_TRACE_ID); - if (tokenData != null) { - MDC.remove("sessionId"); - MDC.remove("userId"); - } - } - return result; - } - - private SysOperationLog buildSysOperationLog( - OperationLog operationLogAnnotation, - ProceedingJoinPoint joinPoint, - String params, - String traceId, - TokenData tokenData) { - HttpServletRequest request = ContextUtil.getHttpRequest(); - SysOperationLog operationLog = new SysOperationLog(); - operationLog.setLogId(idGenerator.nextLongId()); - operationLog.setTraceId(traceId); - operationLog.setDescription(operationLogAnnotation.description()); - operationLog.setOperationType(operationLogAnnotation.type()); - operationLog.setServiceName(this.serviceName); - operationLog.setApiClass(joinPoint.getTarget().getClass().getName()); - operationLog.setApiMethod(operationLog.getApiClass() + "." + joinPoint.getSignature().getName()); - operationLog.setRequestMethod(request.getMethod()); - operationLog.setRequestUrl(request.getRequestURI()); - if (tokenData != null) { - operationLog.setRequestIp(tokenData.getLoginIp()); - } else { - operationLog.setRequestIp(IpUtil.getRemoteIpAddress(request)); - } - operationLog.setOperationTime(new Date()); - if (params != null) { - if (params.length() <= MAX_LENGTH) { - operationLog.setRequestArguments(params); - } else { - operationLog.setRequestArguments(StringUtils.substring(params, 0, MAX_LENGTH)); - } - } - if (tokenData != null) { - // 对于非多租户系统,该值为空可以忽略。 - operationLog.setTenantId(tokenData.getTenantId()); - operationLog.setSessionId(tokenData.getSessionId()); - operationLog.setOperatorId(tokenData.getUserId()); - operationLog.setOperatorName(tokenData.getLoginName()); - } - return operationLog; - } - - private void operationLogPostProcess( - OperationLog operationLogAnnotation, String respData, SysOperationLog operationLog, Object result) { - if (operationLogAnnotation.saveResponse()) { - if (respData.length() <= MAX_LENGTH) { - operationLog.setResponseResult(respData); - } else { - operationLog.setResponseResult(StringUtils.substring(respData, 0, MAX_LENGTH)); - } - } - // 处理大部分返回ResponseResult的接口。 - if (!(result instanceof ResponseResult)) { - if (ContextUtil.hasRequestContext()) { - operationLog.setSuccess(ContextUtil.getHttpResponse().getStatus() == HttpServletResponse.SC_OK); - } - return; - } - ResponseResult responseResult = (ResponseResult) result; - operationLog.setSuccess(responseResult.isSuccess()); - if (!responseResult.isSuccess()) { - operationLog.setErrorMsg(responseResult.getErrorMessage()); - } - if (operationLog.getOperationType().equals(SysOperationLogType.LOGIN)) { - // 对于登录操作,由于在调用登录方法之前,没有可用的TokenData。 - // 因此如果登录成功,可再次通过TokenData.takeFromRequest()获取TokenData。 - if (operationLog.getSuccess()) { - // 这里为了保证LoginController.doLogin方法,一定将TokenData存入Request.Attribute之中, - // 我们将不做空值判断,一旦出错,开发者可在调试时立刻发现异常,并根据这里的注释进行修复。 - TokenData tokenData = TokenData.takeFromRequest(); - // 对于非多租户系统,为了保证代码一致性,仍可保留对tenantId的赋值代码。 - operationLog.setTenantId(tokenData.getTenantId()); - operationLog.setSessionId(tokenData.getSessionId()); - operationLog.setOperatorId(tokenData.getUserId()); - operationLog.setOperatorName(tokenData.getLoginName()); - } else { - HttpServletRequest request = ContextUtil.getHttpRequest(); - // 登录操作需要特殊处理,无论是登录成功还是失败,都要记录operator_name字段。 - operationLog.setOperatorName(request.getParameter("loginName")); - } - } - } - - private String[] getParameterNames(ProceedingJoinPoint joinPoint) { - Signature signature = joinPoint.getSignature(); - MethodSignature methodSignature = (MethodSignature) signature; - return methodSignature.getParameterNames(); - } - - private OperationLog getOperationLogAnnotation(JoinPoint joinPoint) throws Exception { - Signature signature = joinPoint.getSignature(); - MethodSignature methodSignature = (MethodSignature) signature; - Method method = methodSignature.getMethod(); - return method.getAnnotation(OperationLog.class); - } - - private String getTraceId(HttpServletRequest request) { - // 获取请求流水号。 - // 对于微服务系统,为了保证traceId在全调用链的唯一性,因此在网关的过滤器中创建了该值。 - String traceId = request.getHeader(ApplicationConstant.HTTP_HEADER_TRACE_ID); - if (StringUtils.isBlank(traceId)) { - traceId = MyCommonUtil.generateUuid(); - } - return traceId; - } - - private boolean isNormalArgs(Object o) { - if (o instanceof List) { - List list = (List) o; - if (CollUtil.isNotEmpty(list)) { - return !(list.get(0) instanceof MultipartFile); - } - } - return !(o instanceof HttpServletRequest) - && !(o instanceof HttpServletResponse) - && !(o instanceof MultipartFile); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/CommonLogAutoConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/CommonLogAutoConfig.java deleted file mode 100644 index 21cea713..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/CommonLogAutoConfig.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.orangeforms.common.log.config; - -import org.springframework.boot.context.properties.EnableConfigurationProperties; - -/** - * common-log模块的自动配置引导类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@EnableConfigurationProperties({OperationLogProperties.class}) -public class CommonLogAutoConfig { -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/OperationLogProperties.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/OperationLogProperties.java deleted file mode 100644 index 537cc341..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/config/OperationLogProperties.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.orangeforms.common.log.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * 操作日志的配置类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ConfigurationProperties(prefix = "common-log.operation-log") -public class OperationLogProperties { - - /** - * 是否采集操作日志。 - */ - private boolean enabled = true; - /** - * 接口调用的毫秒数大于该值后,将输出慢日志警告。 - */ - private long slowLogMs = 50000; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/SysOperationLogMapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/SysOperationLogMapper.java deleted file mode 100644 index e4f14c23..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/SysOperationLogMapper.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.orangeforms.common.log.dao; - -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.log.model.SysOperationLog; -import org.apache.ibatis.annotations.Param; - -import java.util.List; - -/** - * 系统操作日志对应的数据访问对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysOperationLogMapper extends BaseDaoMapper { - - /** - * 批量插入。 - * - * @param operationLogList 操作日志列表。 - */ - void insertList(List operationLogList); - - /** - * 根据过滤条件和排序规则,查询操作日志。 - * - * @param sysOperationLogFilter 操作日志的过滤对象。 - * @param orderBy 排序规则。 - * @return 查询列表。 - */ - List getSysOperationLogList( - @Param("sysOperationLogFilter") SysOperationLog sysOperationLogFilter, - @Param("orderBy") String orderBy); -} \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/mapper/SysOperationLogMapper.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/mapper/SysOperationLogMapper.xml deleted file mode 100644 index 4523c8af..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/dao/mapper/SysOperationLogMapper.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - AND zz_sys_operation_log.operation_type = #{sysOperationLogFilter.operationType} - - - - AND zz_sys_operation_log.request_url LIKE #{safeRequestUrl} - - - AND zz_sys_operation_log.trace_id = #{sysOperationLogFilter.traceId} - - - AND zz_sys_operation_log.success = #{sysOperationLogFilter.success} - - - - AND zz_sys_operation_log.operator_name LIKE #{safeOperatorName} - - - AND zz_sys_operation_log.elapse >= #{sysOperationLogFilter.elapseMin} - - - AND zz_sys_operation_log.elapse <= #{sysOperationLogFilter.elapseMax} - - - AND zz_sys_operation_log.operation_time >= #{sysOperationLogFilter.operationTimeStart} - - - AND zz_sys_operation_log.operation_time <= #{sysOperationLogFilter.operationTimeEnd} - - - - - - INSERT INTO zz_sys_operation_log VALUES - - ( - #{item.logId}, - #{item.description}, - #{item.operationType}, - #{item.serviceName}, - #{item.apiClass}, - #{item.apiMethod}, - #{item.sessionId}, - #{item.traceId}, - #{item.elapse}, - #{item.requestMethod}, - #{item.requestUrl}, - #{item.requestArguments}, - #{item.responseResult}, - #{item.requestIp}, - #{item.success}, - #{item.errorMsg}, - #{item.tenantId}, - #{item.operatorId}, - #{item.operatorName}, - #{item.operationTime} - ) - - - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/SysOperationLog.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/SysOperationLog.java deleted file mode 100644 index 5ff883d8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/SysOperationLog.java +++ /dev/null @@ -1,170 +0,0 @@ -package com.orangeforms.common.log.model; - -import com.baomidou.mybatisplus.annotation.*; -import com.orangeforms.common.core.annotation.TenantFilterColumn; -import lombok.Data; - -import java.util.Date; - -/** - * 操作日志记录表 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@TableName("zz_sys_operation_log") -public class SysOperationLog { - - /** - * 主键Id。 - */ - @TableId(value = "log_id") - private Long logId; - - /** - * 日志描述。 - */ - @TableField(value = "description") - private String description; - - /** - * 操作类型。 - * 常量值定义可参考SysOperationLogType对象。 - */ - @TableField(value = "operation_type") - private Integer operationType; - - /** - * 接口所在服务名称。 - * 通常为spring.application.name配置项的值。 - */ - @TableField(value = "service_name") - private String serviceName; - - /** - * 调用的controller全类名。 - * 之所以为独立字段,是为了便于查询和统计接口的调用频度。 - */ - @TableField(value = "api_class") - private String apiClass; - - /** - * 调用的controller中的方法。 - * 格式为:接口类名 + "." + 方法名。 - */ - @TableField(value = "api_method") - private String apiMethod; - - /** - * 用户会话sessionId。 - * 主要是为了便于统计,以及跟踪查询定位问题。 - */ - @TableField(value = "session_id") - private String sessionId; - - /** - * 每次请求的Id。 - * 对于微服务之间的调用,在同一个请求的调用链中,该值是相同的。 - */ - @TableField(value = "trace_id") - private String traceId; - - /** - * 调用时长。 - */ - @TableField(value = "elapse") - private Long elapse; - - /** - * HTTP 请求方法,如GET。 - */ - @TableField(value = "request_method") - private String requestMethod; - - /** - * HTTP 请求地址。 - */ - @TableField(value = "request_url") - private String requestUrl; - - /** - * controller接口参数。 - */ - @TableField(value = "request_arguments") - private String requestArguments; - - /** - * controller应答结果。 - */ - @TableField(value = "response_result") - private String responseResult; - - /** - * 请求IP。 - */ - @TableField(value = "request_ip") - private String requestIp; - - /** - * 应答状态。 - */ - @TableField(value = "success") - private Boolean success; - - /** - * 错误信息。 - */ - @TableField(value = "error_msg") - private String errorMsg; - - /** - * 租户Id。 - * 仅用于多租户系统,是便于进行对租户的操作查询和统计分析。 - */ - @TenantFilterColumn - @TableField(value = "tenant_id") - private Long tenantId; - - /** - * 操作员Id。 - */ - @TableField(value = "operator_id") - private Long operatorId; - - /** - * 操作员名称。 - */ - @TableField(value = "operator_name") - private String operatorName; - - /** - * 操作时间。 - */ - @TableField(value = "operation_time") - private Date operationTime; - - /** - * 调用时长最小值。 - */ - @TableField(exist = false) - private Long elapseMin; - - /** - * 调用时长最大值。 - */ - @TableField(exist = false) - private Long elapseMax; - - /** - * 操作开始时间。 - */ - @TableField(exist = false) - private String operationTimeStart; - - /** - * 操作结束时间。 - */ - @TableField(exist = false) - private String operationTimeEnd; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/constant/SysOperationLogType.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/constant/SysOperationLogType.java deleted file mode 100644 index 2acf6fa8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/model/constant/SysOperationLogType.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.orangeforms.common.log.model.constant; - -import java.util.HashMap; -import java.util.Map; - -/** - * 操作日志类型常量字典对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -public final class SysOperationLogType { - - /** - * 其他。 - */ - public static final int OTHER = -1; - /** - * 登录。 - */ - public static final int LOGIN = 0; - /** - * 登出。 - */ - public static final int LOGOUT = 5; - /** - * 新增。 - */ - public static final int ADD = 10; - /** - * 修改。 - */ - public static final int UPDATE = 15; - /** - * 删除。 - */ - public static final int DELETE = 20; - /** - * 批量删除。 - */ - public static final int DELETE_BATCH = 21; - /** - * 新增多对多关联。 - */ - public static final int ADD_M2M = 25; - /** - * 移除多对多关联。 - */ - public static final int DELETE_M2M = 30; - /** - * 批量移除多对多关联。 - */ - public static final int DELETE_M2M_BATCH = 31; - /** - * 查询。 - */ - public static final int LIST = 35; - /** - * 分组查询。 - */ - public static final int LIST_WITH_GROUP = 40; - /** - * 导出。 - */ - public static final int EXPORT = 45; - /** - * 导入。 - */ - public static final int IMPORT = 46; - /** - * 上传。 - */ - public static final int UPLOAD = 50; - /** - * 下载。 - */ - public static final int DOWNLOAD = 55; - /** - * 重置缓存。 - */ - public static final int RELOAD_CACHE = 60; - /** - * 发布。 - */ - public static final int PUBLISH = 65; - /** - * 取消发布。 - */ - public static final int UNPUBLISH = 70; - /** - * 暂停。 - */ - public static final int SUSPEND = 75; - /** - * 恢复。 - */ - public static final int RESUME = 80; - /** - * 启动流程。 - */ - public static final int START_FLOW = 100; - /** - * 停止流程。 - */ - public static final int STOP_FLOW = 105; - /** - * 删除流程。 - */ - public static final int DELETE_FLOW = 110; - /** - * 取消流程。 - */ - public static final int CANCEL_FLOW = 115; - /** - * 提交任务。 - */ - public static final int SUBMIT_TASK = 120; - /** - * 催办任务。 - */ - public static final int REMIND_TASK = 125; - - private static final Map DICT_MAP = new HashMap<>(15); - static { - DICT_MAP.put(OTHER, "其他"); - DICT_MAP.put(LOGIN, "登录"); - DICT_MAP.put(LOGOUT, "登出"); - DICT_MAP.put(ADD, "新增"); - DICT_MAP.put(UPDATE, "修改"); - DICT_MAP.put(DELETE, "删除"); - DICT_MAP.put(ADD_M2M, "新增多对多关联"); - DICT_MAP.put(DELETE_M2M, "移除多对多关联"); - DICT_MAP.put(LIST, "查询"); - DICT_MAP.put(LIST_WITH_GROUP, "分组查询"); - DICT_MAP.put(EXPORT, "导出"); - DICT_MAP.put(UPLOAD, "上传"); - DICT_MAP.put(DOWNLOAD, "下载"); - DICT_MAP.put(RELOAD_CACHE, "重置缓存"); - DICT_MAP.put(PUBLISH, "发布"); - DICT_MAP.put(UNPUBLISH, "取消发布"); - DICT_MAP.put(SUSPEND, "暂停"); - DICT_MAP.put(RESUME, "恢复"); - DICT_MAP.put(START_FLOW, "启动流程"); - DICT_MAP.put(STOP_FLOW, "停止流程"); - DICT_MAP.put(DELETE_FLOW, "删除流程"); - DICT_MAP.put(CANCEL_FLOW, "取消流程"); - DICT_MAP.put(SUBMIT_TASK, "提交任务"); - DICT_MAP.put(REMIND_TASK, "催办任务"); - } - - /** - * 判断参数是否为当前常量字典的合法值。 - * - * @param value 待验证的参数值。 - * @return 合法返回true,否则false。 - */ - public static boolean isValid(Integer value) { - return value != null && DICT_MAP.containsKey(value); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - private SysOperationLogType() { - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/SysOperationLogService.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/SysOperationLogService.java deleted file mode 100644 index 51ca651d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/SysOperationLogService.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.orangeforms.common.log.service; - -import com.orangeforms.common.core.base.service.IBaseService; -import com.orangeforms.common.log.model.SysOperationLog; - -import java.util.List; - -/** - * 操作日志服务接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface SysOperationLogService extends IBaseService { - - /** - * 异步的插入一条新操作日志。 - * - * @param operationLog 操作日志对象。 - */ - void saveNewAsync(SysOperationLog operationLog); - - /** - * 插入一条新操作日志。 - * - * @param operationLog 操作日志对象。 - */ - void saveNew(SysOperationLog operationLog); - - /** - * 批量插入。 - * - * @param sysOperationLogList 操作日志列表。 - */ - void batchSave(List sysOperationLogList); - - /** - * 根据过滤条件和排序规则,查询操作日志。 - * - * @param filter 操作日志的过滤对象。 - * @param orderBy 排序规则。 - * @return 查询列表。 - */ - List getSysOperationLogList(SysOperationLog filter, String orderBy); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/impl/SysOperationLogServiceImpl.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/impl/SysOperationLogServiceImpl.java deleted file mode 100644 index 1a67bb6f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/java/com/orangeforms/common/log/service/impl/SysOperationLogServiceImpl.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.orangeforms.common.log.service.impl; - -import com.orangeforms.common.core.annotation.MyDataSource; -import com.orangeforms.common.core.base.dao.BaseDaoMapper; -import com.orangeforms.common.core.base.service.BaseService; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.log.dao.SysOperationLogMapper; -import com.orangeforms.common.log.model.SysOperationLog; -import com.orangeforms.common.log.service.SysOperationLogService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/** - * 操作日志服务实现类。 - * 这里需要重点解释下MyDataSource注解。在单数据源服务中,由于没有DataSourceAspect的切面类,所以该注解不会 - * 有任何作用和影响。然而在多数据源情况下,由于每个服务都有自己的DataSourceType常量对象,表示不同的数据源。 - * 而common-log在公用模块中,不能去依赖业务服务,因此这里给出了一个固定值。我们在业务的DataSourceType中,也要 - * 使用该值ApplicationConstant.OPERATION_LOG_DATASOURCE_TYPE,去关联操作日志所需的数据源配置。 - * - * @author Jerry - * @date 2022-02-20 - */ -@MyDataSource(ApplicationConstant.OPERATION_LOG_DATASOURCE_TYPE) -@Service -public class SysOperationLogServiceImpl extends BaseService implements SysOperationLogService { - - @Autowired - private SysOperationLogMapper sysOperationLogMapper; - - @Override - protected BaseDaoMapper mapper() { - return sysOperationLogMapper; - } - - /** - * 异步插入一条新操作日志。通常用于在橙单中创建的单体工程服务。 - * - * @param operationLog 操作日志对象。 - */ - @Async - @Transactional(rollbackFor = Exception.class) - @Override - public void saveNewAsync(SysOperationLog operationLog) { - sysOperationLogMapper.insert(operationLog); - } - - /** - * 插入一条新操作日志。 - * - * @param operationLog 操作日志对象。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public void saveNew(SysOperationLog operationLog) { - sysOperationLogMapper.insert(operationLog); - } - - /** - * 批量插入。通常用于在橙单中创建的微服务工程服务。 - * - * @param sysOperationLogList 操作日志列表。 - */ - @Transactional(rollbackFor = Exception.class) - @Override - public void batchSave(List sysOperationLogList) { - sysOperationLogMapper.insertList(sysOperationLogList); - } - - /** - * 根据过滤条件和排序规则,查询操作日志。 - * - * @param filter 操作日志的过滤对象。 - * @param orderBy 排序规则。 - * @return 查询列表。 - */ - @Override - public List getSysOperationLogList(SysOperationLog filter, String orderBy) { - return sysOperationLogMapper.getSysOperationLogList(filter, orderBy); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/resources/META-INF/spring.factories b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/resources/META-INF/spring.factories deleted file mode 100644 index c1551ebc..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-log/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.orangeforms.common.log.config.CommonLogAutoConfig \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/pom.xml deleted file mode 100644 index c0fe169d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - common - com.orangeforms - 1.0.0 - - 4.0.0 - - common-redis - 1.0.0 - common-redis - jar - - - - com.orangeforms - common-core - 1.0.0 - - - org.redisson - redisson - ${redisson.version} - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisDictionaryCache.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisDictionaryCache.java deleted file mode 100644 index 5ff26ff2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisDictionaryCache.java +++ /dev/null @@ -1,417 +0,0 @@ -package com.orangeforms.common.redis.cache; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.common.core.cache.DictionaryCache; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.exception.RedisCacheAccessException; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections4.CollectionUtils; -import org.redisson.api.RMap; -import org.redisson.api.RedissonClient; - -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * 字典数据Redis缓存对象。 - * - * @param 字典表主键类型。 - * @param 字典表对象类型。 - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class RedisDictionaryCache implements DictionaryCache { - - /** - * 字典数据前缀,便于Redis工具分组显示。 - */ - protected static final String DICT_PREFIX = "DICT-TABLE:"; - /** - * redisson客户端。 - */ - protected final RedissonClient redissonClient; - /** - * 数据存储对象。 - */ - protected final RMap dataMap; - /** - * 字典值对象类型。 - */ - protected final Class valueClazz; - /** - * 由于大部分场景是读取操作,所以使用读写锁提高并发的伸缩性。 - */ - protected final ReadWriteLock lock; - /** - * 获取字典主键数据的函数对象。 - */ - protected final Function idGetter; - /** - * 超时时长。单位毫秒。 - */ - protected static final long TIMEOUT = 2000L; - - /** - * 当前对象的构造器函数。 - * - * @param redissonClient Redisson的客户端对象。 - * @param dictionaryName 字典表的名称。等同于redis hash对象的key。 - * @param valueClazz 值对象的Class对象。 - * @param idGetter 获取当前类主键字段值的函数对象。 - * @param 字典主键类型。 - * @param 字典对象类型 - * @return 实例化后的字典内存缓存对象。 - */ - public static RedisDictionaryCache create( - RedissonClient redissonClient, - String dictionaryName, - Class valueClazz, - Function idGetter) { - if (idGetter == null) { - throw new IllegalArgumentException("IdGetter can't be NULL."); - } - return new RedisDictionaryCache<>(redissonClient, dictionaryName, valueClazz, idGetter); - } - - /** - * 构造函数。 - * - * @param redissonClient Redisson的客户端对象。 - * @param dictionaryName 字典表的名称。等同于redis hash对象的key。确保全局唯一。 - * @param valueClazz 值对象的Class对象。 - * @param idGetter 获取当前类主键字段值的函数对象。 - */ - public RedisDictionaryCache( - RedissonClient redissonClient, - String dictionaryName, - Class valueClazz, - Function idGetter) { - this.redissonClient = redissonClient; - this.dataMap = redissonClient.getMap( - DICT_PREFIX + dictionaryName + ApplicationConstant.DICT_CACHE_NAME_SUFFIX); - this.lock = new ReentrantReadWriteLock(); - this.valueClazz = valueClazz; - this.idGetter = idGetter; - } - - /** - * 按照数据插入的顺序返回全部字典对象的列表。 - * - * @return 全部字段数据列表。 - */ - @Override - public List getAll() { - Collection dataList; - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataList = dataMap.readAllValues(); - } finally { - // 如果上面的操作时间超过redisson.lockWatchdogTimeout的时长, - // redis会将与该锁关联的键删除,此后调用unlock的时候,就会抛出运行时异常。 - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::getAll] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - if (CollectionUtils.isEmpty(dataList)) { - return new LinkedList<>(); - } - return dataList.stream() - .map(data -> JSON.parseObject(data, valueClazz)) - .collect(Collectors.toCollection(LinkedList::new)); - } - - /** - * 获取缓存中与键列表对应的对象列表。 - * - * @param keys 主键集合。 - * @return 对象列表。 - */ - @Override - public List getInList(Set keys) { - if (CollectionUtils.isEmpty(keys)) { - return new LinkedList<>(); - } - Collection dataList; - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataList = dataMap.getAll(keys).values(); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::getInList] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - if (dataList == null) { - return new LinkedList<>(); - } - return dataList.stream() - .map(data -> JSON.parseObject(data, valueClazz)) - .collect(Collectors.toCollection(LinkedList::new)); - } - - /** - * 从缓存中获取指定的数据。 - * - * @param id 数据的key。 - * @return 获取到的数据,如果没有返回null。 - */ - @Override - public V get(K id) { - if (id == null) { - return null; - } - String data; - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - data = dataMap.get(id); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::get] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - if (data == null) { - return null; - } - return JSON.parseObject(data, valueClazz); - } - - /** - * 获取缓存中数据条目的数量。 - * - * @return 返回缓存的数据数量。 - */ - @Override - public int getCount() { - return dataMap.size(); - } - - /** - * 将参数List中的数据保存到缓存中,同时保证getAll返回的数据列表,与参数列表中数据项的顺序保持一致。 - * - * @param dataList 待缓存的数据列表。 - */ - @Override - public void putAll(List dataList) { - if (CollectionUtils.isEmpty(dataList)) { - return; - } - Map map = dataList.stream() - .collect(Collectors.toMap(idGetter, JSON::toJSONString)); - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.putAll(map, 1000); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::putAll] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 将数据存入缓存。 - * - * @param id 通常为字典数据的主键。 - * @param data 字典数据对象。 - */ - @Override - public void put(K id, V data) { - if (id == null || data == null) { - return; - } - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.fastPut(id, JSON.toJSONString(data)); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::put] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 重新加载,先清空原有数据,在执行putAll的操作。 - * - * @param dataList 待缓存的数据列表。 - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - @Override - public void reload(List dataList, boolean force) { - Map map = null; - if (CollectionUtils.isNotEmpty(dataList)) { - map = dataList.stream().collect(Collectors.toMap(idGetter, JSON::toJSONString)); - } - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - // 如果不强制刷新,需要先判断缓存中是否存在数据。 - if (!force && this.getCount() > 0) { - return; - } - dataMap.clear(); - if (map != null) { - dataMap.putAll(map, 1000); - } - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::reload] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 删除缓存中指定的键。 - * - * @param id 待删除数据的主键。 - * @return 返回被删除的对象,如果主键不存在,返回null。 - */ - @Override - public V invalidate(K id) { - if (id == null) { - return null; - } - String data; - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - data = dataMap.remove(id); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::invalidate] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - if (data == null) { - return null; - } - return JSON.parseObject(data, valueClazz); - } - - /** - * 删除缓存中,参数列表中包含的键。 - * - * @param keys 待删除数据的主键集合。 - */ - @SuppressWarnings("unchecked") - @Override - public void invalidateSet(Set keys) { - if (CollectionUtils.isEmpty(keys)) { - return; - } - Object[] keyArray = keys.toArray(new Object[]{}); - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.fastRemove((K[]) keyArray); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::invalidateSet] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 清空缓存。 - */ - @Override - public void invalidateAll() { - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.clear(); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::invalidateAll] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisTreeDictionaryCache.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisTreeDictionaryCache.java deleted file mode 100644 index eca2a114..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedisTreeDictionaryCache.java +++ /dev/null @@ -1,354 +0,0 @@ -package com.orangeforms.common.redis.cache; - -import com.alibaba.fastjson.JSON; -import lombok.extern.slf4j.Slf4j; -import com.orangeforms.common.core.constant.ApplicationConstant; -import com.orangeforms.common.core.exception.RedisCacheAccessException; -import com.google.common.collect.LinkedListMultimap; -import com.google.common.collect.Multimap; -import org.apache.commons.collections4.CollectionUtils; -import org.redisson.api.RListMultimap; -import org.redisson.api.RedissonClient; - -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; -import java.util.function.Function; -import java.util.stream.Collectors; - -/** - * 树形字典数据Redis缓存对象。 - * - * @param 字典表主键类型。 - * @param 字典表对象类型。 - * @author Jerry - * @date 2022-02-20 - */ -@Slf4j -public class RedisTreeDictionaryCache extends RedisDictionaryCache { - - /** - * 树形数据存储对象。 - */ - private final RListMultimap allTreeMap; - /** - * 获取字典父主键数据的函数对象。 - */ - protected final Function parentIdGetter; - - /** - * 当前对象的构造器函数。 - * - * @param redissonClient Redisson的客户端对象。 - * @param dictionaryName 字典表的名称。等同于redis hash对象的key。 - * @param valueClazz 值对象的Class对象。 - * @param idGetter 获取当前类主键字段值的函数对象。 - * @param parentIdGetter 获取当前类父主键字段值的函数对象。 - * @param 字典主键类型。 - * @param 字典对象类型 - * @return 实例化后的树形字典内存缓存对象。 - */ - public static RedisTreeDictionaryCache create( - RedissonClient redissonClient, - String dictionaryName, - Class valueClazz, - Function idGetter, - Function parentIdGetter) { - if (idGetter == null) { - throw new IllegalArgumentException("IdGetter can't be NULL."); - } - if (parentIdGetter == null) { - throw new IllegalArgumentException("ParentIdGetter can't be NULL."); - } - return new RedisTreeDictionaryCache<>( - redissonClient, dictionaryName, valueClazz, idGetter, parentIdGetter); - } - - /** - * 构造函数。 - * - * @param redissonClient Redisson的客户端对象。 - * @param dictionaryName 字典表的名称。等同于redis hash对象的key。 - * @param valueClazz 值对象的Class对象。 - * @param idGetter 获取当前类主键字段值的函数对象。 - * @param parentIdGetter 获取当前类父主键字段值的函数对象。 - */ - public RedisTreeDictionaryCache( - RedissonClient redissonClient, - String dictionaryName, - Class valueClazz, - Function idGetter, - Function parentIdGetter) { - super(redissonClient, dictionaryName, valueClazz, idGetter); - this.allTreeMap = redissonClient.getListMultimap( - DICT_PREFIX + dictionaryName + ApplicationConstant.TREE_DICT_CACHE_NAME_SUFFIX); - this.parentIdGetter = parentIdGetter; - } - - /** - * 获取该父主键的子数据列表。 - * - * @param parentId 父主键Id。如果parentId为null,则返回所有一级节点数据。 - * @return 子数据列表。 - */ - public List getListByParentId(K parentId) { - List dataList; - String exceptionMessage; - try { - if (lock.readLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataList = allTreeMap.get(parentId); - } finally { - lock.readLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisTreeDictionaryCache::getListByParentId] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - if (CollectionUtils.isEmpty(dataList)) { - return new LinkedList<>(); - } - List resultList = new LinkedList<>(); - dataList.forEach(data -> resultList.add(JSON.parseObject(data, valueClazz))); - return resultList; - } - - /** - * 将参数List中的数据保存到缓存中,同时保证getAll返回的数据列表,与参数列表中数据项的顺序保持一致。 - * - * @param dataList 待缓存的数据列表。 - */ - @Override - public void putAll(List dataList) { - if (CollectionUtils.isEmpty(dataList)) { - return; - } - // 锁外执行数据结构组装,降低锁的粒度,提高并发性。 - Map map = dataList.stream() - .collect(Collectors.toMap(idGetter, JSON::toJSONString)); - Multimap treeMap = LinkedListMultimap.create(); - for (V data : dataList) { - treeMap.put(parentIdGetter.apply(data), JSON.toJSONString(data)); - } - Set>> entries = treeMap.asMap().entrySet(); - String exceptionMessage; - try { - if (this.lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.putAll(map, 1000); - for (Map.Entry> entry : entries) { - allTreeMap.removeAll(entry.getKey()); - allTreeMap.putAll(entry.getKey(), entry.getValue()); - } - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisTreeDictionaryCache::putAll] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 将数据存入缓存。 - * - * @param id 通常为字典数据的主键。 - * @param data 字典数据对象。 - */ - @Override - public void put(K id, V data) { - if (id == null || data == null) { - return; - } - String stringData = JSON.toJSONString(data); - K parentId = parentIdGetter.apply(data); - String exceptionMessage; - try { - if (this.lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - String oldData = dataMap.put(id, stringData); - if (oldData != null) { - allTreeMap.remove(parentId, oldData); - } - allTreeMap.put(parentId, stringData); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisTreeDictionaryCache::put] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 行为等同于接口中的描述。这里之所以重写,是因为不确定redisson的读写锁, - * 是否为可重入锁。 - * - * @param dataList 待缓存的数据列表。 - * @param force true则强制刷新,如果false,当缓存中存在数据时不刷新。 - */ - @Override - public void reload(List dataList, boolean force) { - // 锁外执行数据结构组装,降低锁的粒度,提高并发性。 - Map map = null; - Set>> entries = null; - if (CollectionUtils.isNotEmpty(dataList)) { - map = dataList.stream().collect(Collectors.toMap(idGetter, JSON::toJSONString)); - Multimap treeMap = LinkedListMultimap.create(); - for (V data : dataList) { - treeMap.put(parentIdGetter.apply(data), JSON.toJSONString(data)); - } - entries = treeMap.asMap().entrySet(); - } - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - // 如果不强制刷新,需要先判断缓存中是否存在数据。 - if (!force && this.getCount() > 0) { - return; - } - dataMap.clear(); - allTreeMap.clear(); - if (map != null) { - dataMap.putAll(map, 1000); - for (Map.Entry> entry : entries) { - allTreeMap.removeAll(entry.getKey()); - allTreeMap.putAll(entry.getKey(), entry.getValue()); - } - } - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisDictionaryCache::reload] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 删除缓存中指定的键。 - * - * @param id 待删除数据的主键。 - * @return 返回被删除的对象,如果主键不存在,返回null。 - */ - @Override - public V invalidate(K id) { - if (id == null) { - return null; - } - V data = null; - String exceptionMessage; - try { - if (this.lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - String stringData = dataMap.remove(id); - if (stringData != null) { - data = JSON.parseObject(stringData, valueClazz); - K parentId = parentIdGetter.apply(data); - allTreeMap.remove(parentId, stringData); - } - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisTreeDictionaryCache::invalidate] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - return data; - } - - /** - * 删除缓存中,参数列表中包含的键。 - * - * @param keys 待删除数据的主键集合。 - */ - @Override - public void invalidateSet(Set keys) { - if (CollectionUtils.isEmpty(keys)) { - return; - } - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - keys.forEach(id -> { - if (id != null) { - String stringData = dataMap.remove(id); - if (stringData != null) { - K parentId = parentIdGetter.apply(JSON.parseObject(stringData, valueClazz)); - allTreeMap.remove(parentId, stringData); - } - } - }); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisTreeDictionaryCache::invalidateSet] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } - - /** - * 清空缓存。 - */ - @Override - public void invalidateAll() { - String exceptionMessage; - try { - if (lock.writeLock().tryLock(TIMEOUT, TimeUnit.MILLISECONDS)) { - try { - dataMap.clear(); - allTreeMap.clear(); - } finally { - lock.writeLock().unlock(); - } - } else { - throw new TimeoutException(); - } - } catch (Exception e) { - exceptionMessage = String.format( - "LOCK Operation of [RedisTreeDictionaryCache::invalidateAll] encountered EXCEPTION [%s] for DICT [%s].", - e.getClass().getSimpleName(), valueClazz.getSimpleName()); - log.warn(exceptionMessage); - throw new RedisCacheAccessException(exceptionMessage, e); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedissonCacheConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedissonCacheConfig.java deleted file mode 100644 index 8242b8c6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/RedissonCacheConfig.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.orangeforms.common.redis.cache; - -import com.google.common.collect.Maps; -import org.redisson.api.RedissonClient; -import org.redisson.spring.cache.CacheConfig; -import org.redisson.spring.cache.RedissonSpringCacheManager; -import org.springframework.cache.CacheManager; -import org.springframework.cache.annotation.EnableCaching; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.Map; - -/** - * 使用Redisson作为Redis的分布式缓存库。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -@EnableCaching -public class RedissonCacheConfig { - - private static final int DEFAULT_TTL = 3600000; - - /** - * 定义cache名称、超时时长(毫秒)。 - */ - public enum CacheEnum { - /** - * session下上传文件名的缓存(时间是24小时)。 - */ - UPLOAD_FILENAME_CACHE(86400000), - /** - * 缺省全局缓存(时间是24小时)。 - */ - GLOBAL_CACHE(86400000); - - /** - * 缓存的时长(单位:毫秒) - */ - private int ttl = DEFAULT_TTL; - - CacheEnum() { - } - - CacheEnum(int ttl) { - this.ttl = ttl; - } - - public int getTtl() { - return ttl; - } - } - - /** - * 初始化缓存配置。 - */ - @Bean - CacheManager cacheManager(RedissonClient redissonClient) { - Map config = Maps.newHashMap(); - for (CacheEnum c : CacheEnum.values()) { - config.put(c.name(), new CacheConfig(c.getTtl(), 0)); - } - return new RedissonSpringCacheManager(redissonClient, config); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/SessionCacheHelper.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/SessionCacheHelper.java deleted file mode 100644 index 6366c5e4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/cache/SessionCacheHelper.java +++ /dev/null @@ -1,97 +0,0 @@ -package com.orangeforms.common.redis.cache; - -import cn.hutool.core.collection.CollUtil; -import com.orangeforms.common.core.object.TokenData; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.Cache; -import org.springframework.cache.CacheManager; -import org.springframework.stereotype.Component; - -import java.util.HashSet; -import java.util.Set; - -/** - * Session数据缓存辅助类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@SuppressWarnings("unchecked") -@Component -public class SessionCacheHelper { - - @Autowired - private CacheManager cacheManager; - - /** - * 缓存当前session内,上传过的文件名。 - * - * @param filename 通常是本地存储的文件名,而不是上传时的原始文件名。 - */ - public void putSessionUploadFile(String filename) { - if (filename != null) { - Set sessionUploadFileSet = null; - Cache cache = cacheManager.getCache(RedissonCacheConfig.CacheEnum.UPLOAD_FILENAME_CACHE.name()); - Cache.ValueWrapper valueWrapper = cache.get(TokenData.takeFromRequest().getSessionId()); - if (valueWrapper != null) { - sessionUploadFileSet = (Set) valueWrapper.get(); - } - if (sessionUploadFileSet == null) { - sessionUploadFileSet = new HashSet<>(); - } - sessionUploadFileSet.add(filename); - cache.put(TokenData.takeFromRequest().getSessionId(), sessionUploadFileSet); - } - } - - /** - * 缓存当前Session可以下载的文件集合。 - * - * @param filenameSet 后台服务本地存储的文件名,而不是上传时的原始文件名。 - */ - public void putSessionDownloadableFileNameSet(Set filenameSet) { - if (CollUtil.isEmpty(filenameSet)) { - return; - } - Set sessionUploadFileSet = null; - Cache cache = cacheManager.getCache(RedissonCacheConfig.CacheEnum.UPLOAD_FILENAME_CACHE.name()); - Cache.ValueWrapper valueWrapper = cache.get(TokenData.takeFromRequest().getSessionId()); - if (valueWrapper != null) { - sessionUploadFileSet = (Set) valueWrapper.get(); - } - if (sessionUploadFileSet == null) { - sessionUploadFileSet = new HashSet<>(); - } - sessionUploadFileSet.addAll(filenameSet); - cache.put(TokenData.takeFromRequest().getSessionId(), sessionUploadFileSet); - } - - /** - * 判断参数中的文件名,是否有当前session上传。 - * - * @param filename 通常是本地存储的文件名,而不是上传时的原始文件名。 - * @return true表示该文件是由当前session上传并存储在本地的,否则false。 - */ - public boolean existSessionUploadFile(String filename) { - if (filename == null) { - return false; - } - Cache cache = cacheManager.getCache(RedissonCacheConfig.CacheEnum.UPLOAD_FILENAME_CACHE.name()); - Cache.ValueWrapper valueWrapper = cache.get(TokenData.takeFromRequest().getSessionId()); - if (valueWrapper == null) { - return false; - } - return ((Set) valueWrapper.get()).contains(filename); - } - - /** - * 清除当前session的所有缓存数据。 - * - * @param sessionId 当前会话的SessionId。 - */ - public void removeAllSessionCache(String sessionId) { - for (RedissonCacheConfig.CacheEnum c : RedissonCacheConfig.CacheEnum.values()) { - cacheManager.getCache(c.name()).evict(sessionId); - } - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/config/RedissonConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/config/RedissonConfig.java deleted file mode 100644 index c81f7e01..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/java/com/orangeforms/common/redis/config/RedissonConfig.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.orangeforms.common.redis.config; - -import cn.hutool.core.util.ArrayUtil; -import cn.hutool.core.util.StrUtil; -import com.orangeforms.common.core.exception.InvalidRedisModeException; -import org.redisson.Redisson; -import org.redisson.api.RedissonClient; -import org.redisson.config.Config; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -/** - * Redisson配置类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Configuration -@ConditionalOnProperty(name = "redis.redisson.enabled", havingValue = "true") -public class RedissonConfig { - - @Value("${redis.redisson.lockWatchdogTimeout}") - private Integer lockWatchdogTimeout; - - @Value("${redis.redisson.mode}") - private String mode; - - /** - * 仅仅用于sentinel模式。 - */ - @Value("${redis.redisson.masterName:}") - private String masterName; - - @Value("${redis.redisson.address}") - private String address; - - @Value("${redis.redisson.timeout}") - private Integer timeout; - - @Value("${redis.redisson.password:}") - private String password; - - @Value("${redis.redisson.pool.poolSize}") - private Integer poolSize; - - @Value("${redis.redisson.pool.minIdle}") - private Integer minIdle; - - @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) - .setConnectTimeout(timeout); - } else if ("cluster".equals(mode)) { - String[] clusterAddresses = StrUtil.splitToArray(address, ','); - config.setLockWatchdogTimeout(lockWatchdogTimeout) - .useClusterServers() - .setPassword(password) - .addNodeAddress(clusterAddresses) - .setConnectTimeout(timeout) - .setMasterConnectionPoolSize(poolSize) - .setMasterConnectionMinimumIdleSize(minIdle); - } else if ("sentinel".equals(mode)) { - String[] sentinelAddresses = StrUtil.splitToArray(address, ','); - config.setLockWatchdogTimeout(lockWatchdogTimeout) - .useSentinelServers() - .setPassword(password) - .setMasterName(masterName) - .addSentinelAddress(sentinelAddresses) - .setConnectTimeout(timeout) - .setMasterConnectionPoolSize(poolSize) - .setMasterConnectionMinimumIdleSize(minIdle); - } else if ("master-slave".equals(mode)) { - String[] masterSlaveAddresses = StrUtil.splitToArray(address, ','); - if (masterSlaveAddresses.length == 1) { - throw new IllegalArgumentException( - "redis.redisson.address MUST have multiple redis addresses for master-slave mode."); - } - String[] slaveAddresses = new String[masterSlaveAddresses.length - 1]; - ArrayUtil.copy(masterSlaveAddresses, 1, slaveAddresses, 0, slaveAddresses.length); - config.setLockWatchdogTimeout(lockWatchdogTimeout) - .useMasterSlaveServers() - .setPassword(password) - .setMasterAddress(masterSlaveAddresses[0]) - .addSlaveAddress(slaveAddresses) - .setConnectTimeout(timeout) - .setMasterConnectionPoolSize(poolSize) - .setMasterConnectionMinimumIdleSize(minIdle); - } else { - throw new InvalidRedisModeException(mode); - } - return Redisson.create(config); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/resources/META-INF/spring.factories b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/resources/META-INF/spring.factories deleted file mode 100644 index f24e3d92..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-redis/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.orangeforms.common.redis.config.RedissonConfig \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/pom.xml deleted file mode 100644 index 36502af3..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - common - com.orangeforms - 1.0.0 - - 4.0.0 - - common-sequence - 1.0.0 - common-sequence - jar - - - - com.orangeforms - common-core - 1.0.0 - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorAutoConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorAutoConfig.java deleted file mode 100644 index 9f2c9996..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorAutoConfig.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.orangeforms.common.sequence.config; - -import org.springframework.boot.context.properties.EnableConfigurationProperties; - -/** - * common-sequence模块的自动配置引导类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@EnableConfigurationProperties({IdGeneratorProperties.class}) -public class IdGeneratorAutoConfig { - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorProperties.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorProperties.java deleted file mode 100644 index 43f291ec..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/config/IdGeneratorProperties.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.orangeforms.common.sequence.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * common-sequence模块的配置类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ConfigurationProperties(prefix = "sequence") -public class IdGeneratorProperties { - - /** - * 基础版生成器所需的WorkNode参数值。仅当advanceIdGenerator为false时生效。 - */ - private Integer snowflakeWorkNode = 1; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/BasicIdGenerator.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/BasicIdGenerator.java deleted file mode 100644 index d9c7c100..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/BasicIdGenerator.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.orangeforms.common.sequence.generator; - -import cn.hutool.core.lang.Snowflake; -import cn.hutool.core.util.IdUtil; - -/** - * 基础版snowflake计算工具类。 - * 和SnowflakeIdGenerator相比,相同点是均为基于Snowflake算法的生成器。不同点在于当前类的 - * WorkNodeId是通过配置文件静态指定的。而SnowflakeIdGenerator的WorkNodeId是由zk生成的。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class BasicIdGenerator implements MyIdGenerator { - - private final Snowflake snowflake; - - /** - * 构造函数。 - * - * @param workNode 工作节点。 - */ - public BasicIdGenerator(Integer workNode) { - snowflake = IdUtil.createSnowflake(workNode, 0); - } - - /** - * 获取基于Snowflake算法的数值型Id。 - * 由于底层实现为synchronized方法,因此计算过程串行化,且线程安全。 - * - * @return 计算后的全局唯一Id。 - */ - @Override - public long nextLongId() { - return this.snowflake.nextId(); - } - - /** - * 获取基于Snowflake算法的字符串Id。 - * 由于底层实现为synchronized方法,因此计算过程串行化,且线程安全。 - * - * @return 计算后的全局唯一Id。 - */ - @Override - public String nextStringId() { - return this.snowflake.nextIdStr(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/MyIdGenerator.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/MyIdGenerator.java deleted file mode 100644 index 6049a2a2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/generator/MyIdGenerator.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.orangeforms.common.sequence.generator; - -/** - * 分布式Id生成器的统一接口。 - * - * @author Jerry - * @date 2022-02-20 - */ -public interface MyIdGenerator { - - /** - * 获取数值型分布式Id。 - * - * @return 生成后的Id。 - */ - long nextLongId(); - - /** - * 获取字符型分布式Id。 - * - * @return 生成后的Id。 - */ - String nextStringId(); -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/wrapper/IdGeneratorWrapper.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/wrapper/IdGeneratorWrapper.java deleted file mode 100644 index e4f2e09a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/java/com/orangeforms/common/sequence/wrapper/IdGeneratorWrapper.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.orangeforms.common.sequence.wrapper; - -import com.orangeforms.common.sequence.config.IdGeneratorProperties; -import com.orangeforms.common.sequence.generator.BasicIdGenerator; -import com.orangeforms.common.sequence.generator.MyIdGenerator; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import javax.annotation.PostConstruct; - -/** - * 分布式Id生成器的封装类。该对象可根据配置选择不同的生成器实现类。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Component -public class IdGeneratorWrapper { - - @Autowired - private IdGeneratorProperties properties; - /** - * Id生成器接口对象。 - */ - private MyIdGenerator idGenerator; - - /** - * 今后如果支持更多Id生成器时,可以在该函数内实现不同生成器的动态选择。 - */ - @PostConstruct - public void init() { - idGenerator = new BasicIdGenerator(properties.getSnowflakeWorkNode()); - } - - /** - * 由于底层实现为synchronized方法,因此计算过程串行化,且线程安全。 - * - * @return 计算后的全局唯一Id。 - */ - public long nextLongId() { - return idGenerator.nextLongId(); - } - - /** - * 由于底层实现为synchronized方法,因此计算过程串行化,且线程安全。 - * - * @return 计算后的全局唯一Id。 - */ - public String nextStringId() { - return idGenerator.nextStringId(); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/resources/META-INF/spring.factories b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/resources/META-INF/spring.factories deleted file mode 100644 index dd267e85..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-sequence/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.orangeforms.common.sequence.config.IdGeneratorAutoConfig \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/pom.xml deleted file mode 100644 index c1e9bcde..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/pom.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - common - com.orangeforms - 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.orangeforms - common-core - 1.0.0 - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerAutoConfiguration.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerAutoConfiguration.java deleted file mode 100644 index 369f6115..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerAutoConfiguration.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.orangeforms.common.swagger.config; - -import com.orangeforms.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 2022-02-20 - */ -@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.getServiceBasePackage() + ".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.getServiceBasePackage() + ".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-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerProperties.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerProperties.java deleted file mode 100644 index 0e79e283..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/config/SwaggerProperties.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.orangeforms.common.swagger.config; - -import lombok.Data; -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * 配置参数对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -@ConfigurationProperties("swagger") -public class SwaggerProperties { - - /** - * 是否开启Swagger。 - */ - private Boolean enabled; - - /** - * Swagger解析的基础包路径。 - **/ - private String basePackage = ""; - - /** - * Swagger解析的服务包路径。 - **/ - private String serviceBasePackage = ""; - - /** - * ApiInfo中的标题。 - **/ - private String title = ""; - - /** - * ApiInfo中的描述信息。 - **/ - private String description = ""; - - /** - * ApiInfo中的版本信息。 - **/ - private String version = ""; -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/ByteBuddyUtil.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/ByteBuddyUtil.java deleted file mode 100644 index f8064479..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/ByteBuddyUtil.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.orangeforms.common.swagger.plugin; - -import cn.hutool.core.lang.Assert; -import com.orangeforms.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 2022-02-20 - */ -@Slf4j -class ByteBuddyUtil { - private static final ClassPool CLASS_POOL = ClassPool.getDefault(); - - 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-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyModelPlugin.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyModelPlugin.java deleted file mode 100644 index 5534716c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyModelPlugin.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.orangeforms.common.swagger.plugin; - -import com.orangeforms.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 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyParameterBuilder.java b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyParameterBuilder.java deleted file mode 100644 index f361afe4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/java/com/orangeforms/common/swagger/plugin/DynamicBodyParameterBuilder.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.orangeforms.common.swagger.plugin; - -import com.orangeforms.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 2022-02-20 - */ -@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-pg/orange-demo-single-pg-service/common/common-swagger/src/main/resources/META-INF/spring.factories b/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/resources/META-INF/spring.factories deleted file mode 100644 index cc7814c5..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/common-swagger/src/main/resources/META-INF/spring.factories +++ /dev/null @@ -1,2 +0,0 @@ -org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ -com.orangeforms.common.swagger.config.SwaggerAutoConfiguration \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/common/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/common/pom.xml deleted file mode 100644 index b0464c5c..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/common/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - com.orangeforms - DemoSinglePg - 1.0.0 - - 4.0.0 - - common - pom - - - common-core - common-log - common-datafilter - common-redis - common-sequence - common-swagger - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/pom.xml deleted file mode 100644 index 384b3743..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/pom.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - framework - com.orangeforms - 1.0.0 - - 4.0.0 - - apidoc-tools - 1.0.0 - apidoc-tools - jar - - - - com.orangeforms - common-core - 1.0.0 - - - com.thoughtworks.qdox - qdox - ${qdox.version} - - - \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportApiApp.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportApiApp.java deleted file mode 100644 index 16236cd5..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportApiApp.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.apidoc.tools; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.apidoc.tools.codeparser.ApiCodeConfig; -import com.orangeforms.apidoc.tools.codeparser.ApiCodeParser; -import com.orangeforms.apidoc.tools.export.ApiPostmanExporter; -import freemarker.template.TemplateException; -import org.springframework.util.StreamUtils; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; - -public class ExportApiApp { - - public static void main(String[] args) throws IOException, TemplateException { - // 在第一次导出时,需要打开export-api-config.json配置文件, - // 修改其中的工程根目录配置项(projectRootPath),其他配置保持不变即可。 - InputStream in = ExportApiApp.class.getResourceAsStream("/export-api-config.json"); - String jsonData = StreamUtils.copyToString(in, StandardCharsets.UTF_8); - ApiCodeConfig apiCodeConfig = JSON.parseObject(jsonData, ApiCodeConfig.class); - ApiCodeParser apiCodeParser = new ApiCodeParser(apiCodeConfig); - ApiCodeParser.ApiProject project = apiCodeParser.doParse(); - ApiPostmanExporter exporter = new ApiPostmanExporter(); - // 将下面的目录改为实际输出目录。 - exporter.doGenerate(project, "/xxx/Desktop/1.json"); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportDocApp.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportDocApp.java deleted file mode 100644 index 06c9613a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/ExportDocApp.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.apidoc.tools; - -import com.alibaba.fastjson.JSON; -import com.orangeforms.apidoc.tools.codeparser.ApiCodeConfig; -import com.orangeforms.apidoc.tools.codeparser.ApiCodeParser; -import com.orangeforms.apidoc.tools.export.ApiDocExporter; -import freemarker.template.TemplateException; -import org.springframework.util.StreamUtils; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; - -public class ExportDocApp { - - public static void main(String[] args) throws IOException, TemplateException { - // 在第一次导出时,需要打开export-api-config.json配置文件, - // 修改其中的工程根目录配置项(projectRootPath),其他配置保持不变即可。 - InputStream in = ExportDocApp.class.getResourceAsStream("/export-api-config.json"); - String jsonData = StreamUtils.copyToString(in, StandardCharsets.UTF_8); - ApiCodeConfig apiCodeConfig = JSON.parseObject(jsonData, ApiCodeConfig.class); - ApiCodeParser apiCodeParser = new ApiCodeParser(apiCodeConfig); - ApiCodeParser.ApiProject project = apiCodeParser.doParse(); - ApiDocExporter exporter = new ApiDocExporter(); - // 将下面的目录改为实际输出目录。 - exporter.doGenerate(project, "/xxx/Desktop/2.md"); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeConfig.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeConfig.java deleted file mode 100644 index 8552f098..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeConfig.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.orangeforms.apidoc.tools.codeparser; - -import lombok.Data; - -import java.util.List; -import java.util.Set; - -/** - * 解析项目中接口信息的配置对象。 - * - * @author Jerry - * @date 2022-02-20 - */ -@Data -public class ApiCodeConfig { - - /** - * 项目名称。 - */ - private String projectName; - /** - * 项目的基础包名,如(com.demo.multi)。 - */ - private String basePackage; - /** - * 项目在本地文件系统中的根目录。这里需要注意的是,Windows用户请务必使用反斜杠作为目录分隔符。 - * 如:"e:/mypath/OrangeSingleDemo","/Users/xxx/OrangeSingleDemo"。 - */ - private String projectRootPath; - /** - * 是否为微服务项目。 - */ - private Boolean microService; - /** - * 服务配置列表。对于单体服务,至少也会有一个ServiceConfig对象。 - */ - private List serviceList; - - @Data - public static class ServiceConfig { - /** - * 服务名称。 - */ - private String serviceName; - /** - * 服务中文显示名称。 - */ - private String showName; - /** - * 服务所在目录,相对于工程目录的子目录。 - */ - private String servicePath; - /** - * 仅用于微服务工程。通常为服务路由路径,如:/admin/coursepaper。服务内的接口,都会加上该路径前缀。 - */ - private String serviceRequestPath; - /** - * 服务的端口号。 - */ - private String port; - /** - * Api Controller信息列表。 - */ - private List controllerInfoList; - } - - @Data - public static class ControllerInfo { - /** - * Controller.java等接口文件的所在目录。该目录仅为相对于服务代码目录的子目录。 - * 目录分隔符请务必使用反斜杠。如:"/com/orange/demo/app/controller"。 - */ - private String path; - /** - * 如果一个服务内,存在多个Controller目录,将再次生成二级子目录,目录名为groupName。(可使用中文) - */ - private String groupName; - /** - * 在当前Controller目录下,需要忽略的Controller列表 (只写类名即可)。如:LoginController。 - */ - private Set skipControllers; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeParser.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeParser.java deleted file mode 100644 index 9658e38a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/codeparser/ApiCodeParser.java +++ /dev/null @@ -1,672 +0,0 @@ -package com.orangeforms.apidoc.tools.codeparser; - -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.io.FileUtil; -import cn.hutool.core.util.StrUtil; -import com.orangeforms.common.core.object.Tuple2; -import com.orangeforms.apidoc.tools.exception.ApiCodeConfigParseException; -import com.thoughtworks.qdox.JavaProjectBuilder; -import com.thoughtworks.qdox.model.*; -import com.thoughtworks.qdox.model.impl.DefaultJavaParameterizedType; -import lombok.Data; - -import java.io.File; -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.*; - -/** - * 解析项目中的接口信息,以及关联的Model、Dto和Mapper,主要用于生成接口文档。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class ApiCodeParser { - - private static final String PATH_SEPERATOR = "/"; - private static final String REQUEST_MAPPING = "RequestMapping"; - private static final String FULL_REQUEST_MAPPING = "org.springframework.web.bind.annotation.RequestMapping"; - private static final String GET_MAPPING = "GetMapping"; - private static final String FULL_GET_MAPPING = "org.springframework.web.bind.annotation.GetMapping"; - private static final String POST_MAPPING = "PostMapping"; - private static final String FULL_POST_MAPPING = "org.springframework.web.bind.annotation.PostMapping"; - private static final String VALUE_PROP = "value"; - private static final String REQUIRED_PROP = "required"; - private static final String DELETED_COLUMN = "DeletedFlagColumn"; - - /** - * 忽略微服务间标准调用接口的导出。 - */ - private static final Set IGNORED_API_METHOD_SET = new HashSet<>(8); - - static { - IGNORED_API_METHOD_SET.add("listByIds"); - IGNORED_API_METHOD_SET.add("getById"); - IGNORED_API_METHOD_SET.add("existIds"); - IGNORED_API_METHOD_SET.add("existId"); - IGNORED_API_METHOD_SET.add("deleteById"); - IGNORED_API_METHOD_SET.add("deleteBy"); - IGNORED_API_METHOD_SET.add("listBy"); - IGNORED_API_METHOD_SET.add("listMapBy"); - IGNORED_API_METHOD_SET.add("listByNotInList"); - IGNORED_API_METHOD_SET.add("getBy"); - IGNORED_API_METHOD_SET.add("countBy"); - IGNORED_API_METHOD_SET.add("aggregateBy"); - } - - /** - * 基础配置。 - */ - private ApiCodeConfig config; - /** - * 工程对象。 - */ - private ApiProject apiProject; - /** - * 项目中所有的解析后Java文件,key是Java对象的全名,如:com.orangeforms.xxxx.Student。 - */ - private final Map projectJavaClassMap = new HashMap<>(128); - /** - * 存储服务数据。key为配置的serviceName。 - */ - private final Map serviceDataMap = new HashMap<>(8); - - /** - * 构造函数。 - * - * @param config 配置对象。 - */ - public ApiCodeParser(ApiCodeConfig config) { - this.config = config; - // 验证配置中的数据是否正确,出现错误直接抛出运行时异常。 - this.verifyConfigData(); - // 将配置文件中所有目录相关的参数,全部规格化处理,后续的使用中不用再做处理了。 - this.normalizeConfigPath(); - for (ApiCodeConfig.ServiceConfig serviceConfig : config.getServiceList()) { - InternalServiceData serviceData = new InternalServiceData(); - // 仅有微服务项目,需要添加服务路由路径。 - if (StrUtil.isNotBlank(serviceConfig.getServiceRequestPath())) { - String serviceRequestPath = ""; - if (!serviceRequestPath.equals(PATH_SEPERATOR)) { - serviceRequestPath = normalizePath(serviceConfig.getServiceRequestPath()); - } - serviceData.setServiceRequestPath(serviceRequestPath); - } - serviceDataMap.put(serviceConfig.getServiceName(), serviceData); - } - } - - /** - * 执行解析操作。 - * - * @return 解析后的工程对象。 - */ - public ApiProject doParse() throws IOException { - // 先把工程完整编译一遍,以便工程内的Java对象的引用信息更加完整。 - this.parseProject(); - // 开始逐级推演。 - apiProject = new ApiProject(); - apiProject.setProjectName(config.getProjectName()); - apiProject.setMicroService(config.getMicroService()); - apiProject.setServiceList(new LinkedList<>()); - for (ApiCodeConfig.ServiceConfig serviceConfig : config.getServiceList()) { - ApiService apiService = this.parseService(serviceConfig); - apiProject.getServiceList().add(apiService); - } - return apiProject; - } - - private void parseProject() throws IOException { - JavaProjectBuilder javaProjectBuilder = new JavaProjectBuilder(); - javaProjectBuilder.setEncoding(StandardCharsets.UTF_8.name()); - javaProjectBuilder.addSourceTree(new File(config.getProjectRootPath())); - // 全部导入,便于后续解析中使用和检索。 - for (JavaClass javaClass : javaProjectBuilder.getClasses()) { - projectJavaClassMap.put(javaClass.getFullyQualifiedName(), javaClass); - } - } - - private ApiService parseService(ApiCodeConfig.ServiceConfig serviceConfig) { - InternalServiceData serviceData = serviceDataMap.get(serviceConfig.getServiceName()); - ApiService apiService = new ApiService(); - apiService.setServiceName(serviceConfig.getServiceName()); - apiService.setShowName(serviceConfig.getShowName()); - apiService.setPort(serviceConfig.getPort()); - List controllerInfoList = serviceConfig.getControllerInfoList(); - // 准备解析接口文件 - for (ApiCodeConfig.ControllerInfo controllerInfo : controllerInfoList) { - JavaProjectBuilder javaControllerBuilder = new JavaProjectBuilder(); - javaControllerBuilder.addSourceTree(new File(controllerInfo.getPath())); - for (JavaClass javaClass : javaControllerBuilder.getClasses()) { - if (controllerInfo.getSkipControllers() != null - && controllerInfo.getSkipControllers().contains(javaClass.getName())) { - continue; - } - ApiClass apiClass = this.parseApiClass(controllerInfo, javaClass.getFullyQualifiedName(), serviceData); - if (apiClass != null) { - // 如果配置中,为当前ControllerInfo添加了groupName属性, - // 所有的生成后接口都会位于serviceName/groupName子目录,否则,都直接位于当前服务的子目录。 - if (StrUtil.isBlank(apiClass.getGroupName())) { - apiService.getDefaultGroupClassSet().add(apiClass); - } else { - Set groupedClassList = apiService.getGroupedClassMap() - .computeIfAbsent(apiClass.getGroupName(), k -> new TreeSet<>()); - groupedClassList.add(apiClass); - } - } - } - } - return apiService; - } - - private ApiClass parseApiClass( - ApiCodeConfig.ControllerInfo controllerInfo, - String classFullname, - InternalServiceData serviceData) { - // 去包含工程全部Class的Map中,找到当前ControllerClass。 - // 之所以这样做,主要是因为全工程分析controller文件,会包含更多更精确的对象关联信息。 - JavaClass controllerClass = this.projectJavaClassMap.get(classFullname); - List classAnnotations = controllerClass.getAnnotations(); - boolean hasControllerAnnotation = false; - String requestPath = ""; - for (JavaAnnotation annotation : classAnnotations) { - String annotationName = annotation.getType().getValue(); - if (this.isRequestMapping(annotationName) && annotation.getNamedParameter(VALUE_PROP) != null) { - requestPath = StrUtil.removeAll( - annotation.getNamedParameter(VALUE_PROP).toString(), "\""); - if (requestPath.equals(PATH_SEPERATOR) || StrUtil.isBlank(requestPath)) { - requestPath = ""; - } else { - requestPath = normalizePath(requestPath); - } - } - if (isController(annotationName)) { - hasControllerAnnotation = true; - } - } - if (!hasControllerAnnotation) { - return null; - } - requestPath = serviceData.getServiceRequestPath() + requestPath; - ApiClass apiClass = new ApiClass(); - apiClass.setName(controllerClass.getName()); - apiClass.setFullName(controllerClass.getFullyQualifiedName()); - apiClass.setComment(controllerClass.getComment()); - apiClass.setGroupName(controllerInfo.getGroupName()); - apiClass.setRequestPath(requestPath); - List methodList = this.parseApiMethodList(apiClass, controllerClass); - apiClass.setMethodList(methodList); - return apiClass; - } - - private boolean needToIgnore(JavaMethod method) { - return !method.isPublic() || method.isStatic() || IGNORED_API_METHOD_SET.contains(method.getName()); - } - - private List parseApiMethodList(ApiClass apiClass, JavaClass javaClass) { - List apiMethodList = new LinkedList<>(); - List methodList = javaClass.getMethods(); - for (JavaMethod method : methodList) { - if (this.needToIgnore(method)) { - continue; - } - List methodAnnotations = method.getAnnotations(); - Tuple2 result = this.parseRequestPathAndHttpMethod(methodAnnotations); - String methodRequestPath = result.getFirst(); - String httpMethod = result.getSecond(); - if (StrUtil.isNotBlank(methodRequestPath)) { - ApiMethod apiMethod = new ApiMethod(); - apiMethod.setName(method.getName()); - apiMethod.setComment(method.getComment()); - apiMethod.setHttpMethod(httpMethod); - methodRequestPath = StrUtil.removeAll(methodRequestPath, "\""); - methodRequestPath = apiClass.getRequestPath() + normalizePath(methodRequestPath); - apiMethod.setRequestPath(methodRequestPath); - apiMethod.setPathList(StrUtil.splitTrim(apiMethod.getRequestPath(), PATH_SEPERATOR)); - if (apiMethod.getRequestPath().contains("/listDict")) { - apiMethod.setListDictUrl(true); - } else if (apiMethod.getRequestPath().endsWith("/list") - || apiMethod.getRequestPath().endsWith("/listWithGroup") - || apiMethod.getRequestPath().contains("/listNotIn") - || apiMethod.getRequestPath().contains("/list")) { - apiMethod.setListUrl(true); - } else if (apiMethod.getRequestPath().contains("/doLogin")) { - apiMethod.setLoginUrl(true); - } - JavaClass returnClass = method.getReturns(); - if (returnClass.isVoid()) { - apiMethod.setReturnString("void"); - } else { - apiMethod.setReturnString(returnClass.getGenericValue()); - } - apiMethodList.add(apiMethod); - List apiArgumentList = this.parseApiMethodArgumentList(method); - apiMethod.setArgumentList(apiArgumentList); - this.classifyArgumentList(apiMethod, apiArgumentList); - } - } - return apiMethodList; - } - - private void classifyArgumentList(ApiMethod apiMethod, List apiArgumentList) { - for (ApiArgument arg : apiArgumentList) { - if (arg.getAnnotationType() == ApiArgumentAnnotationType.REQUEST_PARAM) { - if (arg.uploadFileParam) { - apiMethod.getUploadParamArgumentList().add(arg); - } else { - apiMethod.getQueryParamArgumentList().add(arg); - } - } - if (arg.getAnnotationType() != ApiArgumentAnnotationType.REQUEST_PARAM) { - apiMethod.getJsonParamArgumentList().add(arg); - } - } - } - - private Tuple2 parseRequestPathAndHttpMethod(List methodAnnotations) { - for (JavaAnnotation annotation : methodAnnotations) { - String annotationName = annotation.getType().getValue(); - if (GET_MAPPING.equals(annotationName) || FULL_GET_MAPPING.equals(annotationName)) { - String methodRequestPath = annotation.getNamedParameter(VALUE_PROP).toString(); - String httpMethod = "GET"; - return new Tuple2<>(methodRequestPath, httpMethod); - } - if (POST_MAPPING.equals(annotationName) || FULL_POST_MAPPING.equals(annotationName)) { - String methodRequestPath = annotation.getNamedParameter(VALUE_PROP).toString(); - String httpMethod = "POST"; - return new Tuple2<>(methodRequestPath, httpMethod); - } - } - return new Tuple2<>(null, null); - } - - private List parseApiMethodArgumentList(JavaMethod javaMethod) { - List apiArgumentList = new LinkedList<>(); - List parameterList = javaMethod.getParameters(); - if (CollUtil.isEmpty(parameterList)) { - return apiArgumentList; - } - for (JavaParameter parameter : parameterList) { - String typeName = parameter.getType().getValue(); - // 该类型的参数为Validator的验证结果对象,因此忽略。 - if ("BindingResult".equals(typeName) || this.isServletArgument(typeName)) { - continue; - } - ApiArgument apiArgument = this.parseApiMethodArgument(parameter); - apiArgumentList.add(apiArgument); - } - return apiArgumentList; - } - - private String parseMethodArgmentComment(JavaParameter parameter) { - String comment = null; - JavaExecutable executable = parameter.getExecutable(); - List tags = executable.getTagsByName("param"); - if (CollUtil.isNotEmpty(tags)) { - for (DocletTag tag : tags) { - if (tag.getValue().startsWith(parameter.getName())) { - comment = StrUtil.removePrefix(tag.getValue(), parameter.getName()).trim(); - break; - } - } - } - return comment; - } - - private ApiArgument parseApiMethodArgument(JavaParameter parameter) { - String typeName = parameter.getType().getValue(); - ApiArgument apiArgument = new ApiArgument(); - ApiArgumentAnnotation argumentAnnotation = - this.parseArgumentAnnotationTypeAndName(parameter.getAnnotations(), parameter.getName()); - apiArgument.setAnnotationType(argumentAnnotation.getType()); - apiArgument.setName(argumentAnnotation.getName()); - apiArgument.setTypeName(typeName); - apiArgument.setFullTypeName(parameter.getFullyQualifiedName()); - if (argumentAnnotation.getType() == ApiArgumentAnnotationType.REQUEST_PARAM) { - apiArgument.setRequired(argumentAnnotation.isRequired()); - } - String comment = parseMethodArgmentComment(parameter); - apiArgument.setComment(comment); - // 文件上传字段,是必填参数。 - if ("MultipartFile".equals(typeName)) { - apiArgument.setUploadFileParam(true); - apiArgument.setRequired(true); - return apiArgument; - } - // 对于内置类型,则无需继续处理了。所有和内置类型参数相关的处理,应该在之前完成。 - if (this.verifyAndSetBuiltinParam(apiArgument, typeName)) { - return apiArgument; - } - // 判断是否为集合类型的参数。 - if (this.isCollectionType(typeName)) { - apiArgument.setCollectionParam(true); - if (parameter.getType() instanceof DefaultJavaParameterizedType) { - DefaultJavaParameterizedType javaType = (DefaultJavaParameterizedType) parameter.getType(); - JavaType genericType = javaType.getActualTypeArguments().get(0); - ApiModel apiModel = this.buildApiModelForArgument(genericType.getFullyQualifiedName()); - apiArgument.setModelData(apiModel); - apiArgument.setFullTypeName(parameter.getGenericFullyQualifiedName()); - apiArgument.setTypeName(parameter.getGenericValue()); - } - } else { - ApiModel apiModel = this.buildApiModelForArgument(parameter.getFullyQualifiedName()); - apiArgument.setModelData(apiModel); - } - return apiArgument; - } - - private boolean verifyAndSetBuiltinParam(ApiArgument apiArgument, String typeName) { - if ("MyOrderParam".equals(typeName)) { - apiArgument.setOrderParam(true); - } else if ("MyPageParam".equals(typeName)) { - apiArgument.setPageParam(true); - } else if ("MyGroupParam".equals(typeName)) { - apiArgument.setGroupParam(true); - } else if ("MyQueryParam".equals(typeName)) { - apiArgument.setQueryParam(true); - } else if ("MyAggregationParam".equals(typeName)) { - apiArgument.setAggregationParam(true); - } - return apiArgument.isOrderParam() - || apiArgument.isPageParam() - || apiArgument.isGroupParam() - || apiArgument.isQueryParam() - || apiArgument.isAggregationParam(); - } - - private ApiArgumentAnnotation parseArgumentAnnotationTypeAndName( - List annotationList, String defaultName) { - ApiArgumentAnnotation argumentAnnotation = new ApiArgumentAnnotation(); - argumentAnnotation.setType(ApiArgumentAnnotationType.REQUEST_PARAM); - argumentAnnotation.setName(defaultName); - for (JavaAnnotation annotation : annotationList) { - String annotationName = annotation.getType().getValue(); - if ("RequestBody".equals(annotationName)) { - argumentAnnotation.setType(ApiArgumentAnnotationType.REQUEST_BODY); - return argumentAnnotation; - } else if ("MyRequestBody".equals(annotationName)) { - String annotationValue = this.getArgumentNameFromAnnotationValue(annotation, VALUE_PROP); - argumentAnnotation.setType(ApiArgumentAnnotationType.MY_REQUEST_BODY); - argumentAnnotation.setName(annotationValue != null ? annotationValue : defaultName); - return argumentAnnotation; - } else if ("RequestParam".equals(annotationName)) { - String annotationValue = this.getArgumentNameFromAnnotationValue(annotation, VALUE_PROP); - argumentAnnotation.setType(ApiArgumentAnnotationType.REQUEST_PARAM); - argumentAnnotation.setName(annotationValue != null ? annotationValue : defaultName); - String requiredValue = this.getArgumentNameFromAnnotationValue(annotation, REQUIRED_PROP); - if (StrUtil.isNotBlank(requiredValue)) { - argumentAnnotation.setRequired(Boolean.parseBoolean(requiredValue)); - } - return argumentAnnotation; - } - } - // 缺省为@RequestParam - return argumentAnnotation; - } - - private String getArgumentNameFromAnnotationValue(JavaAnnotation annotation, String attribute) { - Object value = annotation.getNamedParameter(attribute); - if (value == null) { - return null; - } - String paramAlias = value.toString(); - if (StrUtil.isNotBlank(paramAlias)) { - paramAlias = StrUtil.removeAll(paramAlias, "\""); - } - return paramAlias; - } - - private ApiModel buildApiModelForArgument(String fullJavaClassName) { - // 先从当前服务内的Model中找,如果参数是Model类型的对象,微服务和单体行为一致。 - ApiModel apiModel = apiProject.getFullNameModelMap().get(fullJavaClassName); - if (apiModel != null) { - return apiModel; - } - // 判断工程全局对象映射中是否包括该对象类型,如果不包含,就直接返回了。 - JavaClass modelClass = projectJavaClassMap.get(fullJavaClassName); - if (modelClass == null) { - return apiModel; - } - // 先行解析对象中的字段。 - apiModel = parseModel(modelClass); - apiProject.getFullNameModelMap().put(fullJavaClassName, apiModel); - return apiModel; - } - - private ApiModel parseModel(JavaClass javaClass) { - ApiModel apiModel = new ApiModel(); - apiModel.setName(javaClass.getName()); - apiModel.setFullName(javaClass.getFullyQualifiedName()); - apiModel.setComment(javaClass.getComment()); - apiModel.setFieldList(new LinkedList<>()); - List fieldList = javaClass.getFields(); - for (JavaField field : fieldList) { - if (field.isStatic()) { - continue; - } - ApiField apiField = new ApiField(); - apiField.setName(field.getName()); - apiField.setComment(field.getComment()); - apiField.setTypeName(field.getType().getSimpleName()); - apiModel.getFieldList().add(apiField); - } - return apiModel; - } - - private void verifyConfigData() { - if (StrUtil.isBlank(config.getProjectName())) { - throw new ApiCodeConfigParseException("ProjectName field can't be EMPTY."); - } - if (StrUtil.isBlank(config.getBasePackage())) { - throw new ApiCodeConfigParseException("BasePackage field can't be EMPTY."); - } - if (StrUtil.isBlank(config.getProjectRootPath())) { - throw new ApiCodeConfigParseException("ProjectRootPath field can't be EMPTY."); - } - if (!FileUtil.exist(config.getProjectRootPath())) { - throw new ApiCodeConfigParseException( - "ProjectRootPath doesn't exist, please check ./resources/export-api-config.json as DEFAULT."); - } - if (config.getMicroService() == null) { - throw new ApiCodeConfigParseException("MicroService field can't be NULL."); - } - if (CollUtil.isEmpty(config.getServiceList())) { - throw new ApiCodeConfigParseException("ServiceList field can't be EMPTY."); - } - this.verifyServiceConfig(config.getServiceList()); - } - - private void verifyServiceConfig(List serviceConfigList) { - Set serviceNameSet = new HashSet<>(8); - Set servicePathSet = new HashSet<>(8); - for (ApiCodeConfig.ServiceConfig serviceConfig : serviceConfigList) { - if (StrUtil.isBlank(serviceConfig.getServiceName())) { - throw new ApiCodeConfigParseException("One of the ServiceName Field in Services List is NULL."); - } - String serviceName = serviceConfig.getServiceName(); - if (StrUtil.isBlank(serviceConfig.getServicePath())) { - throw new ApiCodeConfigParseException( - "The ServicePath Field in Service [" + serviceName + "] is NULL."); - } - if (serviceNameSet.contains(serviceName)) { - throw new ApiCodeConfigParseException("The ServiceName [" + serviceName + "] is duplicated."); - } - serviceNameSet.add(serviceName); - if (servicePathSet.contains(serviceConfig.getServicePath())) { - throw new ApiCodeConfigParseException( - "The ServicePath [" + serviceConfig.getServicePath() + "] is duplicated."); - } - servicePathSet.add(serviceConfig.getServicePath()); - if (StrUtil.isBlank(serviceConfig.getPort())) { - throw new ApiCodeConfigParseException( - "The Port Field in Service [" + serviceName + "] is NULL."); - } - this.verifyServiceControllerConfig(serviceConfig.getControllerInfoList(), serviceName); - } - } - - private void verifyServiceControllerConfig( - List controllerInfoList, String serviceName) { - if (CollUtil.isEmpty(controllerInfoList)) { - throw new ApiCodeConfigParseException( - "The ControllerInfoList Field of Service [" + serviceName + "] is EMPTY"); - } - for (ApiCodeConfig.ControllerInfo controllerInfo : controllerInfoList) { - if (StrUtil.isBlank(controllerInfo.getPath())) { - throw new ApiCodeConfigParseException( - "One of the ControllerInfo.Path Field of Service [" + serviceName + "] is EMPTY"); - } - } - } - - private void normalizeConfigPath() { - config.setProjectRootPath(normalizePath(config.getProjectRootPath())); - for (ApiCodeConfig.ServiceConfig serviceConfig : config.getServiceList()) { - serviceConfig.setServicePath(config.getProjectRootPath() + normalizePath(serviceConfig.getServicePath())); - for (ApiCodeConfig.ControllerInfo controllerInfo : serviceConfig.getControllerInfoList()) { - controllerInfo.setPath(serviceConfig.getServicePath() + normalizePath(controllerInfo.getPath())); - } - } - } - - private String normalizePath(String path) { - if (!path.startsWith(PATH_SEPERATOR)) { - path = PATH_SEPERATOR + path; - } - return StrUtil.removeSuffix(path, PATH_SEPERATOR); - } - - private boolean isCollectionType(String typeName) { - return "List".equals(typeName) || "Set".equals(typeName) || "Collection".equals(typeName); - } - - private boolean isServletArgument(String typeName) { - return "HttpServletResponse".equals(typeName) || "HttpServletRequest".equals(typeName); - } - - private boolean isController(String annotationName) { - return "Controller".equals(annotationName) - || "org.springframework.stereotype.Controller".equals(annotationName) - || "RestController".equals(annotationName) - || "org.springframework.web.bind.annotation.RestController".equals(annotationName); - } - - private boolean isRequiredColumn(String annotationName) { - return "NotNull".equals(annotationName) - || "javax.validation.constraints.NotNull".equals(annotationName) - || "NotBlank".equals(annotationName) - || "javax.validation.constraints.NotBlank".equals(annotationName) - || "NotEmpty".equals(annotationName) - || "javax.validation.constraints.NotEmpty".equals(annotationName); - } - - private boolean isRequestMapping(String name) { - return REQUEST_MAPPING.equals(name) || FULL_REQUEST_MAPPING.equals(name); - } - - @Data - public static class ApiProject { - private String projectName; - private Boolean microService; - private List serviceList; - private Map fullNameModelMap = new HashMap<>(32); - private Map simpleNameModelMap = new HashMap<>(32); - } - - @Data - public static class ApiService { - private String serviceName; - private String showName; - private String port; - private Set defaultGroupClassSet = new TreeSet<>(); - private Map> groupedClassMap = new LinkedHashMap<>(); - } - - @Data - public static class ApiClass implements Comparable { - private String name; - private String fullName; - private String groupName; - private String comment; - private String requestPath; - private List methodList; - - @Override - public int compareTo(ApiClass o) { - return this.name.compareTo(o.name); - } - } - - @Data - public static class ApiMethod { - private String name; - private String comment; - private String returnString; - private String requestPath; - private String httpMethod; - private boolean listDictUrl = false; - private boolean listUrl = false; - private boolean loginUrl = false; - private List pathList = new LinkedList<>(); - private List argumentList; - private List queryParamArgumentList = new LinkedList<>(); - private List jsonParamArgumentList = new LinkedList<>(); - private List uploadParamArgumentList = new LinkedList<>(); - } - - @Data - public static class ApiArgument { - private String name; - private String typeName; - private String fullTypeName; - private String comment; - private Integer annotationType; - private boolean required = true; - private boolean uploadFileParam = false; - private boolean collectionParam = false; - private boolean orderParam = false; - private boolean pageParam = false; - private boolean groupParam = false; - private boolean queryParam = false; - private boolean aggregationParam = false; - private boolean jsonData = false; - private ApiModel modelData; - } - - @Data - public static class ApiArgumentAnnotation { - private String name; - private Integer type; - private boolean required = true; - } - - @Data - public static class ApiModel { - private String name; - private String fullName; - private String comment; - private List fieldList; - } - - @Data - public static class ApiField { - private String name; - private String comment; - private String typeName; - private boolean requiredColumn = false; - } - - public static final class ApiArgumentAnnotationType { - public static final int REQUEST_PARAM = 0; - public static final int REQUEST_BODY = 1; - public static final int MY_REQUEST_BODY = 2; - - private ApiArgumentAnnotationType() { - } - } - - @Data - private static class InternalServiceData { - private String serviceRequestPath = ""; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/ApiCodeConfigParseException.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/ApiCodeConfigParseException.java deleted file mode 100644 index 369a78dd..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/ApiCodeConfigParseException.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.apidoc.tools.exception; - -/** - * 解析接口信息配置对象中的异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class ApiCodeConfigParseException extends RuntimeException { - - /** - * 构造函数。 - */ - public ApiCodeConfigParseException() { - - } - - /** - * 构造函数。 - * - * @param msg 错误信息。 - */ - public ApiCodeConfigParseException(String msg) { - super(msg); - } - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/MapperParseException.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/MapperParseException.java deleted file mode 100644 index 5334d48d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/exception/MapperParseException.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.orangeforms.apidoc.tools.exception; - -/** - * 解析Mybatis XML Mapper中的异常。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class MapperParseException extends RuntimeException { - - /** - * 构造函数。 - */ - public MapperParseException() { - - } - - /** - * 构造函数。 - * - * @param msg 错误信息。 - */ - public MapperParseException(String msg) { - super(msg); - } - -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiDocExporter.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiDocExporter.java deleted file mode 100644 index 08f2591a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiDocExporter.java +++ /dev/null @@ -1,84 +0,0 @@ -package com.orangeforms.apidoc.tools.export; - -import com.orangeforms.apidoc.tools.codeparser.ApiCodeParser; -import com.orangeforms.apidoc.tools.util.FreeMarkerUtils; -import freemarker.template.Configuration; -import freemarker.template.TemplateException; -import freemarker.template.TemplateExceptionHandler; -import freemarker.template.TemplateModelException; -import org.apache.commons.io.FileUtils; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.HashMap; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; - -/** - * 根据代码解析后的工程对象数据,导出到Markdown格式的接口文档文件。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class ApiDocExporter { - - private final Configuration config; - - public ApiDocExporter() throws TemplateModelException { - config = new Configuration(Configuration.VERSION_2_3_28); - config.setNumberFormat("0.####"); - config.setClassicCompatible(true); - config.setAPIBuiltinEnabled(true); - config.setClassForTemplateLoading(ApiPostmanExporter.class, "/templates/"); - config.setDefaultEncoding("UTF-8"); - config.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); - config.setSharedVariable("freemarkerUtils", new FreeMarkerUtils()); - config.unsetCacheStorage(); - config.clearTemplateCache(); - } - - /** - * 生成Markdown格式的API接口文档。 - * - * @param apiProject 解析后的工程对象。 - * @param outputFile 生成后的、包含全路径的输出文件名。 - * @throws IOException 文件操作异常。 - * @throws TemplateException 模板实例化异常。 - */ - public void doGenerate(ApiCodeParser.ApiProject apiProject, String outputFile) throws IOException, TemplateException { - Map paramMap = new HashMap<>(1); - paramMap.put("project", apiProject); - List newServiceList = new LinkedList<>(); - if (apiProject.getMicroService()) { - // 在微服务场景中,我们需要把upms服务放到最前面显示。 - for (ApiCodeParser.ApiService apiService : apiProject.getServiceList()) { - if ("upms".equals(apiService.getServiceName())) { - newServiceList.add(apiService); - break; - } - } - for (ApiCodeParser.ApiService apiService : apiProject.getServiceList()) { - if (!"upms".equals(apiService.getServiceName())) { - newServiceList.add(apiService); - } - } - } else { - ApiCodeParser.ApiService appService = apiProject.getServiceList().get(0); - ApiCodeParser.ApiService newUpmsService = new ApiCodeParser.ApiService(); - newUpmsService.setDefaultGroupClassSet(appService.getGroupedClassMap().get("upms")); - newUpmsService.setServiceName("upms"); - newUpmsService.setShowName("用户权限模块"); - newServiceList.add(newUpmsService); - ApiCodeParser.ApiService newAppService = new ApiCodeParser.ApiService(); - newAppService.setDefaultGroupClassSet(appService.getGroupedClassMap().get("app")); - newAppService.setServiceName("app"); - newAppService.setShowName("业务应用模块"); - newServiceList.add(newAppService); - } - apiProject.setServiceList(newServiceList); - FileUtils.forceMkdirParent(new File(outputFile)); - config.getTemplate("./api-doc.md.ftl").process(paramMap, new FileWriter(outputFile)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiPostmanExporter.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiPostmanExporter.java deleted file mode 100644 index cdb7bd75..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/export/ApiPostmanExporter.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.orangeforms.apidoc.tools.export; - -import com.orangeforms.apidoc.tools.codeparser.ApiCodeParser; -import com.orangeforms.apidoc.tools.util.FreeMarkerUtils; -import freemarker.template.Configuration; -import freemarker.template.TemplateException; -import freemarker.template.TemplateExceptionHandler; -import freemarker.template.TemplateModelException; -import org.apache.commons.io.FileUtils; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -/** - * 根据代码解析后的工程对象数据,导出到Postman支持的JSON格式的文件。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class ApiPostmanExporter { - - private final Configuration config; - - public ApiPostmanExporter() throws TemplateModelException { - config = new Configuration(Configuration.VERSION_2_3_28); - config.setNumberFormat("0.####"); - config.setClassicCompatible(true); - config.setAPIBuiltinEnabled(true); - config.setClassForTemplateLoading(ApiPostmanExporter.class, "/templates/"); - config.setDefaultEncoding("UTF-8"); - config.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); - config.setSharedVariable("freemarkerUtils", new FreeMarkerUtils()); - config.unsetCacheStorage(); - config.clearTemplateCache(); - } - - /** - * 生成Postman支持的JSON文档。 - * @param apiProject 解析后的工程对象。 - * @param outputFile 生成后的、包含全路径的输出文件名。 - * @throws IOException 文件操作异常。 - * @throws TemplateException 模板实例化异常。 - */ - public void doGenerate(ApiCodeParser.ApiProject apiProject, String outputFile) throws IOException, TemplateException { - Map paramMap = new HashMap<>(1); - paramMap.put("project", apiProject); - FileUtils.forceMkdirParent(new File(outputFile)); - config.getTemplate("./postman_collection.json.ftl").process(paramMap, new FileWriter(outputFile)); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/util/FreeMarkerUtils.java b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/util/FreeMarkerUtils.java deleted file mode 100644 index 341d9267..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/java/com/orangeforms/apidoc/tools/util/FreeMarkerUtils.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.orangeforms.apidoc.tools.util; - -import java.util.UUID; - -/** - * 仅供Freemarker模板内部使用的Java工具函数。 - * - * @author Jerry - * @date 2022-02-20 - */ -public class FreeMarkerUtils { - - /** - * 生成GUID。 - * - * @return 生成后的GUID。 - */ - public static String generateGuid() { - return UUID.randomUUID().toString(); - } - - /** - * 私有构造函数,明确标识该常量类的作用。 - */ - public FreeMarkerUtils() { - // FreeMarker的工具对象,Sonarqube建议给出空构造的注释。 - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/export-api-config.json b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/export-api-config.json deleted file mode 100644 index 68d7f005..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/export-api-config.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "projectName": "单体PostgreSQL", - "basePackage": "com.orangeforms", - "projectRootPath": "这里请使用当前工程的根目录,如:e:/xxx/OrangeDemo 或者 /Users/xxx/OrangeDemo", - "microService": "false", - "serviceList": [ - { - "serviceName": "application-webadmin", - "showName": "后台管理服务", - "servicePath": "/application-webadmin", - "port": "8082", - "controllerInfoList": [ - { - "path": "/src/main/java/com/orangeforms/webadmin/app/controller", - "groupName": "app" - }, - { - "path": "/src/main/java/com/orangeforms/webadmin/upms/controller", - "groupName": "upms" - } - ] - } - ] -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/api-doc.md.ftl b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/api-doc.md.ftl deleted file mode 100644 index dcf7d8dc..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/api-doc.md.ftl +++ /dev/null @@ -1,144 +0,0 @@ -## 用户登录 -### 登录接口 -#### 登录 -- **URI:** /admin/upms/login/doLogin -- **Type:** GET -- **Content-Type:** multipart/form-data -- **Request-Headers:** -Name|Type|Description ---|--|-- -Authorization|String|身份验证的Token -- **Request-Parameters:** -Parameter|Type|Required|Description ---|--|--|-- -loginName|string|true|用户名 -password|string|true|加密后的用户密码 - -#### 退出 -- **URI:** /admin/upms/login/logout -- **Type:** POST -- **Content-Type:** application/json; chartset=utf-8 -- **Request-Headers:** -Name|Type|Description ---|--|-- -Authorization|String|身份验证的Token - -#### 修改密码 -- **URI:** /admin/upms/login/changePassword -- **Type:** POST -- **Content-Type:** application/json; chartset=utf-8 -- **Request-Headers:** -Name|Type|Description ---|--|-- -Authorization|String|身份验证的Token -- **Request-Parameters:** -Parameter|Type|Required|Description ---|--|--|-- -oldPass|string|true|加密后的原用户密码 -newPass|string|true|加密后的新用户密码 -<#list project.serviceList as service> - -## ${service.showName} -<#list service.defaultGroupClassSet as apiClass> -### ${apiClass.name} -<#list apiClass.methodList as apiMethod> -#### ${apiMethod.name} -- **URI:** ${apiMethod.requestPath} -- **Type:** ${apiMethod.httpMethod} -- **Content-Type:** <#if apiMethod.httpMethod == "GET" || apiMethod.queryParamArgumentList?size gt 0 || apiMethod.uploadParamArgumentList?size gt 0>multipart/form-data<#else>application/json; chartset=utf-8 -- **Request-Headers:** -Name|Type|Description ---|--|-- -Authorization|String|身份验证的Token -<#if apiMethod.queryParamArgumentList?size gt 0 || apiMethod.uploadParamArgumentList?size gt 0> -- **Request-Parameters:** -Parameter|Type|Required|Description ---|--|--|-- -<#list apiMethod.queryParamArgumentList as apiArgument> -<#if apiArgument.modelData??> -<#list apiArgument.modelData.tableFieldList as apiField> -${apiField.name}|${apiField.typeName}|<#if apiMethod.listDictUrl>false<#else><#if apiField.requiredColumn>true<#else>false|${apiField.comment} - -<#else> -${apiArgument.name}|${apiArgument.typeName}|<#if apiMethod.listDictUrl>false<#else><#if apiArgument.required>true<#else>false|${apiArgument.comment} -<#-- apiArgument.modelData?? --> - - -<#list apiMethod.uploadParamArgumentList as apiArgument> -${apiArgument.name}|File|true|${apiArgument.comment} - -<#if apiMethod.jsonParamArgumentList?size gt 0> -- **Request-Body:** -``` json -{ -<#list apiMethod.jsonParamArgumentList as apiArgument> -<#if apiArgument.modelData??> - <#if apiArgument.collectionParam> - "${apiArgument.name}" : [ - { - <#if apiMethod.listUrl> - <#list apiArgument.modelData.filteredFieldList as apiField> - "${apiField.name}" : "${apiField.typeName} | false | <#if apiField.name == "searchString">模糊搜索字符串。<#else>${apiField.comment}"<#if apiField_has_next>, - - <#else><#-- apiMethod.listUrl --> - <#list apiArgument.modelData.tableFieldList as apiField> - <#if !apiMethod.addUrl || !apiField.primaryKey> - "${apiField.name}" : "${apiField.typeName} | <#if apiField.requiredColumn>true<#else>false | ${apiField.comment}"<#if apiField_has_next>, - - - <#-- apiMethod.listUrl --> - } - ]<#if apiArgument_has_next>, - <#else><#-- apiArgument.collectionParam --> - "${apiArgument.name}" : { - <#if apiMethod.listUrl> - <#list apiArgument.modelData.filteredFieldList as apiField> - "${apiField.name}" : "${apiField.typeName} | false | <#if apiField.name == "searchString">模糊搜索字符串。<#else>${apiField.comment}"<#if apiField_has_next>, - - <#else><#-- apiMethod.listUrl --> - <#list apiArgument.modelData.tableFieldList as apiField> - <#if !apiMethod.addUrl || !apiField.primaryKey> - "${apiField.name}" : "${apiField.typeName} | <#if apiField.requiredColumn>true<#else>false | ${apiField.comment}"<#if apiField_has_next>, - - - <#-- apiMethod.listUrl --> - }<#if apiArgument_has_next>, - <#-- apiArgument.collectionParam --> -<#elseif apiArgument.orderParam> - "${apiArgument.name}" : [ - { - "fieldName" : "String | false | 排序字段名", - "asc" : "Boolean | false | 是否升序" - } - ]<#if apiArgument_has_next>, -<#elseif apiArgument.groupParam> - "${apiArgument.name}" : [ - { - "fieldName" : "String | false | 分组字段名", - "aliasName" : "String | false | 分组字段别名", - "dateAggregateBy" : "String | false | 是否按照日期聚合,可选项(day|month|year)" - } - ]<#if apiArgument_has_next>, -<#elseif apiArgument.pageParam> - "${apiArgument.name}" : { - "pageNum": "Integer | false | 分页页号", - "pageSize": "Integer | false | 每页数据量" - }<#if apiArgument_has_next>, -<#elseif apiArgument.queryParam || apiArgument.aggregationParam> - ${apiArgument.name}" : { - - }<#if apiArgument_has_next>, -<#else><#-- apiArgument.modelData?? --> - <#if apiArgument.collectionParam> - "${apiArgument.name}" : [ "${apiArgument.typeName} | ${apiArgument.required}<#if apiArgument.comment??> | ${apiArgument.comment}" ]<#if apiArgument_has_next>, - <#else> - "${apiArgument.name}" : "${apiArgument.typeName} | ${apiArgument.required}<#if apiArgument.comment??> | ${apiArgument.comment}"<#if apiArgument_has_next>, - -<#-- apiArgument.modelData?? --> - -} -``` - -<#-- apiClass.methodList as apiMethod --> -<#-- upmsClassList as apiClass --> - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_collection.json.ftl b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_collection.json.ftl deleted file mode 100644 index 2db6c184..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_collection.json.ftl +++ /dev/null @@ -1,42 +0,0 @@ -<#import "postman_common.ftl" as Common> -{ - "info": { - "_postman_id": "92b51dc5-3611-49ac-8d94-a0718dba5bf1", - "name": "${project.projectName}", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - <#list project.serviceList as service> - { - "name": "${service.serviceName}", - "item": [ - <#if service.groupedClassMap?size gt 0> - <#list service.groupedClassMap?keys as groupName> - <#assign groupedClassList=service.groupedClassMap[groupName] /> - { - "name": "${groupName}", - "item": [ - <#list groupedClassList as apiClass> - { - <@Common.generateControllerRequest service apiClass 7/> - }<#if apiClass_has_next>, - - ], - "protocolProfileBehavior": {}, - "_postman_isSubFolder": true - }<#if groupName_has_next>, - - - <#list service.defaultGroupClassSet as apiClass> - { - <@Common.generateControllerRequest service apiClass 5/> - }<#if apiClass_has_next>, - - ], - "protocolProfileBehavior": {}, - "_postman_isSubFolder": true - }<#if service_has_next>, - <#-- project.serviceList as service --> - ], - "protocolProfileBehavior": {} -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_common.ftl b/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_common.ftl deleted file mode 100644 index 9bf2a47e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/apidoc-tools/src/main/resources/templates/postman_common.ftl +++ /dev/null @@ -1,120 +0,0 @@ -<#macro doIndent level><#if level != 0><#list 0..(level-1) as i> - -<#macro generateControllerRequest service apiClass indentLevel> -<@doIndent indentLevel/>"name": "${apiClass.name}", -<@doIndent indentLevel/>"item": [ - <#list apiClass.methodList as apiMethod> -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "name": "${apiMethod.name}", - <#if apiMethod.loginUrl> -<@doIndent indentLevel/> "event": [ -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "listen": "test", -<@doIndent indentLevel/> "script": { -<@doIndent indentLevel/> "id": "${freemarkerUtils.generateGuid()}", -<@doIndent indentLevel/> "type": "text/javascript", -<@doIndent indentLevel/> "exec": [ -<@doIndent indentLevel/> "pm.test(\"登录操作\", function () {", -<@doIndent indentLevel/> " var jsonData = pm.response.json();", -<@doIndent indentLevel/> " var token = jsonData.data.tokenData;", -<@doIndent indentLevel/> " pm.environment.set(\"token\", token);", -<@doIndent indentLevel/> " console.log(\"login token \" + token);", -<@doIndent indentLevel/> "});", -<@doIndent indentLevel/> "" -<@doIndent indentLevel/> ] -<@doIndent indentLevel/> } -<@doIndent indentLevel/> }, -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "listen": "prerequest", -<@doIndent indentLevel/> "script": { -<@doIndent indentLevel/> "id": "${freemarkerUtils.generateGuid()}", -<@doIndent indentLevel/> "type": "text/javascript", -<@doIndent indentLevel/> "exec": [ -<@doIndent indentLevel/> "" -<@doIndent indentLevel/> ] -<@doIndent indentLevel/> } -<@doIndent indentLevel/> } -<@doIndent indentLevel/> ], - -<@doIndent indentLevel/> "request": { -<@doIndent indentLevel/> "method": "${apiMethod.httpMethod}", - <#if apiMethod.loginUrl> -<@doIndent indentLevel/> "header": [], - <#else> -<@doIndent indentLevel/> "header": [ -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "key": "Authorization", -<@doIndent indentLevel/> "value": "{{token}}", -<@doIndent indentLevel/> "type": "text" -<@doIndent indentLevel/> } -<@doIndent indentLevel/> ], - -<@doIndent indentLevel/> "url": { -<@doIndent indentLevel/> "raw": "http://{{host}}:${service.port}/${apiMethod.requestPath}", -<@doIndent indentLevel/> "protocol": "http", -<@doIndent indentLevel/> "host": [ -<@doIndent indentLevel/> "{{host}}" -<@doIndent indentLevel/> ], -<@doIndent indentLevel/> "port": "${service.port}", -<@doIndent indentLevel/> "path": [ - <#list apiMethod.pathList as path> -<@doIndent indentLevel/> "${path}"<#if path_has_next>, - -<@doIndent indentLevel/> ]<#if apiMethod.queryParamArgumentList?size gt 0>, - <#if apiMethod.queryParamArgumentList?size gt 0> -<@doIndent indentLevel/> "query": [ - <#list apiMethod.queryParamArgumentList as apiArgument> - <#if apiArgument.modelData??> - <#list apiArgument.modelData.tableFieldList as apiField> -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "key": "${apiField.name}", -<@doIndent indentLevel/> "value": "" -<@doIndent indentLevel/> }<#if apiArgument_has_next || apiField_has_next>, - - <#else> -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "key": "${apiArgument.name}", -<@doIndent indentLevel/> "value": "" -<@doIndent indentLevel/> }<#if apiArgument_has_next>, - - -<@doIndent indentLevel/> ] - -<@doIndent indentLevel/> }<#if (apiMethod.httpMethod == "POST" && apiMethod.jsonParamArgumentList?size gt 0) || apiMethod.uploadParamArgumentList?size gt 0>, - <#if apiMethod.uploadParamArgumentList?size gt 0> -<@doIndent indentLevel/> "body": { -<@doIndent indentLevel/> "mode": "formdata", -<@doIndent indentLevel/> "formdata": [ - <#list apiMethod.uploadParamArgumentList as apiArgument> -<@doIndent indentLevel/> { -<@doIndent indentLevel/> "key": "${apiArgument.name}", -<@doIndent indentLevel/> "type": "file", -<@doIndent indentLevel/> "src": [] -<@doIndent indentLevel/> }<#if apiArgument_has_next>, - -<@doIndent indentLevel/> ] -<@doIndent indentLevel/> }<#if apiMethod.httpMethod == "POST" && apiMethod.jsonParamArgumentList?size gt 0>, - <#-- apiMethod.uploadParamArgumentList?size gt 0 --> - <#if apiMethod.httpMethod == "POST" && apiMethod.jsonParamArgumentList?size gt 0> -<@doIndent indentLevel/> "body": { -<@doIndent indentLevel/> "mode": "raw", - <#if !apiMethod.loginUrl> -<@doIndent indentLevel/> "raw": "{\n<#list apiMethod.jsonParamArgumentList as apiArgument><#if apiArgument.modelData??><#if apiArgument.collectionParam>\t\"${apiArgument.name}\" : [\n\t\t{\n<#list apiArgument.modelData.fieldList as apiField><#if apiMethod.listUrl>\t\t\t\"${apiField.name}\" : \"\"<#if apiField_has_next>,\n<#else>\t\t\t\"${apiField.name}\" : \"<#if apiField.typeName == "Integer" || apiField.typeName == "Long">0\"<#if apiField_has_next>,\n<#-- apiMethod.listUrl -->\t\t}\n\t]<#if apiArgument_has_next>,\n<#else><#-- apiArgument.collectionParam -->\t\"${apiArgument.name}\" : {\n<#list apiArgument.modelData.fieldList as apiField><#if apiMethod.listUrl>\t\t\"${apiField.name}\" : \"\"<#if apiField_has_next>,\n<#else>\t\t\"${apiField.name}\" : \"<#if apiField.typeName == "Integer" || apiField.typeName == "Long">0\"<#if apiField_has_next>,\n<#-- apiMethod.listUrl -->\t}<#if apiArgument_has_next>,\n<#-- apiArgument.collectionParam --><#elseif apiArgument.orderParam>\t\"${apiArgument.name}\" : [\n\t\t{\n\t\t\t\"fieldName\" : \"\",\n\t\t\t\"asc\" : \"true\"\n\t\t}\n\t]<#if apiArgument_has_next>,\n<#elseif apiArgument.groupParam>\t\"${apiArgument.name}\" : [\n\t\t{\n\t\t\t\"fieldName\" : \"\",\n\t\t\t\"aliasName\" : \"\",\n\t\t\t\"dateAggregateBy\" : \"\"\n\t\t}\n\t]<#if apiArgument_has_next>,\n<#elseif apiArgument.pageParam>\t\"${apiArgument.name}\" : {\n\t\t\"pageNum\": \"1\",\n\t\t\"pageSize\": \"10\"\n\t}<#if apiArgument_has_next>,\n<#elseif apiArgument.queryParam || apiArgument.aggregationParam>\t\"${apiArgument.name}\" : {\n\t}<#if apiArgument_has_next>,\n<#else><#if apiArgument.collectionParam>\t\"${apiArgument.name}\" : [ ]<#if apiArgument_has_next>,\n<#else>\t\"${apiArgument.name}\" : \"\"<#if apiArgument_has_next>,\n<#-- apiArgument.modelData?? --><#-- apiMethod.jsonParamArgumentList?size gt 0 -->}\n", - <#else> -<@doIndent indentLevel/> "raw": "{\n \"loginName\":\"admin\",\n \"password\":\"IP3ccke3GhH45iGHB5qP9p7iZw6xUyj28Ju10rnBiPKOI35sc%2BjI7%2FdsjOkHWMfUwGYGfz8ik31HC2Ruk%2Fhkd9f6RPULTHj7VpFdNdde2P9M4mQQnFBAiPM7VT9iW3RyCtPlJexQ3nAiA09OqG%2F0sIf1kcyveSrulxembARDbDo%3D\"\n}", - -<@doIndent indentLevel/> "options": { -<@doIndent indentLevel/> "raw": { -<@doIndent indentLevel/> "language": "json" -<@doIndent indentLevel/> } -<@doIndent indentLevel/> } -<@doIndent indentLevel/> } - -<@doIndent indentLevel/> }, -<@doIndent indentLevel/> "response": [] -<@doIndent indentLevel/> }<#if apiMethod_has_next>, - <#-- apiClass.methodList as apiMethod --> -<@doIndent indentLevel/>], -<@doIndent indentLevel/>"protocolProfileBehavior": {}, -<@doIndent indentLevel/>"_postman_isSubFolder": true - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/framework/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/framework/pom.xml deleted file mode 100644 index 3bc1c15d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/framework/pom.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - com.orangeforms - DemoSinglePg - 1.0.0 - - 4.0.0 - - framework - pom - - - apidoc-tools - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/pom.xml b/orange-demo-single-pg/orange-demo-single-pg-service/pom.xml deleted file mode 100644 index 6e26e6d6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/pom.xml +++ /dev/null @@ -1,260 +0,0 @@ - - - 4.0.0 - - com.orangeforms - DemoSinglePg - 1.0.0 - DemoSinglePg - pom - - - 2.5.8 - 2.5.5 - UTF-8 - 1.8 - 1.8 - 1.8 - DemoSinglePg - - 2.10.13 - 20.0 - 2.6 - 4.4 - 1.8 - 5.0.0 - 5.7.18 - 0.9.1 - 1.2.76 - 1.1.5 - 3.0.2 - 1.4.2.Final - 1.18.20 - 2.17.0 - 3.4.3 - 6.2.0.Final - 3.15.4 - 2.0.0 - 2.0.8 - 1.3.0 - - 1.2.6 - 3.4.2 - 1.3.0 - - - - application-webadmin - common - framework - - - - - - org.springframework.boot - spring-boot-starter-web - - - spring-boot-starter-logging - org.springframework.boot - - - - - - org.springframework.boot - spring-boot-starter-freemarker - - - - javax.servlet - javax.servlet-api - - - - org.springframework.boot - spring-boot-starter-log4j2 - 2.6.1 - - - log4j-core - org.apache.logging.log4j - - - log4j-jul - org.apache.logging.log4j - - - log4j-slf4j-impl - org.apache.logging.log4j - - - - - org.apache.logging.log4j - log4j-core - ${log4j2.version} - - - log4j-api - org.apache.logging.log4j - - - - - org.apache.logging.log4j - log4j-jul - ${log4j2.version} - - - log4j-api - org.apache.logging.log4j - - - - - org.apache.logging.log4j - log4j-slf4j-impl - ${log4j2.version} - - - log4j-core - org.apache.logging.log4j - - - log4j-api - org.apache.logging.log4j - - - - - org.apache.logging.log4j - log4j-api - ${log4j2.version} - - - - org.springframework.boot - spring-boot-starter-aop - - - - org.springframework.boot - spring-boot-starter-cache - - - - org.springframework.boot - spring-boot-configuration-processor - true - - - - org.springframework.security - spring-security-crypto - - - - org.springframework.boot - spring-boot-starter-actuator - - - - de.codecentric - spring-boot-admin-starter-client - ${spring-boot-admin.version} - - - - org.hibernate - hibernate-validator - ${hibernate-validator.version} - - - - org.mapstruct - mapstruct - ${mapstruct.version} - - - org.mapstruct - mapstruct-processor - ${mapstruct.version} - provided - - - - org.projectlombok - lombok - provided - - - - com.lmax - 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 - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.0 - - ${maven.compiler.target} - ${maven.compiler.source} - UTF-8 - - - org.projectlombok - lombok - ${lombok.version} - - - org.projectlombok - lombok-mapstruct-binding - 0.2.0 - - - org.mapstruct - mapstruct-processor - ${mapstruct.version} - - - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/areacode-pg.sql b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/areacode-pg.sql deleted file mode 100644 index 5fe0246e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/areacode-pg.sql +++ /dev/null @@ -1,3689 +0,0 @@ --- ---------------------------- --- 行政区划表,在以下数据库中执行该脚本。 --- ---------------------------- - -DROP TABLE IF EXISTS "zz_area_code"; -CREATE TABLE "zz_area_code" ( - "area_id" int8 NOT NULL, - "area_name" varchar(128) COLLATE "pg_catalog"."default" NOT NULL, - "area_level" int4 NOT NULL, - "parent_id" int8 -); -COMMENT ON COLUMN "zz_area_code"."area_id" IS '行政区划主键Id'; -COMMENT ON COLUMN "zz_area_code"."area_name" IS '行政区划名称'; -COMMENT ON COLUMN "zz_area_code"."area_level" IS '行政区划级别 (1: 省级别 2: 市级别 3: 区级别)'; -COMMENT ON COLUMN "zz_area_code"."parent_id" IS '父级行政区划Id'; -COMMENT ON TABLE "zz_area_code" IS '行政区划表'; - -CREATE INDEX "idx_area_code_area_name" ON "zz_area_code" USING btree ( - "area_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST -); -CREATE INDEX "idx_area_code_level" ON "zz_area_code" USING btree ( - "area_level" "pg_catalog"."int4_ops" ASC NULLS LAST -); -CREATE INDEX "idx_area_code_parent_id" ON "zz_area_code" USING btree ( - "parent_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_area_code" ADD CONSTRAINT "zz_area_code_pkey" PRIMARY KEY ("area_id"); - --- ---------------------------- --- 行政区划数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_area_code" VALUES (110000000000, '北京市', 1, null); -INSERT INTO "zz_area_code" VALUES (110100000000, '市辖区', 2, 110000000000); -INSERT INTO "zz_area_code" VALUES (110101000000, '东城区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110102000000, '西城区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110105000000, '朝阳区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110106000000, '丰台区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110107000000, '石景山区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110108000000, '海淀区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110109000000, '门头沟区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110111000000, '房山区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110112000000, '通州区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110113000000, '顺义区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110114000000, '昌平区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110115000000, '大兴区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110116000000, '怀柔区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110117000000, '平谷区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110118000000, '密云区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (110119000000, '延庆区', 3, 110100000000); -INSERT INTO "zz_area_code" VALUES (120000000000, '天津市', 1, null); -INSERT INTO "zz_area_code" VALUES (120100000000, '市辖区', 2, 120000000000); -INSERT INTO "zz_area_code" VALUES (120101000000, '和平区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120102000000, '河东区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120103000000, '河西区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120104000000, '南开区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120105000000, '河北区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120106000000, '红桥区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120110000000, '东丽区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120111000000, '西青区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120112000000, '津南区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120113000000, '北辰区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120114000000, '武清区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120115000000, '宝坻区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120116000000, '滨海新区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120117000000, '宁河区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120118000000, '静海区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (120119000000, '蓟州区', 3, 120100000000); -INSERT INTO "zz_area_code" VALUES (130000000000, '河北省', 1, null); -INSERT INTO "zz_area_code" VALUES (130100000000, '石家庄市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130101000000, '市辖区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130102000000, '长安区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130104000000, '桥西区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130105000000, '新华区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130107000000, '井陉矿区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130108000000, '裕华区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130109000000, '藁城区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130110000000, '鹿泉区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130111000000, '栾城区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130121000000, '井陉县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130123000000, '正定县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130125000000, '行唐县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130126000000, '灵寿县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130127000000, '高邑县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130128000000, '深泽县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130129000000, '赞皇县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130130000000, '无极县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130131000000, '平山县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130132000000, '元氏县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130133000000, '赵县', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130171000000, '石家庄高新技术产业开发区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130172000000, '石家庄循环化工园区', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130181000000, '辛集市', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130183000000, '晋州市', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130184000000, '新乐市', 3, 130100000000); -INSERT INTO "zz_area_code" VALUES (130200000000, '唐山市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130201000000, '市辖区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130202000000, '路南区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130203000000, '路北区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130204000000, '古冶区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130205000000, '开平区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130207000000, '丰南区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130208000000, '丰润区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130209000000, '曹妃甸区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130224000000, '滦南县', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130225000000, '乐亭县', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130227000000, '迁西县', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130229000000, '玉田县', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130271000000, '唐山市芦台经济技术开发区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130272000000, '唐山市汉沽管理区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130273000000, '唐山高新技术产业开发区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130274000000, '河北唐山海港经济开发区', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130281000000, '遵化市', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130283000000, '迁安市', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130284000000, '滦州市', 3, 130200000000); -INSERT INTO "zz_area_code" VALUES (130300000000, '秦皇岛市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130301000000, '市辖区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130302000000, '海港区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130303000000, '山海关区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130304000000, '北戴河区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130306000000, '抚宁区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130321000000, '青龙满族自治县', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130322000000, '昌黎县', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130324000000, '卢龙县', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130371000000, '秦皇岛市经济技术开发区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130372000000, '北戴河新区', 3, 130300000000); -INSERT INTO "zz_area_code" VALUES (130400000000, '邯郸市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130401000000, '市辖区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130402000000, '邯山区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130403000000, '丛台区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130404000000, '复兴区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130406000000, '峰峰矿区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130407000000, '肥乡区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130408000000, '永年区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130423000000, '临漳县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130424000000, '成安县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130425000000, '大名县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130426000000, '涉县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130427000000, '磁县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130430000000, '邱县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130431000000, '鸡泽县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130432000000, '广平县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130433000000, '馆陶县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130434000000, '魏县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130435000000, '曲周县', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130471000000, '邯郸经济技术开发区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130473000000, '邯郸冀南新区', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130481000000, '武安市', 3, 130400000000); -INSERT INTO "zz_area_code" VALUES (130500000000, '邢台市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130501000000, '市辖区', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130502000000, '桥东区', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130503000000, '桥西区', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130521000000, '邢台县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130522000000, '临城县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130523000000, '内丘县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130524000000, '柏乡县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130525000000, '隆尧县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130526000000, '任县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130527000000, '南和县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130528000000, '宁晋县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130529000000, '巨鹿县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130530000000, '新河县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130531000000, '广宗县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130532000000, '平乡县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130533000000, '威县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130534000000, '清河县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130535000000, '临西县', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130571000000, '河北邢台经济开发区', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130581000000, '南宫市', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130582000000, '沙河市', 3, 130500000000); -INSERT INTO "zz_area_code" VALUES (130600000000, '保定市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130601000000, '市辖区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130602000000, '竞秀区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130606000000, '莲池区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130607000000, '满城区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130608000000, '清苑区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130609000000, '徐水区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130623000000, '涞水县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130624000000, '阜平县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130626000000, '定兴县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130627000000, '唐县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130628000000, '高阳县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130629000000, '容城县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130630000000, '涞源县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130631000000, '望都县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130632000000, '安新县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130633000000, '易县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130634000000, '曲阳县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130635000000, '蠡县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130636000000, '顺平县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130637000000, '博野县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130638000000, '雄县', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130671000000, '保定高新技术产业开发区', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130672000000, '保定白沟新城', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130681000000, '涿州市', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130682000000, '定州市', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130683000000, '安国市', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130684000000, '高碑店市', 3, 130600000000); -INSERT INTO "zz_area_code" VALUES (130700000000, '张家口市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130701000000, '市辖区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130702000000, '桥东区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130703000000, '桥西区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130705000000, '宣化区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130706000000, '下花园区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130708000000, '万全区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130709000000, '崇礼区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130722000000, '张北县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130723000000, '康保县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130724000000, '沽源县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130725000000, '尚义县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130726000000, '蔚县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130727000000, '阳原县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130728000000, '怀安县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130730000000, '怀来县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130731000000, '涿鹿县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130732000000, '赤城县', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130771000000, '张家口市高新技术产业开发区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130772000000, '张家口市察北管理区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130773000000, '张家口市塞北管理区', 3, 130700000000); -INSERT INTO "zz_area_code" VALUES (130800000000, '承德市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130801000000, '市辖区', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130802000000, '双桥区', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130803000000, '双滦区', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130804000000, '鹰手营子矿区', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130821000000, '承德县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130822000000, '兴隆县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130824000000, '滦平县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130825000000, '隆化县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130826000000, '丰宁满族自治县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130827000000, '宽城满族自治县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130828000000, '围场满族蒙古族自治县', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130871000000, '承德高新技术产业开发区', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130881000000, '平泉市', 3, 130800000000); -INSERT INTO "zz_area_code" VALUES (130900000000, '沧州市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (130901000000, '市辖区', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130902000000, '新华区', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130903000000, '运河区', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130921000000, '沧县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130922000000, '青县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130923000000, '东光县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130924000000, '海兴县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130925000000, '盐山县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130926000000, '肃宁县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130927000000, '南皮县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130928000000, '吴桥县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130929000000, '献县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130930000000, '孟村回族自治县', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130971000000, '河北沧州经济开发区', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130972000000, '沧州高新技术产业开发区', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130973000000, '沧州渤海新区', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130981000000, '泊头市', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130982000000, '任丘市', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130983000000, '黄骅市', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (130984000000, '河间市', 3, 130900000000); -INSERT INTO "zz_area_code" VALUES (131000000000, '廊坊市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (131001000000, '市辖区', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131002000000, '安次区', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131003000000, '广阳区', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131022000000, '固安县', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131023000000, '永清县', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131024000000, '香河县', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131025000000, '大城县', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131026000000, '文安县', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131028000000, '大厂回族自治县', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131071000000, '廊坊经济技术开发区', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131081000000, '霸州市', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131082000000, '三河市', 3, 131000000000); -INSERT INTO "zz_area_code" VALUES (131100000000, '衡水市', 2, 130000000000); -INSERT INTO "zz_area_code" VALUES (131101000000, '市辖区', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131102000000, '桃城区', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131103000000, '冀州区', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131121000000, '枣强县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131122000000, '武邑县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131123000000, '武强县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131124000000, '饶阳县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131125000000, '安平县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131126000000, '故城县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131127000000, '景县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131128000000, '阜城县', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131171000000, '河北衡水高新技术产业开发区', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131172000000, '衡水滨湖新区', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (131182000000, '深州市', 3, 131100000000); -INSERT INTO "zz_area_code" VALUES (140000000000, '山西省', 1, null); -INSERT INTO "zz_area_code" VALUES (140100000000, '太原市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140101000000, '市辖区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140105000000, '小店区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140106000000, '迎泽区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140107000000, '杏花岭区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140108000000, '尖草坪区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140109000000, '万柏林区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140110000000, '晋源区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140121000000, '清徐县', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140122000000, '阳曲县', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140123000000, '娄烦县', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140171000000, '山西转型综合改革示范区', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140181000000, '古交市', 3, 140100000000); -INSERT INTO "zz_area_code" VALUES (140200000000, '大同市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140201000000, '市辖区', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140212000000, '新荣区', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140213000000, '平城区', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140214000000, '云冈区', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140215000000, '云州区', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140221000000, '阳高县', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140222000000, '天镇县', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140223000000, '广灵县', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140224000000, '灵丘县', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140225000000, '浑源县', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140226000000, '左云县', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140271000000, '山西大同经济开发区', 3, 140200000000); -INSERT INTO "zz_area_code" VALUES (140300000000, '阳泉市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140301000000, '市辖区', 3, 140300000000); -INSERT INTO "zz_area_code" VALUES (140302000000, '城区', 3, 140300000000); -INSERT INTO "zz_area_code" VALUES (140303000000, '矿区', 3, 140300000000); -INSERT INTO "zz_area_code" VALUES (140311000000, '郊区', 3, 140300000000); -INSERT INTO "zz_area_code" VALUES (140321000000, '平定县', 3, 140300000000); -INSERT INTO "zz_area_code" VALUES (140322000000, '盂县', 3, 140300000000); -INSERT INTO "zz_area_code" VALUES (140400000000, '长治市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140401000000, '市辖区', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140403000000, '潞州区', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140404000000, '上党区', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140405000000, '屯留区', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140406000000, '潞城区', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140423000000, '襄垣县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140425000000, '平顺县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140426000000, '黎城县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140427000000, '壶关县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140428000000, '长子县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140429000000, '武乡县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140430000000, '沁县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140431000000, '沁源县', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140471000000, '山西长治高新技术产业园区', 3, 140400000000); -INSERT INTO "zz_area_code" VALUES (140500000000, '晋城市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140501000000, '市辖区', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140502000000, '城区', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140521000000, '沁水县', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140522000000, '阳城县', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140524000000, '陵川县', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140525000000, '泽州县', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140581000000, '高平市', 3, 140500000000); -INSERT INTO "zz_area_code" VALUES (140600000000, '朔州市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140601000000, '市辖区', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140602000000, '朔城区', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140603000000, '平鲁区', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140621000000, '山阴县', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140622000000, '应县', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140623000000, '右玉县', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140671000000, '山西朔州经济开发区', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140681000000, '怀仁市', 3, 140600000000); -INSERT INTO "zz_area_code" VALUES (140700000000, '晋中市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140701000000, '市辖区', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140702000000, '榆次区', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140721000000, '榆社县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140722000000, '左权县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140723000000, '和顺县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140724000000, '昔阳县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140725000000, '寿阳县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140726000000, '太谷县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140727000000, '祁县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140728000000, '平遥县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140729000000, '灵石县', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140781000000, '介休市', 3, 140700000000); -INSERT INTO "zz_area_code" VALUES (140800000000, '运城市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140801000000, '市辖区', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140802000000, '盐湖区', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140821000000, '临猗县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140822000000, '万荣县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140823000000, '闻喜县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140824000000, '稷山县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140825000000, '新绛县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140826000000, '绛县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140827000000, '垣曲县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140828000000, '夏县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140829000000, '平陆县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140830000000, '芮城县', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140881000000, '永济市', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140882000000, '河津市', 3, 140800000000); -INSERT INTO "zz_area_code" VALUES (140900000000, '忻州市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (140901000000, '市辖区', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140902000000, '忻府区', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140921000000, '定襄县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140922000000, '五台县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140923000000, '代县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140924000000, '繁峙县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140925000000, '宁武县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140926000000, '静乐县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140927000000, '神池县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140928000000, '五寨县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140929000000, '岢岚县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140930000000, '河曲县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140931000000, '保德县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140932000000, '偏关县', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140971000000, '五台山风景名胜区', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (140981000000, '原平市', 3, 140900000000); -INSERT INTO "zz_area_code" VALUES (141000000000, '临汾市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (141001000000, '市辖区', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141002000000, '尧都区', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141021000000, '曲沃县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141022000000, '翼城县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141023000000, '襄汾县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141024000000, '洪洞县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141025000000, '古县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141026000000, '安泽县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141027000000, '浮山县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141028000000, '吉县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141029000000, '乡宁县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141030000000, '大宁县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141031000000, '隰县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141032000000, '永和县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141033000000, '蒲县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141034000000, '汾西县', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141081000000, '侯马市', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141082000000, '霍州市', 3, 141000000000); -INSERT INTO "zz_area_code" VALUES (141100000000, '吕梁市', 2, 140000000000); -INSERT INTO "zz_area_code" VALUES (141101000000, '市辖区', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141102000000, '离石区', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141121000000, '文水县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141122000000, '交城县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141123000000, '兴县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141124000000, '临县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141125000000, '柳林县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141126000000, '石楼县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141127000000, '岚县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141128000000, '方山县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141129000000, '中阳县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141130000000, '交口县', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141181000000, '孝义市', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (141182000000, '汾阳市', 3, 141100000000); -INSERT INTO "zz_area_code" VALUES (150000000000, '内蒙古自治区', 1, null); -INSERT INTO "zz_area_code" VALUES (150100000000, '呼和浩特市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150101000000, '市辖区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150102000000, '新城区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150103000000, '回民区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150104000000, '玉泉区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150105000000, '赛罕区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150121000000, '土默特左旗', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150122000000, '托克托县', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150123000000, '和林格尔县', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150124000000, '清水河县', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150125000000, '武川县', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150171000000, '呼和浩特金海工业园区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150172000000, '呼和浩特经济技术开发区', 3, 150100000000); -INSERT INTO "zz_area_code" VALUES (150200000000, '包头市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150201000000, '市辖区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150202000000, '东河区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150203000000, '昆都仑区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150204000000, '青山区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150205000000, '石拐区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150206000000, '白云鄂博矿区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150207000000, '九原区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150221000000, '土默特右旗', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150222000000, '固阳县', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150223000000, '达尔罕茂明安联合旗', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150271000000, '包头稀土高新技术产业开发区', 3, 150200000000); -INSERT INTO "zz_area_code" VALUES (150300000000, '乌海市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150301000000, '市辖区', 3, 150300000000); -INSERT INTO "zz_area_code" VALUES (150302000000, '海勃湾区', 3, 150300000000); -INSERT INTO "zz_area_code" VALUES (150303000000, '海南区', 3, 150300000000); -INSERT INTO "zz_area_code" VALUES (150304000000, '乌达区', 3, 150300000000); -INSERT INTO "zz_area_code" VALUES (150400000000, '赤峰市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150401000000, '市辖区', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150402000000, '红山区', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150403000000, '元宝山区', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150404000000, '松山区', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150421000000, '阿鲁科尔沁旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150422000000, '巴林左旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150423000000, '巴林右旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150424000000, '林西县', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150425000000, '克什克腾旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150426000000, '翁牛特旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150428000000, '喀喇沁旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150429000000, '宁城县', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150430000000, '敖汉旗', 3, 150400000000); -INSERT INTO "zz_area_code" VALUES (150500000000, '通辽市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150501000000, '市辖区', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150502000000, '科尔沁区', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150521000000, '科尔沁左翼中旗', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150522000000, '科尔沁左翼后旗', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150523000000, '开鲁县', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150524000000, '库伦旗', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150525000000, '奈曼旗', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150526000000, '扎鲁特旗', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150571000000, '通辽经济技术开发区', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150581000000, '霍林郭勒市', 3, 150500000000); -INSERT INTO "zz_area_code" VALUES (150600000000, '鄂尔多斯市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150601000000, '市辖区', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150602000000, '东胜区', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150603000000, '康巴什区', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150621000000, '达拉特旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150622000000, '准格尔旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150623000000, '鄂托克前旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150624000000, '鄂托克旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150625000000, '杭锦旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150626000000, '乌审旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150627000000, '伊金霍洛旗', 3, 150600000000); -INSERT INTO "zz_area_code" VALUES (150700000000, '呼伦贝尔市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150701000000, '市辖区', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150702000000, '海拉尔区', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150703000000, '扎赉诺尔区', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150721000000, '阿荣旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150722000000, '莫力达瓦达斡尔族自治旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150723000000, '鄂伦春自治旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150724000000, '鄂温克族自治旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150725000000, '陈巴尔虎旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150726000000, '新巴尔虎左旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150727000000, '新巴尔虎右旗', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150781000000, '满洲里市', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150782000000, '牙克石市', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150783000000, '扎兰屯市', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150784000000, '额尔古纳市', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150785000000, '根河市', 3, 150700000000); -INSERT INTO "zz_area_code" VALUES (150800000000, '巴彦淖尔市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150801000000, '市辖区', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150802000000, '临河区', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150821000000, '五原县', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150822000000, '磴口县', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150823000000, '乌拉特前旗', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150824000000, '乌拉特中旗', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150825000000, '乌拉特后旗', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150826000000, '杭锦后旗', 3, 150800000000); -INSERT INTO "zz_area_code" VALUES (150900000000, '乌兰察布市', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (150901000000, '市辖区', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150902000000, '集宁区', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150921000000, '卓资县', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150922000000, '化德县', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150923000000, '商都县', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150924000000, '兴和县', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150925000000, '凉城县', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150926000000, '察哈尔右翼前旗', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150927000000, '察哈尔右翼中旗', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150928000000, '察哈尔右翼后旗', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150929000000, '四子王旗', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (150981000000, '丰镇市', 3, 150900000000); -INSERT INTO "zz_area_code" VALUES (152200000000, '兴安盟', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (152201000000, '乌兰浩特市', 3, 152200000000); -INSERT INTO "zz_area_code" VALUES (152202000000, '阿尔山市', 3, 152200000000); -INSERT INTO "zz_area_code" VALUES (152221000000, '科尔沁右翼前旗', 3, 152200000000); -INSERT INTO "zz_area_code" VALUES (152222000000, '科尔沁右翼中旗', 3, 152200000000); -INSERT INTO "zz_area_code" VALUES (152223000000, '扎赉特旗', 3, 152200000000); -INSERT INTO "zz_area_code" VALUES (152224000000, '突泉县', 3, 152200000000); -INSERT INTO "zz_area_code" VALUES (152500000000, '锡林郭勒盟', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (152501000000, '二连浩特市', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152502000000, '锡林浩特市', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152522000000, '阿巴嘎旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152523000000, '苏尼特左旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152524000000, '苏尼特右旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152525000000, '东乌珠穆沁旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152526000000, '西乌珠穆沁旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152527000000, '太仆寺旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152528000000, '镶黄旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152529000000, '正镶白旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152530000000, '正蓝旗', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152531000000, '多伦县', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152571000000, '乌拉盖管委会', 3, 152500000000); -INSERT INTO "zz_area_code" VALUES (152900000000, '阿拉善盟', 2, 150000000000); -INSERT INTO "zz_area_code" VALUES (152921000000, '阿拉善左旗', 3, 152900000000); -INSERT INTO "zz_area_code" VALUES (152922000000, '阿拉善右旗', 3, 152900000000); -INSERT INTO "zz_area_code" VALUES (152923000000, '额济纳旗', 3, 152900000000); -INSERT INTO "zz_area_code" VALUES (152971000000, '内蒙古阿拉善经济开发区', 3, 152900000000); -INSERT INTO "zz_area_code" VALUES (210000000000, '辽宁省', 1, null); -INSERT INTO "zz_area_code" VALUES (210100000000, '沈阳市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210101000000, '市辖区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210102000000, '和平区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210103000000, '沈河区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210104000000, '大东区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210105000000, '皇姑区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210106000000, '铁西区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210111000000, '苏家屯区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210112000000, '浑南区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210113000000, '沈北新区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210114000000, '于洪区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210115000000, '辽中区', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210123000000, '康平县', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210124000000, '法库县', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210181000000, '新民市', 3, 210100000000); -INSERT INTO "zz_area_code" VALUES (210200000000, '大连市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210201000000, '市辖区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210202000000, '中山区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210203000000, '西岗区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210204000000, '沙河口区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210211000000, '甘井子区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210212000000, '旅顺口区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210213000000, '金州区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210214000000, '普兰店区', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210224000000, '长海县', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210281000000, '瓦房店市', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210283000000, '庄河市', 3, 210200000000); -INSERT INTO "zz_area_code" VALUES (210300000000, '鞍山市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210301000000, '市辖区', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210302000000, '铁东区', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210303000000, '铁西区', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210304000000, '立山区', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210311000000, '千山区', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210321000000, '台安县', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210323000000, '岫岩满族自治县', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210381000000, '海城市', 3, 210300000000); -INSERT INTO "zz_area_code" VALUES (210400000000, '抚顺市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210401000000, '市辖区', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210402000000, '新抚区', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210403000000, '东洲区', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210404000000, '望花区', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210411000000, '顺城区', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210421000000, '抚顺县', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210422000000, '新宾满族自治县', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210423000000, '清原满族自治县', 3, 210400000000); -INSERT INTO "zz_area_code" VALUES (210500000000, '本溪市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210501000000, '市辖区', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210502000000, '平山区', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210503000000, '溪湖区', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210504000000, '明山区', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210505000000, '南芬区', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210521000000, '本溪满族自治县', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210522000000, '桓仁满族自治县', 3, 210500000000); -INSERT INTO "zz_area_code" VALUES (210600000000, '丹东市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210601000000, '市辖区', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210602000000, '元宝区', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210603000000, '振兴区', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210604000000, '振安区', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210624000000, '宽甸满族自治县', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210681000000, '东港市', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210682000000, '凤城市', 3, 210600000000); -INSERT INTO "zz_area_code" VALUES (210700000000, '锦州市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210701000000, '市辖区', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210702000000, '古塔区', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210703000000, '凌河区', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210711000000, '太和区', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210726000000, '黑山县', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210727000000, '义县', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210781000000, '凌海市', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210782000000, '北镇市', 3, 210700000000); -INSERT INTO "zz_area_code" VALUES (210800000000, '营口市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210801000000, '市辖区', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210802000000, '站前区', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210803000000, '西市区', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210804000000, '鲅鱼圈区', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210811000000, '老边区', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210881000000, '盖州市', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210882000000, '大石桥市', 3, 210800000000); -INSERT INTO "zz_area_code" VALUES (210900000000, '阜新市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (210901000000, '市辖区', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210902000000, '海州区', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210903000000, '新邱区', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210904000000, '太平区', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210905000000, '清河门区', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210911000000, '细河区', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210921000000, '阜新蒙古族自治县', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (210922000000, '彰武县', 3, 210900000000); -INSERT INTO "zz_area_code" VALUES (211000000000, '辽阳市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (211001000000, '市辖区', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211002000000, '白塔区', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211003000000, '文圣区', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211004000000, '宏伟区', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211005000000, '弓长岭区', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211011000000, '太子河区', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211021000000, '辽阳县', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211081000000, '灯塔市', 3, 211000000000); -INSERT INTO "zz_area_code" VALUES (211100000000, '盘锦市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (211101000000, '市辖区', 3, 211100000000); -INSERT INTO "zz_area_code" VALUES (211102000000, '双台子区', 3, 211100000000); -INSERT INTO "zz_area_code" VALUES (211103000000, '兴隆台区', 3, 211100000000); -INSERT INTO "zz_area_code" VALUES (211104000000, '大洼区', 3, 211100000000); -INSERT INTO "zz_area_code" VALUES (211122000000, '盘山县', 3, 211100000000); -INSERT INTO "zz_area_code" VALUES (211200000000, '铁岭市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (211201000000, '市辖区', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211202000000, '银州区', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211204000000, '清河区', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211221000000, '铁岭县', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211223000000, '西丰县', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211224000000, '昌图县', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211281000000, '调兵山市', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211282000000, '开原市', 3, 211200000000); -INSERT INTO "zz_area_code" VALUES (211300000000, '朝阳市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (211301000000, '市辖区', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211302000000, '双塔区', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211303000000, '龙城区', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211321000000, '朝阳县', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211322000000, '建平县', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211324000000, '喀喇沁左翼蒙古族自治县', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211381000000, '北票市', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211382000000, '凌源市', 3, 211300000000); -INSERT INTO "zz_area_code" VALUES (211400000000, '葫芦岛市', 2, 210000000000); -INSERT INTO "zz_area_code" VALUES (211401000000, '市辖区', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (211402000000, '连山区', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (211403000000, '龙港区', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (211404000000, '南票区', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (211421000000, '绥中县', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (211422000000, '建昌县', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (211481000000, '兴城市', 3, 211400000000); -INSERT INTO "zz_area_code" VALUES (220000000000, '吉林省', 1, null); -INSERT INTO "zz_area_code" VALUES (220100000000, '长春市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220101000000, '市辖区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220102000000, '南关区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220103000000, '宽城区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220104000000, '朝阳区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220105000000, '二道区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220106000000, '绿园区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220112000000, '双阳区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220113000000, '九台区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220122000000, '农安县', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220171000000, '长春经济技术开发区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220172000000, '长春净月高新技术产业开发区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220173000000, '长春高新技术产业开发区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220174000000, '长春汽车经济技术开发区', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220182000000, '榆树市', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220183000000, '德惠市', 3, 220100000000); -INSERT INTO "zz_area_code" VALUES (220200000000, '吉林市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220201000000, '市辖区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220202000000, '昌邑区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220203000000, '龙潭区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220204000000, '船营区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220211000000, '丰满区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220221000000, '永吉县', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220271000000, '吉林经济开发区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220272000000, '吉林高新技术产业开发区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220273000000, '吉林中国新加坡食品区', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220281000000, '蛟河市', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220282000000, '桦甸市', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220283000000, '舒兰市', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220284000000, '磐石市', 3, 220200000000); -INSERT INTO "zz_area_code" VALUES (220300000000, '四平市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220301000000, '市辖区', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220302000000, '铁西区', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220303000000, '铁东区', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220322000000, '梨树县', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220323000000, '伊通满族自治县', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220381000000, '公主岭市', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220382000000, '双辽市', 3, 220300000000); -INSERT INTO "zz_area_code" VALUES (220400000000, '辽源市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220401000000, '市辖区', 3, 220400000000); -INSERT INTO "zz_area_code" VALUES (220402000000, '龙山区', 3, 220400000000); -INSERT INTO "zz_area_code" VALUES (220403000000, '西安区', 3, 220400000000); -INSERT INTO "zz_area_code" VALUES (220421000000, '东丰县', 3, 220400000000); -INSERT INTO "zz_area_code" VALUES (220422000000, '东辽县', 3, 220400000000); -INSERT INTO "zz_area_code" VALUES (220500000000, '通化市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220501000000, '市辖区', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220502000000, '东昌区', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220503000000, '二道江区', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220521000000, '通化县', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220523000000, '辉南县', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220524000000, '柳河县', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220581000000, '梅河口市', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220582000000, '集安市', 3, 220500000000); -INSERT INTO "zz_area_code" VALUES (220600000000, '白山市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220601000000, '市辖区', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220602000000, '浑江区', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220605000000, '江源区', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220621000000, '抚松县', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220622000000, '靖宇县', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220623000000, '长白朝鲜族自治县', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220681000000, '临江市', 3, 220600000000); -INSERT INTO "zz_area_code" VALUES (220700000000, '松原市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220701000000, '市辖区', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220702000000, '宁江区', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220721000000, '前郭尔罗斯蒙古族自治县', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220722000000, '长岭县', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220723000000, '乾安县', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220771000000, '吉林松原经济开发区', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220781000000, '扶余市', 3, 220700000000); -INSERT INTO "zz_area_code" VALUES (220800000000, '白城市', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (220801000000, '市辖区', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (220802000000, '洮北区', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (220821000000, '镇赉县', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (220822000000, '通榆县', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (220871000000, '吉林白城经济开发区', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (220881000000, '洮南市', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (220882000000, '大安市', 3, 220800000000); -INSERT INTO "zz_area_code" VALUES (222400000000, '延边朝鲜族自治州', 2, 220000000000); -INSERT INTO "zz_area_code" VALUES (222401000000, '延吉市', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222402000000, '图们市', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222403000000, '敦化市', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222404000000, '珲春市', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222405000000, '龙井市', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222406000000, '和龙市', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222424000000, '汪清县', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (222426000000, '安图县', 3, 222400000000); -INSERT INTO "zz_area_code" VALUES (230000000000, '黑龙江省', 1, null); -INSERT INTO "zz_area_code" VALUES (230100000000, '哈尔滨市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230101000000, '市辖区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230102000000, '道里区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230103000000, '南岗区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230104000000, '道外区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230108000000, '平房区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230109000000, '松北区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230110000000, '香坊区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230111000000, '呼兰区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230112000000, '阿城区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230113000000, '双城区', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230123000000, '依兰县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230124000000, '方正县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230125000000, '宾县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230126000000, '巴彦县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230127000000, '木兰县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230128000000, '通河县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230129000000, '延寿县', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230183000000, '尚志市', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230184000000, '五常市', 3, 230100000000); -INSERT INTO "zz_area_code" VALUES (230200000000, '齐齐哈尔市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230201000000, '市辖区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230202000000, '龙沙区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230203000000, '建华区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230204000000, '铁锋区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230205000000, '昂昂溪区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230206000000, '富拉尔基区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230207000000, '碾子山区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230208000000, '梅里斯达斡尔族区', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230221000000, '龙江县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230223000000, '依安县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230224000000, '泰来县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230225000000, '甘南县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230227000000, '富裕县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230229000000, '克山县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230230000000, '克东县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230231000000, '拜泉县', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230281000000, '讷河市', 3, 230200000000); -INSERT INTO "zz_area_code" VALUES (230300000000, '鸡西市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230301000000, '市辖区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230302000000, '鸡冠区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230303000000, '恒山区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230304000000, '滴道区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230305000000, '梨树区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230306000000, '城子河区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230307000000, '麻山区', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230321000000, '鸡东县', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230381000000, '虎林市', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230382000000, '密山市', 3, 230300000000); -INSERT INTO "zz_area_code" VALUES (230400000000, '鹤岗市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230401000000, '市辖区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230402000000, '向阳区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230403000000, '工农区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230404000000, '南山区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230405000000, '兴安区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230406000000, '东山区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230407000000, '兴山区', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230421000000, '萝北县', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230422000000, '绥滨县', 3, 230400000000); -INSERT INTO "zz_area_code" VALUES (230500000000, '双鸭山市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230501000000, '市辖区', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230502000000, '尖山区', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230503000000, '岭东区', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230505000000, '四方台区', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230506000000, '宝山区', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230521000000, '集贤县', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230522000000, '友谊县', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230523000000, '宝清县', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230524000000, '饶河县', 3, 230500000000); -INSERT INTO "zz_area_code" VALUES (230600000000, '大庆市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230601000000, '市辖区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230602000000, '萨尔图区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230603000000, '龙凤区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230604000000, '让胡路区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230605000000, '红岗区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230606000000, '大同区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230621000000, '肇州县', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230622000000, '肇源县', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230623000000, '林甸县', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230624000000, '杜尔伯特蒙古族自治县', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230671000000, '大庆高新技术产业开发区', 3, 230600000000); -INSERT INTO "zz_area_code" VALUES (230700000000, '伊春市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230701000000, '市辖区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230702000000, '伊春区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230703000000, '南岔区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230704000000, '友好区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230705000000, '西林区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230706000000, '翠峦区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230707000000, '新青区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230708000000, '美溪区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230709000000, '金山屯区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230710000000, '五营区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230711000000, '乌马河区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230712000000, '汤旺河区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230713000000, '带岭区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230714000000, '乌伊岭区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230715000000, '红星区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230716000000, '上甘岭区', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230722000000, '嘉荫县', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230781000000, '铁力市', 3, 230700000000); -INSERT INTO "zz_area_code" VALUES (230800000000, '佳木斯市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230801000000, '市辖区', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230803000000, '向阳区', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230804000000, '前进区', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230805000000, '东风区', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230811000000, '郊区', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230822000000, '桦南县', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230826000000, '桦川县', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230828000000, '汤原县', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230881000000, '同江市', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230882000000, '富锦市', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230883000000, '抚远市', 3, 230800000000); -INSERT INTO "zz_area_code" VALUES (230900000000, '七台河市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (230901000000, '市辖区', 3, 230900000000); -INSERT INTO "zz_area_code" VALUES (230902000000, '新兴区', 3, 230900000000); -INSERT INTO "zz_area_code" VALUES (230903000000, '桃山区', 3, 230900000000); -INSERT INTO "zz_area_code" VALUES (230904000000, '茄子河区', 3, 230900000000); -INSERT INTO "zz_area_code" VALUES (230921000000, '勃利县', 3, 230900000000); -INSERT INTO "zz_area_code" VALUES (231000000000, '牡丹江市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (231001000000, '市辖区', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231002000000, '东安区', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231003000000, '阳明区', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231004000000, '爱民区', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231005000000, '西安区', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231025000000, '林口县', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231071000000, '牡丹江经济技术开发区', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231081000000, '绥芬河市', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231083000000, '海林市', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231084000000, '宁安市', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231085000000, '穆棱市', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231086000000, '东宁市', 3, 231000000000); -INSERT INTO "zz_area_code" VALUES (231100000000, '黑河市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (231101000000, '市辖区', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231102000000, '爱辉区', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231121000000, '嫩江县', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231123000000, '逊克县', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231124000000, '孙吴县', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231181000000, '北安市', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231182000000, '五大连池市', 3, 231100000000); -INSERT INTO "zz_area_code" VALUES (231200000000, '绥化市', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (231201000000, '市辖区', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231202000000, '北林区', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231221000000, '望奎县', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231222000000, '兰西县', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231223000000, '青冈县', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231224000000, '庆安县', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231225000000, '明水县', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231226000000, '绥棱县', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231281000000, '安达市', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231282000000, '肇东市', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (231283000000, '海伦市', 3, 231200000000); -INSERT INTO "zz_area_code" VALUES (232700000000, '大兴安岭地区', 2, 230000000000); -INSERT INTO "zz_area_code" VALUES (232701000000, '漠河市', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (232721000000, '呼玛县', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (232722000000, '塔河县', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (232761000000, '加格达奇区', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (232762000000, '松岭区', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (232763000000, '新林区', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (232764000000, '呼中区', 3, 232700000000); -INSERT INTO "zz_area_code" VALUES (310000000000, '上海市', 1, null); -INSERT INTO "zz_area_code" VALUES (310100000000, '市辖区', 2, 310000000000); -INSERT INTO "zz_area_code" VALUES (310101000000, '黄浦区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310104000000, '徐汇区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310105000000, '长宁区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310106000000, '静安区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310107000000, '普陀区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310109000000, '虹口区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310110000000, '杨浦区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310112000000, '闵行区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310113000000, '宝山区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310114000000, '嘉定区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310115000000, '浦东新区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310116000000, '金山区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310117000000, '松江区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310118000000, '青浦区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310120000000, '奉贤区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (310151000000, '崇明区', 3, 310100000000); -INSERT INTO "zz_area_code" VALUES (320000000000, '江苏省', 1, null); -INSERT INTO "zz_area_code" VALUES (320100000000, '南京市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320101000000, '市辖区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320102000000, '玄武区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320104000000, '秦淮区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320105000000, '建邺区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320106000000, '鼓楼区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320111000000, '浦口区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320113000000, '栖霞区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320114000000, '雨花台区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320115000000, '江宁区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320116000000, '六合区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320117000000, '溧水区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320118000000, '高淳区', 3, 320100000000); -INSERT INTO "zz_area_code" VALUES (320200000000, '无锡市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320201000000, '市辖区', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320205000000, '锡山区', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320206000000, '惠山区', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320211000000, '滨湖区', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320213000000, '梁溪区', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320214000000, '新吴区', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320281000000, '江阴市', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320282000000, '宜兴市', 3, 320200000000); -INSERT INTO "zz_area_code" VALUES (320300000000, '徐州市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320301000000, '市辖区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320302000000, '鼓楼区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320303000000, '云龙区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320305000000, '贾汪区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320311000000, '泉山区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320312000000, '铜山区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320321000000, '丰县', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320322000000, '沛县', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320324000000, '睢宁县', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320371000000, '徐州经济技术开发区', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320381000000, '新沂市', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320382000000, '邳州市', 3, 320300000000); -INSERT INTO "zz_area_code" VALUES (320400000000, '常州市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320401000000, '市辖区', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320402000000, '天宁区', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320404000000, '钟楼区', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320411000000, '新北区', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320412000000, '武进区', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320413000000, '金坛区', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320481000000, '溧阳市', 3, 320400000000); -INSERT INTO "zz_area_code" VALUES (320500000000, '苏州市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320501000000, '市辖区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320505000000, '虎丘区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320506000000, '吴中区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320507000000, '相城区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320508000000, '姑苏区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320509000000, '吴江区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320571000000, '苏州工业园区', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320581000000, '常熟市', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320582000000, '张家港市', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320583000000, '昆山市', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320585000000, '太仓市', 3, 320500000000); -INSERT INTO "zz_area_code" VALUES (320600000000, '南通市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320601000000, '市辖区', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320602000000, '崇川区', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320611000000, '港闸区', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320612000000, '通州区', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320623000000, '如东县', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320671000000, '南通经济技术开发区', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320681000000, '启东市', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320682000000, '如皋市', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320684000000, '海门市', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320685000000, '海安市', 3, 320600000000); -INSERT INTO "zz_area_code" VALUES (320700000000, '连云港市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320701000000, '市辖区', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320703000000, '连云区', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320706000000, '海州区', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320707000000, '赣榆区', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320722000000, '东海县', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320723000000, '灌云县', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320724000000, '灌南县', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320771000000, '连云港经济技术开发区', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320772000000, '连云港高新技术产业开发区', 3, 320700000000); -INSERT INTO "zz_area_code" VALUES (320800000000, '淮安市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320801000000, '市辖区', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320803000000, '淮安区', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320804000000, '淮阴区', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320812000000, '清江浦区', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320813000000, '洪泽区', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320826000000, '涟水县', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320830000000, '盱眙县', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320831000000, '金湖县', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320871000000, '淮安经济技术开发区', 3, 320800000000); -INSERT INTO "zz_area_code" VALUES (320900000000, '盐城市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (320901000000, '市辖区', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320902000000, '亭湖区', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320903000000, '盐都区', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320904000000, '大丰区', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320921000000, '响水县', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320922000000, '滨海县', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320923000000, '阜宁县', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320924000000, '射阳县', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320925000000, '建湖县', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320971000000, '盐城经济技术开发区', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (320981000000, '东台市', 3, 320900000000); -INSERT INTO "zz_area_code" VALUES (321000000000, '扬州市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (321001000000, '市辖区', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321002000000, '广陵区', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321003000000, '邗江区', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321012000000, '江都区', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321023000000, '宝应县', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321071000000, '扬州经济技术开发区', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321081000000, '仪征市', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321084000000, '高邮市', 3, 321000000000); -INSERT INTO "zz_area_code" VALUES (321100000000, '镇江市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (321101000000, '市辖区', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321102000000, '京口区', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321111000000, '润州区', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321112000000, '丹徒区', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321171000000, '镇江新区', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321181000000, '丹阳市', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321182000000, '扬中市', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321183000000, '句容市', 3, 321100000000); -INSERT INTO "zz_area_code" VALUES (321200000000, '泰州市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (321201000000, '市辖区', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321202000000, '海陵区', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321203000000, '高港区', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321204000000, '姜堰区', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321271000000, '泰州医药高新技术产业开发区', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321281000000, '兴化市', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321282000000, '靖江市', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321283000000, '泰兴市', 3, 321200000000); -INSERT INTO "zz_area_code" VALUES (321300000000, '宿迁市', 2, 320000000000); -INSERT INTO "zz_area_code" VALUES (321301000000, '市辖区', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (321302000000, '宿城区', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (321311000000, '宿豫区', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (321322000000, '沭阳县', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (321323000000, '泗阳县', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (321324000000, '泗洪县', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (321371000000, '宿迁经济技术开发区', 3, 321300000000); -INSERT INTO "zz_area_code" VALUES (330000000000, '浙江省', 1, null); -INSERT INTO "zz_area_code" VALUES (330100000000, '杭州市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330101000000, '市辖区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330102000000, '上城区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330103000000, '下城区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330104000000, '江干区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330105000000, '拱墅区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330106000000, '西湖区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330108000000, '滨江区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330109000000, '萧山区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330110000000, '余杭区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330111000000, '富阳区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330112000000, '临安区', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330122000000, '桐庐县', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330127000000, '淳安县', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330182000000, '建德市', 3, 330100000000); -INSERT INTO "zz_area_code" VALUES (330200000000, '宁波市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330201000000, '市辖区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330203000000, '海曙区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330205000000, '江北区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330206000000, '北仑区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330211000000, '镇海区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330212000000, '鄞州区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330213000000, '奉化区', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330225000000, '象山县', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330226000000, '宁海县', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330281000000, '余姚市', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330282000000, '慈溪市', 3, 330200000000); -INSERT INTO "zz_area_code" VALUES (330300000000, '温州市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330301000000, '市辖区', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330302000000, '鹿城区', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330303000000, '龙湾区', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330304000000, '瓯海区', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330305000000, '洞头区', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330324000000, '永嘉县', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330326000000, '平阳县', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330327000000, '苍南县', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330328000000, '文成县', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330329000000, '泰顺县', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330371000000, '温州经济技术开发区', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330381000000, '瑞安市', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330382000000, '乐清市', 3, 330300000000); -INSERT INTO "zz_area_code" VALUES (330400000000, '嘉兴市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330401000000, '市辖区', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330402000000, '南湖区', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330411000000, '秀洲区', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330421000000, '嘉善县', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330424000000, '海盐县', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330481000000, '海宁市', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330482000000, '平湖市', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330483000000, '桐乡市', 3, 330400000000); -INSERT INTO "zz_area_code" VALUES (330500000000, '湖州市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330501000000, '市辖区', 3, 330500000000); -INSERT INTO "zz_area_code" VALUES (330502000000, '吴兴区', 3, 330500000000); -INSERT INTO "zz_area_code" VALUES (330503000000, '南浔区', 3, 330500000000); -INSERT INTO "zz_area_code" VALUES (330521000000, '德清县', 3, 330500000000); -INSERT INTO "zz_area_code" VALUES (330522000000, '长兴县', 3, 330500000000); -INSERT INTO "zz_area_code" VALUES (330523000000, '安吉县', 3, 330500000000); -INSERT INTO "zz_area_code" VALUES (330600000000, '绍兴市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330601000000, '市辖区', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330602000000, '越城区', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330603000000, '柯桥区', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330604000000, '上虞区', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330624000000, '新昌县', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330681000000, '诸暨市', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330683000000, '嵊州市', 3, 330600000000); -INSERT INTO "zz_area_code" VALUES (330700000000, '金华市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330701000000, '市辖区', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330702000000, '婺城区', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330703000000, '金东区', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330723000000, '武义县', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330726000000, '浦江县', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330727000000, '磐安县', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330781000000, '兰溪市', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330782000000, '义乌市', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330783000000, '东阳市', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330784000000, '永康市', 3, 330700000000); -INSERT INTO "zz_area_code" VALUES (330800000000, '衢州市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330801000000, '市辖区', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330802000000, '柯城区', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330803000000, '衢江区', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330822000000, '常山县', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330824000000, '开化县', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330825000000, '龙游县', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330881000000, '江山市', 3, 330800000000); -INSERT INTO "zz_area_code" VALUES (330900000000, '舟山市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (330901000000, '市辖区', 3, 330900000000); -INSERT INTO "zz_area_code" VALUES (330902000000, '定海区', 3, 330900000000); -INSERT INTO "zz_area_code" VALUES (330903000000, '普陀区', 3, 330900000000); -INSERT INTO "zz_area_code" VALUES (330921000000, '岱山县', 3, 330900000000); -INSERT INTO "zz_area_code" VALUES (330922000000, '嵊泗县', 3, 330900000000); -INSERT INTO "zz_area_code" VALUES (331000000000, '台州市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (331001000000, '市辖区', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331002000000, '椒江区', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331003000000, '黄岩区', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331004000000, '路桥区', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331022000000, '三门县', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331023000000, '天台县', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331024000000, '仙居县', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331081000000, '温岭市', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331082000000, '临海市', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331083000000, '玉环市', 3, 331000000000); -INSERT INTO "zz_area_code" VALUES (331100000000, '丽水市', 2, 330000000000); -INSERT INTO "zz_area_code" VALUES (331101000000, '市辖区', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331102000000, '莲都区', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331121000000, '青田县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331122000000, '缙云县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331123000000, '遂昌县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331124000000, '松阳县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331125000000, '云和县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331126000000, '庆元县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331127000000, '景宁畲族自治县', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (331181000000, '龙泉市', 3, 331100000000); -INSERT INTO "zz_area_code" VALUES (340000000000, '安徽省', 1, null); -INSERT INTO "zz_area_code" VALUES (340100000000, '合肥市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340101000000, '市辖区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340102000000, '瑶海区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340103000000, '庐阳区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340104000000, '蜀山区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340111000000, '包河区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340121000000, '长丰县', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340122000000, '肥东县', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340123000000, '肥西县', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340124000000, '庐江县', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340171000000, '合肥高新技术产业开发区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340172000000, '合肥经济技术开发区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340173000000, '合肥新站高新技术产业开发区', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340181000000, '巢湖市', 3, 340100000000); -INSERT INTO "zz_area_code" VALUES (340200000000, '芜湖市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340201000000, '市辖区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340202000000, '镜湖区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340203000000, '弋江区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340207000000, '鸠江区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340208000000, '三山区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340221000000, '芜湖县', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340222000000, '繁昌县', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340223000000, '南陵县', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340225000000, '无为县', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340271000000, '芜湖经济技术开发区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340272000000, '安徽芜湖长江大桥经济开发区', 3, 340200000000); -INSERT INTO "zz_area_code" VALUES (340300000000, '蚌埠市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340301000000, '市辖区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340302000000, '龙子湖区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340303000000, '蚌山区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340304000000, '禹会区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340311000000, '淮上区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340321000000, '怀远县', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340322000000, '五河县', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340323000000, '固镇县', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340371000000, '蚌埠市高新技术开发区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340372000000, '蚌埠市经济开发区', 3, 340300000000); -INSERT INTO "zz_area_code" VALUES (340400000000, '淮南市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340401000000, '市辖区', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340402000000, '大通区', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340403000000, '田家庵区', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340404000000, '谢家集区', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340405000000, '八公山区', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340406000000, '潘集区', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340421000000, '凤台县', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340422000000, '寿县', 3, 340400000000); -INSERT INTO "zz_area_code" VALUES (340500000000, '马鞍山市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340501000000, '市辖区', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340503000000, '花山区', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340504000000, '雨山区', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340506000000, '博望区', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340521000000, '当涂县', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340522000000, '含山县', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340523000000, '和县', 3, 340500000000); -INSERT INTO "zz_area_code" VALUES (340600000000, '淮北市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340601000000, '市辖区', 3, 340600000000); -INSERT INTO "zz_area_code" VALUES (340602000000, '杜集区', 3, 340600000000); -INSERT INTO "zz_area_code" VALUES (340603000000, '相山区', 3, 340600000000); -INSERT INTO "zz_area_code" VALUES (340604000000, '烈山区', 3, 340600000000); -INSERT INTO "zz_area_code" VALUES (340621000000, '濉溪县', 3, 340600000000); -INSERT INTO "zz_area_code" VALUES (340700000000, '铜陵市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340701000000, '市辖区', 3, 340700000000); -INSERT INTO "zz_area_code" VALUES (340705000000, '铜官区', 3, 340700000000); -INSERT INTO "zz_area_code" VALUES (340706000000, '义安区', 3, 340700000000); -INSERT INTO "zz_area_code" VALUES (340711000000, '郊区', 3, 340700000000); -INSERT INTO "zz_area_code" VALUES (340722000000, '枞阳县', 3, 340700000000); -INSERT INTO "zz_area_code" VALUES (340800000000, '安庆市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (340801000000, '市辖区', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340802000000, '迎江区', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340803000000, '大观区', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340811000000, '宜秀区', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340822000000, '怀宁县', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340825000000, '太湖县', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340826000000, '宿松县', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340827000000, '望江县', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340828000000, '岳西县', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340871000000, '安徽安庆经济开发区', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340881000000, '桐城市', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (340882000000, '潜山市', 3, 340800000000); -INSERT INTO "zz_area_code" VALUES (341000000000, '黄山市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341001000000, '市辖区', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341002000000, '屯溪区', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341003000000, '黄山区', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341004000000, '徽州区', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341021000000, '歙县', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341022000000, '休宁县', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341023000000, '黟县', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341024000000, '祁门县', 3, 341000000000); -INSERT INTO "zz_area_code" VALUES (341100000000, '滁州市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341101000000, '市辖区', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341102000000, '琅琊区', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341103000000, '南谯区', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341122000000, '来安县', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341124000000, '全椒县', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341125000000, '定远县', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341126000000, '凤阳县', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341171000000, '苏滁现代产业园', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341172000000, '滁州经济技术开发区', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341181000000, '天长市', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341182000000, '明光市', 3, 341100000000); -INSERT INTO "zz_area_code" VALUES (341200000000, '阜阳市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341201000000, '市辖区', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341202000000, '颍州区', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341203000000, '颍东区', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341204000000, '颍泉区', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341221000000, '临泉县', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341222000000, '太和县', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341225000000, '阜南县', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341226000000, '颍上县', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341271000000, '阜阳合肥现代产业园区', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341272000000, '阜阳经济技术开发区', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341282000000, '界首市', 3, 341200000000); -INSERT INTO "zz_area_code" VALUES (341300000000, '宿州市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341301000000, '市辖区', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341302000000, '埇桥区', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341321000000, '砀山县', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341322000000, '萧县', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341323000000, '灵璧县', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341324000000, '泗县', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341371000000, '宿州马鞍山现代产业园区', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341372000000, '宿州经济技术开发区', 3, 341300000000); -INSERT INTO "zz_area_code" VALUES (341500000000, '六安市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341501000000, '市辖区', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341502000000, '金安区', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341503000000, '裕安区', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341504000000, '叶集区', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341522000000, '霍邱县', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341523000000, '舒城县', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341524000000, '金寨县', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341525000000, '霍山县', 3, 341500000000); -INSERT INTO "zz_area_code" VALUES (341600000000, '亳州市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341601000000, '市辖区', 3, 341600000000); -INSERT INTO "zz_area_code" VALUES (341602000000, '谯城区', 3, 341600000000); -INSERT INTO "zz_area_code" VALUES (341621000000, '涡阳县', 3, 341600000000); -INSERT INTO "zz_area_code" VALUES (341622000000, '蒙城县', 3, 341600000000); -INSERT INTO "zz_area_code" VALUES (341623000000, '利辛县', 3, 341600000000); -INSERT INTO "zz_area_code" VALUES (341700000000, '池州市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341701000000, '市辖区', 3, 341700000000); -INSERT INTO "zz_area_code" VALUES (341702000000, '贵池区', 3, 341700000000); -INSERT INTO "zz_area_code" VALUES (341721000000, '东至县', 3, 341700000000); -INSERT INTO "zz_area_code" VALUES (341722000000, '石台县', 3, 341700000000); -INSERT INTO "zz_area_code" VALUES (341723000000, '青阳县', 3, 341700000000); -INSERT INTO "zz_area_code" VALUES (341800000000, '宣城市', 2, 340000000000); -INSERT INTO "zz_area_code" VALUES (341801000000, '市辖区', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341802000000, '宣州区', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341821000000, '郎溪县', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341822000000, '广德县', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341823000000, '泾县', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341824000000, '绩溪县', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341825000000, '旌德县', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341871000000, '宣城市经济开发区', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (341881000000, '宁国市', 3, 341800000000); -INSERT INTO "zz_area_code" VALUES (350000000000, '福建省', 1, null); -INSERT INTO "zz_area_code" VALUES (350100000000, '福州市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350101000000, '市辖区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350102000000, '鼓楼区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350103000000, '台江区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350104000000, '仓山区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350105000000, '马尾区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350111000000, '晋安区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350112000000, '长乐区', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350121000000, '闽侯县', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350122000000, '连江县', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350123000000, '罗源县', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350124000000, '闽清县', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350125000000, '永泰县', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350128000000, '平潭县', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350181000000, '福清市', 3, 350100000000); -INSERT INTO "zz_area_code" VALUES (350200000000, '厦门市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350201000000, '市辖区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350203000000, '思明区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350205000000, '海沧区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350206000000, '湖里区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350211000000, '集美区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350212000000, '同安区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350213000000, '翔安区', 3, 350200000000); -INSERT INTO "zz_area_code" VALUES (350300000000, '莆田市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350301000000, '市辖区', 3, 350300000000); -INSERT INTO "zz_area_code" VALUES (350302000000, '城厢区', 3, 350300000000); -INSERT INTO "zz_area_code" VALUES (350303000000, '涵江区', 3, 350300000000); -INSERT INTO "zz_area_code" VALUES (350304000000, '荔城区', 3, 350300000000); -INSERT INTO "zz_area_code" VALUES (350305000000, '秀屿区', 3, 350300000000); -INSERT INTO "zz_area_code" VALUES (350322000000, '仙游县', 3, 350300000000); -INSERT INTO "zz_area_code" VALUES (350400000000, '三明市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350401000000, '市辖区', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350402000000, '梅列区', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350403000000, '三元区', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350421000000, '明溪县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350423000000, '清流县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350424000000, '宁化县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350425000000, '大田县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350426000000, '尤溪县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350427000000, '沙县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350428000000, '将乐县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350429000000, '泰宁县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350430000000, '建宁县', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350481000000, '永安市', 3, 350400000000); -INSERT INTO "zz_area_code" VALUES (350500000000, '泉州市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350501000000, '市辖区', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350502000000, '鲤城区', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350503000000, '丰泽区', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350504000000, '洛江区', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350505000000, '泉港区', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350521000000, '惠安县', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350524000000, '安溪县', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350525000000, '永春县', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350526000000, '德化县', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350527000000, '金门县', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350581000000, '石狮市', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350582000000, '晋江市', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350583000000, '南安市', 3, 350500000000); -INSERT INTO "zz_area_code" VALUES (350600000000, '漳州市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350601000000, '市辖区', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350602000000, '芗城区', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350603000000, '龙文区', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350622000000, '云霄县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350623000000, '漳浦县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350624000000, '诏安县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350625000000, '长泰县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350626000000, '东山县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350627000000, '南靖县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350628000000, '平和县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350629000000, '华安县', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350681000000, '龙海市', 3, 350600000000); -INSERT INTO "zz_area_code" VALUES (350700000000, '南平市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350701000000, '市辖区', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350702000000, '延平区', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350703000000, '建阳区', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350721000000, '顺昌县', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350722000000, '浦城县', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350723000000, '光泽县', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350724000000, '松溪县', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350725000000, '政和县', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350781000000, '邵武市', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350782000000, '武夷山市', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350783000000, '建瓯市', 3, 350700000000); -INSERT INTO "zz_area_code" VALUES (350800000000, '龙岩市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350801000000, '市辖区', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350802000000, '新罗区', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350803000000, '永定区', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350821000000, '长汀县', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350823000000, '上杭县', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350824000000, '武平县', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350825000000, '连城县', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350881000000, '漳平市', 3, 350800000000); -INSERT INTO "zz_area_code" VALUES (350900000000, '宁德市', 2, 350000000000); -INSERT INTO "zz_area_code" VALUES (350901000000, '市辖区', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350902000000, '蕉城区', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350921000000, '霞浦县', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350922000000, '古田县', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350923000000, '屏南县', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350924000000, '寿宁县', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350925000000, '周宁县', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350926000000, '柘荣县', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350981000000, '福安市', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (350982000000, '福鼎市', 3, 350900000000); -INSERT INTO "zz_area_code" VALUES (360000000000, '江西省', 1, null); -INSERT INTO "zz_area_code" VALUES (360100000000, '南昌市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360101000000, '市辖区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360102000000, '东湖区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360103000000, '西湖区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360104000000, '青云谱区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360105000000, '湾里区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360111000000, '青山湖区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360112000000, '新建区', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360121000000, '南昌县', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360123000000, '安义县', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360124000000, '进贤县', 3, 360100000000); -INSERT INTO "zz_area_code" VALUES (360200000000, '景德镇市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360201000000, '市辖区', 3, 360200000000); -INSERT INTO "zz_area_code" VALUES (360202000000, '昌江区', 3, 360200000000); -INSERT INTO "zz_area_code" VALUES (360203000000, '珠山区', 3, 360200000000); -INSERT INTO "zz_area_code" VALUES (360222000000, '浮梁县', 3, 360200000000); -INSERT INTO "zz_area_code" VALUES (360281000000, '乐平市', 3, 360200000000); -INSERT INTO "zz_area_code" VALUES (360300000000, '萍乡市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360301000000, '市辖区', 3, 360300000000); -INSERT INTO "zz_area_code" VALUES (360302000000, '安源区', 3, 360300000000); -INSERT INTO "zz_area_code" VALUES (360313000000, '湘东区', 3, 360300000000); -INSERT INTO "zz_area_code" VALUES (360321000000, '莲花县', 3, 360300000000); -INSERT INTO "zz_area_code" VALUES (360322000000, '上栗县', 3, 360300000000); -INSERT INTO "zz_area_code" VALUES (360323000000, '芦溪县', 3, 360300000000); -INSERT INTO "zz_area_code" VALUES (360400000000, '九江市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360401000000, '市辖区', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360402000000, '濂溪区', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360403000000, '浔阳区', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360404000000, '柴桑区', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360423000000, '武宁县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360424000000, '修水县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360425000000, '永修县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360426000000, '德安县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360428000000, '都昌县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360429000000, '湖口县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360430000000, '彭泽县', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360481000000, '瑞昌市', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360482000000, '共青城市', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360483000000, '庐山市', 3, 360400000000); -INSERT INTO "zz_area_code" VALUES (360500000000, '新余市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360501000000, '市辖区', 3, 360500000000); -INSERT INTO "zz_area_code" VALUES (360502000000, '渝水区', 3, 360500000000); -INSERT INTO "zz_area_code" VALUES (360521000000, '分宜县', 3, 360500000000); -INSERT INTO "zz_area_code" VALUES (360600000000, '鹰潭市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360601000000, '市辖区', 3, 360600000000); -INSERT INTO "zz_area_code" VALUES (360602000000, '月湖区', 3, 360600000000); -INSERT INTO "zz_area_code" VALUES (360603000000, '余江区', 3, 360600000000); -INSERT INTO "zz_area_code" VALUES (360681000000, '贵溪市', 3, 360600000000); -INSERT INTO "zz_area_code" VALUES (360700000000, '赣州市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360701000000, '市辖区', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360702000000, '章贡区', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360703000000, '南康区', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360704000000, '赣县区', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360722000000, '信丰县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360723000000, '大余县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360724000000, '上犹县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360725000000, '崇义县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360726000000, '安远县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360727000000, '龙南县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360728000000, '定南县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360729000000, '全南县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360730000000, '宁都县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360731000000, '于都县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360732000000, '兴国县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360733000000, '会昌县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360734000000, '寻乌县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360735000000, '石城县', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360781000000, '瑞金市', 3, 360700000000); -INSERT INTO "zz_area_code" VALUES (360800000000, '吉安市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360801000000, '市辖区', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360802000000, '吉州区', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360803000000, '青原区', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360821000000, '吉安县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360822000000, '吉水县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360823000000, '峡江县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360824000000, '新干县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360825000000, '永丰县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360826000000, '泰和县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360827000000, '遂川县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360828000000, '万安县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360829000000, '安福县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360830000000, '永新县', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360881000000, '井冈山市', 3, 360800000000); -INSERT INTO "zz_area_code" VALUES (360900000000, '宜春市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (360901000000, '市辖区', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360902000000, '袁州区', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360921000000, '奉新县', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360922000000, '万载县', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360923000000, '上高县', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360924000000, '宜丰县', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360925000000, '靖安县', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360926000000, '铜鼓县', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360981000000, '丰城市', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360982000000, '樟树市', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (360983000000, '高安市', 3, 360900000000); -INSERT INTO "zz_area_code" VALUES (361000000000, '抚州市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (361001000000, '市辖区', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361002000000, '临川区', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361003000000, '东乡区', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361021000000, '南城县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361022000000, '黎川县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361023000000, '南丰县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361024000000, '崇仁县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361025000000, '乐安县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361026000000, '宜黄县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361027000000, '金溪县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361028000000, '资溪县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361030000000, '广昌县', 3, 361000000000); -INSERT INTO "zz_area_code" VALUES (361100000000, '上饶市', 2, 360000000000); -INSERT INTO "zz_area_code" VALUES (361101000000, '市辖区', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361102000000, '信州区', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361103000000, '广丰区', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361121000000, '上饶县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361123000000, '玉山县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361124000000, '铅山县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361125000000, '横峰县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361126000000, '弋阳县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361127000000, '余干县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361128000000, '鄱阳县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361129000000, '万年县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361130000000, '婺源县', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (361181000000, '德兴市', 3, 361100000000); -INSERT INTO "zz_area_code" VALUES (370000000000, '山东省', 1, null); -INSERT INTO "zz_area_code" VALUES (370100000000, '济南市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370101000000, '市辖区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370102000000, '历下区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370103000000, '市中区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370104000000, '槐荫区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370105000000, '天桥区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370112000000, '历城区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370113000000, '长清区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370114000000, '章丘区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370115000000, '济阳区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370124000000, '平阴县', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370126000000, '商河县', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370171000000, '济南高新技术产业开发区', 3, 370100000000); -INSERT INTO "zz_area_code" VALUES (370200000000, '青岛市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370201000000, '市辖区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370202000000, '市南区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370203000000, '市北区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370211000000, '黄岛区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370212000000, '崂山区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370213000000, '李沧区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370214000000, '城阳区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370215000000, '即墨区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370271000000, '青岛高新技术产业开发区', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370281000000, '胶州市', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370283000000, '平度市', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370285000000, '莱西市', 3, 370200000000); -INSERT INTO "zz_area_code" VALUES (370300000000, '淄博市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370301000000, '市辖区', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370302000000, '淄川区', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370303000000, '张店区', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370304000000, '博山区', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370305000000, '临淄区', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370306000000, '周村区', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370321000000, '桓台县', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370322000000, '高青县', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370323000000, '沂源县', 3, 370300000000); -INSERT INTO "zz_area_code" VALUES (370400000000, '枣庄市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370401000000, '市辖区', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370402000000, '市中区', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370403000000, '薛城区', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370404000000, '峄城区', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370405000000, '台儿庄区', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370406000000, '山亭区', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370481000000, '滕州市', 3, 370400000000); -INSERT INTO "zz_area_code" VALUES (370500000000, '东营市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370501000000, '市辖区', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370502000000, '东营区', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370503000000, '河口区', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370505000000, '垦利区', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370522000000, '利津县', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370523000000, '广饶县', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370571000000, '东营经济技术开发区', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370572000000, '东营港经济开发区', 3, 370500000000); -INSERT INTO "zz_area_code" VALUES (370600000000, '烟台市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370601000000, '市辖区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370602000000, '芝罘区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370611000000, '福山区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370612000000, '牟平区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370613000000, '莱山区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370634000000, '长岛县', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370671000000, '烟台高新技术产业开发区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370672000000, '烟台经济技术开发区', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370681000000, '龙口市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370682000000, '莱阳市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370683000000, '莱州市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370684000000, '蓬莱市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370685000000, '招远市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370686000000, '栖霞市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370687000000, '海阳市', 3, 370600000000); -INSERT INTO "zz_area_code" VALUES (370700000000, '潍坊市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370701000000, '市辖区', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370702000000, '潍城区', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370703000000, '寒亭区', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370704000000, '坊子区', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370705000000, '奎文区', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370724000000, '临朐县', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370725000000, '昌乐县', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370772000000, '潍坊滨海经济技术开发区', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370781000000, '青州市', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370782000000, '诸城市', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370783000000, '寿光市', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370784000000, '安丘市', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370785000000, '高密市', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370786000000, '昌邑市', 3, 370700000000); -INSERT INTO "zz_area_code" VALUES (370800000000, '济宁市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370801000000, '市辖区', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370811000000, '任城区', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370812000000, '兖州区', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370826000000, '微山县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370827000000, '鱼台县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370828000000, '金乡县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370829000000, '嘉祥县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370830000000, '汶上县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370831000000, '泗水县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370832000000, '梁山县', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370871000000, '济宁高新技术产业开发区', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370881000000, '曲阜市', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370883000000, '邹城市', 3, 370800000000); -INSERT INTO "zz_area_code" VALUES (370900000000, '泰安市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (370901000000, '市辖区', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (370902000000, '泰山区', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (370911000000, '岱岳区', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (370921000000, '宁阳县', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (370923000000, '东平县', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (370982000000, '新泰市', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (370983000000, '肥城市', 3, 370900000000); -INSERT INTO "zz_area_code" VALUES (371000000000, '威海市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371001000000, '市辖区', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371002000000, '环翠区', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371003000000, '文登区', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371071000000, '威海火炬高技术产业开发区', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371072000000, '威海经济技术开发区', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371073000000, '威海临港经济技术开发区', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371082000000, '荣成市', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371083000000, '乳山市', 3, 371000000000); -INSERT INTO "zz_area_code" VALUES (371100000000, '日照市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371101000000, '市辖区', 3, 371100000000); -INSERT INTO "zz_area_code" VALUES (371102000000, '东港区', 3, 371100000000); -INSERT INTO "zz_area_code" VALUES (371103000000, '岚山区', 3, 371100000000); -INSERT INTO "zz_area_code" VALUES (371121000000, '五莲县', 3, 371100000000); -INSERT INTO "zz_area_code" VALUES (371122000000, '莒县', 3, 371100000000); -INSERT INTO "zz_area_code" VALUES (371171000000, '日照经济技术开发区', 3, 371100000000); -INSERT INTO "zz_area_code" VALUES (371200000000, '莱芜市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371201000000, '市辖区', 3, 371200000000); -INSERT INTO "zz_area_code" VALUES (371202000000, '莱城区', 3, 371200000000); -INSERT INTO "zz_area_code" VALUES (371203000000, '钢城区', 3, 371200000000); -INSERT INTO "zz_area_code" VALUES (371300000000, '临沂市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371301000000, '市辖区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371302000000, '兰山区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371311000000, '罗庄区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371312000000, '河东区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371321000000, '沂南县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371322000000, '郯城县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371323000000, '沂水县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371324000000, '兰陵县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371325000000, '费县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371326000000, '平邑县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371327000000, '莒南县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371328000000, '蒙阴县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371329000000, '临沭县', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371371000000, '临沂高新技术产业开发区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371372000000, '临沂经济技术开发区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371373000000, '临沂临港经济开发区', 3, 371300000000); -INSERT INTO "zz_area_code" VALUES (371400000000, '德州市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371401000000, '市辖区', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371402000000, '德城区', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371403000000, '陵城区', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371422000000, '宁津县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371423000000, '庆云县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371424000000, '临邑县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371425000000, '齐河县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371426000000, '平原县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371427000000, '夏津县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371428000000, '武城县', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371471000000, '德州经济技术开发区', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371472000000, '德州运河经济开发区', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371481000000, '乐陵市', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371482000000, '禹城市', 3, 371400000000); -INSERT INTO "zz_area_code" VALUES (371500000000, '聊城市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371501000000, '市辖区', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371502000000, '东昌府区', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371521000000, '阳谷县', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371522000000, '莘县', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371523000000, '茌平县', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371524000000, '东阿县', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371525000000, '冠县', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371526000000, '高唐县', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371581000000, '临清市', 3, 371500000000); -INSERT INTO "zz_area_code" VALUES (371600000000, '滨州市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371601000000, '市辖区', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371602000000, '滨城区', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371603000000, '沾化区', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371621000000, '惠民县', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371622000000, '阳信县', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371623000000, '无棣县', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371625000000, '博兴县', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371681000000, '邹平市', 3, 371600000000); -INSERT INTO "zz_area_code" VALUES (371700000000, '菏泽市', 2, 370000000000); -INSERT INTO "zz_area_code" VALUES (371701000000, '市辖区', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371702000000, '牡丹区', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371703000000, '定陶区', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371721000000, '曹县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371722000000, '单县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371723000000, '成武县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371724000000, '巨野县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371725000000, '郓城县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371726000000, '鄄城县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371728000000, '东明县', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371771000000, '菏泽经济技术开发区', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (371772000000, '菏泽高新技术开发区', 3, 371700000000); -INSERT INTO "zz_area_code" VALUES (410000000000, '河南省', 1, null); -INSERT INTO "zz_area_code" VALUES (410100000000, '郑州市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410101000000, '市辖区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410102000000, '中原区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410103000000, '二七区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410104000000, '管城回族区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410105000000, '金水区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410106000000, '上街区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410108000000, '惠济区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410122000000, '中牟县', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410171000000, '郑州经济技术开发区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410172000000, '郑州高新技术产业开发区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410173000000, '郑州航空港经济综合实验区', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410181000000, '巩义市', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410182000000, '荥阳市', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410183000000, '新密市', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410184000000, '新郑市', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410185000000, '登封市', 3, 410100000000); -INSERT INTO "zz_area_code" VALUES (410200000000, '开封市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410201000000, '市辖区', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410202000000, '龙亭区', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410203000000, '顺河回族区', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410204000000, '鼓楼区', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410205000000, '禹王台区', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410212000000, '祥符区', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410221000000, '杞县', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410222000000, '通许县', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410223000000, '尉氏县', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410225000000, '兰考县', 3, 410200000000); -INSERT INTO "zz_area_code" VALUES (410300000000, '洛阳市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410301000000, '市辖区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410302000000, '老城区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410303000000, '西工区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410304000000, '瀍河回族区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410305000000, '涧西区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410306000000, '吉利区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410311000000, '洛龙区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410322000000, '孟津县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410323000000, '新安县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410324000000, '栾川县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410325000000, '嵩县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410326000000, '汝阳县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410327000000, '宜阳县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410328000000, '洛宁县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410329000000, '伊川县', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410371000000, '洛阳高新技术产业开发区', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410381000000, '偃师市', 3, 410300000000); -INSERT INTO "zz_area_code" VALUES (410400000000, '平顶山市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410401000000, '市辖区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410402000000, '新华区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410403000000, '卫东区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410404000000, '石龙区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410411000000, '湛河区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410421000000, '宝丰县', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410422000000, '叶县', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410423000000, '鲁山县', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410425000000, '郏县', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410471000000, '平顶山高新技术产业开发区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410472000000, '平顶山市新城区', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410481000000, '舞钢市', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410482000000, '汝州市', 3, 410400000000); -INSERT INTO "zz_area_code" VALUES (410500000000, '安阳市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410501000000, '市辖区', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410502000000, '文峰区', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410503000000, '北关区', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410505000000, '殷都区', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410506000000, '龙安区', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410522000000, '安阳县', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410523000000, '汤阴县', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410526000000, '滑县', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410527000000, '内黄县', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410571000000, '安阳高新技术产业开发区', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410581000000, '林州市', 3, 410500000000); -INSERT INTO "zz_area_code" VALUES (410600000000, '鹤壁市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410601000000, '市辖区', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410602000000, '鹤山区', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410603000000, '山城区', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410611000000, '淇滨区', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410621000000, '浚县', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410622000000, '淇县', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410671000000, '鹤壁经济技术开发区', 3, 410600000000); -INSERT INTO "zz_area_code" VALUES (410700000000, '新乡市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410701000000, '市辖区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410702000000, '红旗区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410703000000, '卫滨区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410704000000, '凤泉区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410711000000, '牧野区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410721000000, '新乡县', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410724000000, '获嘉县', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410725000000, '原阳县', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410726000000, '延津县', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410727000000, '封丘县', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410728000000, '长垣县', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410771000000, '新乡高新技术产业开发区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410772000000, '新乡经济技术开发区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410773000000, '新乡市平原城乡一体化示范区', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410781000000, '卫辉市', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410782000000, '辉县市', 3, 410700000000); -INSERT INTO "zz_area_code" VALUES (410800000000, '焦作市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410801000000, '市辖区', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410802000000, '解放区', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410803000000, '中站区', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410804000000, '马村区', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410811000000, '山阳区', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410821000000, '修武县', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410822000000, '博爱县', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410823000000, '武陟县', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410825000000, '温县', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410871000000, '焦作城乡一体化示范区', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410882000000, '沁阳市', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410883000000, '孟州市', 3, 410800000000); -INSERT INTO "zz_area_code" VALUES (410900000000, '濮阳市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (410901000000, '市辖区', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410902000000, '华龙区', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410922000000, '清丰县', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410923000000, '南乐县', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410926000000, '范县', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410927000000, '台前县', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410928000000, '濮阳县', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410971000000, '河南濮阳工业园区', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (410972000000, '濮阳经济技术开发区', 3, 410900000000); -INSERT INTO "zz_area_code" VALUES (411000000000, '许昌市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411001000000, '市辖区', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411002000000, '魏都区', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411003000000, '建安区', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411024000000, '鄢陵县', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411025000000, '襄城县', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411071000000, '许昌经济技术开发区', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411081000000, '禹州市', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411082000000, '长葛市', 3, 411000000000); -INSERT INTO "zz_area_code" VALUES (411100000000, '漯河市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411101000000, '市辖区', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411102000000, '源汇区', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411103000000, '郾城区', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411104000000, '召陵区', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411121000000, '舞阳县', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411122000000, '临颍县', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411171000000, '漯河经济技术开发区', 3, 411100000000); -INSERT INTO "zz_area_code" VALUES (411200000000, '三门峡市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411201000000, '市辖区', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411202000000, '湖滨区', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411203000000, '陕州区', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411221000000, '渑池县', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411224000000, '卢氏县', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411271000000, '河南三门峡经济开发区', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411281000000, '义马市', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411282000000, '灵宝市', 3, 411200000000); -INSERT INTO "zz_area_code" VALUES (411300000000, '南阳市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411301000000, '市辖区', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411302000000, '宛城区', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411303000000, '卧龙区', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411321000000, '南召县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411322000000, '方城县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411323000000, '西峡县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411324000000, '镇平县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411325000000, '内乡县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411326000000, '淅川县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411327000000, '社旗县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411328000000, '唐河县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411329000000, '新野县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411330000000, '桐柏县', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411371000000, '南阳高新技术产业开发区', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411372000000, '南阳市城乡一体化示范区', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411381000000, '邓州市', 3, 411300000000); -INSERT INTO "zz_area_code" VALUES (411400000000, '商丘市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411401000000, '市辖区', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411402000000, '梁园区', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411403000000, '睢阳区', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411421000000, '民权县', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411422000000, '睢县', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411423000000, '宁陵县', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411424000000, '柘城县', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411425000000, '虞城县', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411426000000, '夏邑县', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411471000000, '豫东综合物流产业聚集区', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411472000000, '河南商丘经济开发区', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411481000000, '永城市', 3, 411400000000); -INSERT INTO "zz_area_code" VALUES (411500000000, '信阳市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411501000000, '市辖区', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411502000000, '浉河区', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411503000000, '平桥区', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411521000000, '罗山县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411522000000, '光山县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411523000000, '新县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411524000000, '商城县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411525000000, '固始县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411526000000, '潢川县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411527000000, '淮滨县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411528000000, '息县', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411571000000, '信阳高新技术产业开发区', 3, 411500000000); -INSERT INTO "zz_area_code" VALUES (411600000000, '周口市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411601000000, '市辖区', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411602000000, '川汇区', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411621000000, '扶沟县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411622000000, '西华县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411623000000, '商水县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411624000000, '沈丘县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411625000000, '郸城县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411626000000, '淮阳县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411627000000, '太康县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411628000000, '鹿邑县', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411671000000, '河南周口经济开发区', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411681000000, '项城市', 3, 411600000000); -INSERT INTO "zz_area_code" VALUES (411700000000, '驻马店市', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (411701000000, '市辖区', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411702000000, '驿城区', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411721000000, '西平县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411722000000, '上蔡县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411723000000, '平舆县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411724000000, '正阳县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411725000000, '确山县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411726000000, '泌阳县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411727000000, '汝南县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411728000000, '遂平县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411729000000, '新蔡县', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (411771000000, '河南驻马店经济开发区', 3, 411700000000); -INSERT INTO "zz_area_code" VALUES (419000000000, '省直辖县级行政区划', 2, 410000000000); -INSERT INTO "zz_area_code" VALUES (419001000000, '济源市', 3, 419000000000); -INSERT INTO "zz_area_code" VALUES (420000000000, '湖北省', 1, null); -INSERT INTO "zz_area_code" VALUES (420100000000, '武汉市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420101000000, '市辖区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420102000000, '江岸区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420103000000, '江汉区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420104000000, '硚口区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420105000000, '汉阳区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420106000000, '武昌区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420107000000, '青山区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420111000000, '洪山区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420112000000, '东西湖区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420113000000, '汉南区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420114000000, '蔡甸区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420115000000, '江夏区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420116000000, '黄陂区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420117000000, '新洲区', 3, 420100000000); -INSERT INTO "zz_area_code" VALUES (420200000000, '黄石市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420201000000, '市辖区', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420202000000, '黄石港区', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420203000000, '西塞山区', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420204000000, '下陆区', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420205000000, '铁山区', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420222000000, '阳新县', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420281000000, '大冶市', 3, 420200000000); -INSERT INTO "zz_area_code" VALUES (420300000000, '十堰市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420301000000, '市辖区', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420302000000, '茅箭区', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420303000000, '张湾区', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420304000000, '郧阳区', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420322000000, '郧西县', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420323000000, '竹山县', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420324000000, '竹溪县', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420325000000, '房县', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420381000000, '丹江口市', 3, 420300000000); -INSERT INTO "zz_area_code" VALUES (420500000000, '宜昌市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420501000000, '市辖区', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420502000000, '西陵区', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420503000000, '伍家岗区', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420504000000, '点军区', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420505000000, '猇亭区', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420506000000, '夷陵区', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420525000000, '远安县', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420526000000, '兴山县', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420527000000, '秭归县', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420528000000, '长阳土家族自治县', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420529000000, '五峰土家族自治县', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420581000000, '宜都市', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420582000000, '当阳市', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420583000000, '枝江市', 3, 420500000000); -INSERT INTO "zz_area_code" VALUES (420600000000, '襄阳市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420601000000, '市辖区', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420602000000, '襄城区', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420606000000, '樊城区', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420607000000, '襄州区', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420624000000, '南漳县', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420625000000, '谷城县', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420626000000, '保康县', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420682000000, '老河口市', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420683000000, '枣阳市', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420684000000, '宜城市', 3, 420600000000); -INSERT INTO "zz_area_code" VALUES (420700000000, '鄂州市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420701000000, '市辖区', 3, 420700000000); -INSERT INTO "zz_area_code" VALUES (420702000000, '梁子湖区', 3, 420700000000); -INSERT INTO "zz_area_code" VALUES (420703000000, '华容区', 3, 420700000000); -INSERT INTO "zz_area_code" VALUES (420704000000, '鄂城区', 3, 420700000000); -INSERT INTO "zz_area_code" VALUES (420800000000, '荆门市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420801000000, '市辖区', 3, 420800000000); -INSERT INTO "zz_area_code" VALUES (420802000000, '东宝区', 3, 420800000000); -INSERT INTO "zz_area_code" VALUES (420804000000, '掇刀区', 3, 420800000000); -INSERT INTO "zz_area_code" VALUES (420822000000, '沙洋县', 3, 420800000000); -INSERT INTO "zz_area_code" VALUES (420881000000, '钟祥市', 3, 420800000000); -INSERT INTO "zz_area_code" VALUES (420882000000, '京山市', 3, 420800000000); -INSERT INTO "zz_area_code" VALUES (420900000000, '孝感市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (420901000000, '市辖区', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420902000000, '孝南区', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420921000000, '孝昌县', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420922000000, '大悟县', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420923000000, '云梦县', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420981000000, '应城市', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420982000000, '安陆市', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (420984000000, '汉川市', 3, 420900000000); -INSERT INTO "zz_area_code" VALUES (421000000000, '荆州市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (421001000000, '市辖区', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421002000000, '沙市区', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421003000000, '荆州区', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421022000000, '公安县', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421023000000, '监利县', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421024000000, '江陵县', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421071000000, '荆州经济技术开发区', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421081000000, '石首市', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421083000000, '洪湖市', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421087000000, '松滋市', 3, 421000000000); -INSERT INTO "zz_area_code" VALUES (421100000000, '黄冈市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (421101000000, '市辖区', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421102000000, '黄州区', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421121000000, '团风县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421122000000, '红安县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421123000000, '罗田县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421124000000, '英山县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421125000000, '浠水县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421126000000, '蕲春县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421127000000, '黄梅县', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421171000000, '龙感湖管理区', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421181000000, '麻城市', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421182000000, '武穴市', 3, 421100000000); -INSERT INTO "zz_area_code" VALUES (421200000000, '咸宁市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (421201000000, '市辖区', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421202000000, '咸安区', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421221000000, '嘉鱼县', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421222000000, '通城县', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421223000000, '崇阳县', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421224000000, '通山县', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421281000000, '赤壁市', 3, 421200000000); -INSERT INTO "zz_area_code" VALUES (421300000000, '随州市', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (421301000000, '市辖区', 3, 421300000000); -INSERT INTO "zz_area_code" VALUES (421303000000, '曾都区', 3, 421300000000); -INSERT INTO "zz_area_code" VALUES (421321000000, '随县', 3, 421300000000); -INSERT INTO "zz_area_code" VALUES (421381000000, '广水市', 3, 421300000000); -INSERT INTO "zz_area_code" VALUES (422800000000, '恩施土家族苗族自治州', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (422801000000, '恩施市', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422802000000, '利川市', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422822000000, '建始县', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422823000000, '巴东县', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422825000000, '宣恩县', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422826000000, '咸丰县', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422827000000, '来凤县', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (422828000000, '鹤峰县', 3, 422800000000); -INSERT INTO "zz_area_code" VALUES (429000000000, '省直辖县级行政区划', 2, 420000000000); -INSERT INTO "zz_area_code" VALUES (429004000000, '仙桃市', 3, 429000000000); -INSERT INTO "zz_area_code" VALUES (429005000000, '潜江市', 3, 429000000000); -INSERT INTO "zz_area_code" VALUES (429006000000, '天门市', 3, 429000000000); -INSERT INTO "zz_area_code" VALUES (429021000000, '神农架林区', 3, 429000000000); -INSERT INTO "zz_area_code" VALUES (430000000000, '湖南省', 1, null); -INSERT INTO "zz_area_code" VALUES (430100000000, '长沙市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430101000000, '市辖区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430102000000, '芙蓉区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430103000000, '天心区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430104000000, '岳麓区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430105000000, '开福区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430111000000, '雨花区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430112000000, '望城区', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430121000000, '长沙县', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430181000000, '浏阳市', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430182000000, '宁乡市', 3, 430100000000); -INSERT INTO "zz_area_code" VALUES (430200000000, '株洲市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430201000000, '市辖区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430202000000, '荷塘区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430203000000, '芦淞区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430204000000, '石峰区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430211000000, '天元区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430212000000, '渌口区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430223000000, '攸县', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430224000000, '茶陵县', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430225000000, '炎陵县', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430271000000, '云龙示范区', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430281000000, '醴陵市', 3, 430200000000); -INSERT INTO "zz_area_code" VALUES (430300000000, '湘潭市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430301000000, '市辖区', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430302000000, '雨湖区', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430304000000, '岳塘区', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430321000000, '湘潭县', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430371000000, '湖南湘潭高新技术产业园区', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430372000000, '湘潭昭山示范区', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430373000000, '湘潭九华示范区', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430381000000, '湘乡市', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430382000000, '韶山市', 3, 430300000000); -INSERT INTO "zz_area_code" VALUES (430400000000, '衡阳市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430401000000, '市辖区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430405000000, '珠晖区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430406000000, '雁峰区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430407000000, '石鼓区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430408000000, '蒸湘区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430412000000, '南岳区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430421000000, '衡阳县', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430422000000, '衡南县', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430423000000, '衡山县', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430424000000, '衡东县', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430426000000, '祁东县', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430471000000, '衡阳综合保税区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430472000000, '湖南衡阳高新技术产业园区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430473000000, '湖南衡阳松木经济开发区', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430481000000, '耒阳市', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430482000000, '常宁市', 3, 430400000000); -INSERT INTO "zz_area_code" VALUES (430500000000, '邵阳市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430501000000, '市辖区', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430502000000, '双清区', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430503000000, '大祥区', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430511000000, '北塔区', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430521000000, '邵东县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430522000000, '新邵县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430523000000, '邵阳县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430524000000, '隆回县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430525000000, '洞口县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430527000000, '绥宁县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430528000000, '新宁县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430529000000, '城步苗族自治县', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430581000000, '武冈市', 3, 430500000000); -INSERT INTO "zz_area_code" VALUES (430600000000, '岳阳市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430601000000, '市辖区', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430602000000, '岳阳楼区', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430603000000, '云溪区', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430611000000, '君山区', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430621000000, '岳阳县', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430623000000, '华容县', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430624000000, '湘阴县', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430626000000, '平江县', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430671000000, '岳阳市屈原管理区', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430681000000, '汨罗市', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430682000000, '临湘市', 3, 430600000000); -INSERT INTO "zz_area_code" VALUES (430700000000, '常德市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430701000000, '市辖区', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430702000000, '武陵区', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430703000000, '鼎城区', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430721000000, '安乡县', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430722000000, '汉寿县', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430723000000, '澧县', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430724000000, '临澧县', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430725000000, '桃源县', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430726000000, '石门县', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430771000000, '常德市西洞庭管理区', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430781000000, '津市市', 3, 430700000000); -INSERT INTO "zz_area_code" VALUES (430800000000, '张家界市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430801000000, '市辖区', 3, 430800000000); -INSERT INTO "zz_area_code" VALUES (430802000000, '永定区', 3, 430800000000); -INSERT INTO "zz_area_code" VALUES (430811000000, '武陵源区', 3, 430800000000); -INSERT INTO "zz_area_code" VALUES (430821000000, '慈利县', 3, 430800000000); -INSERT INTO "zz_area_code" VALUES (430822000000, '桑植县', 3, 430800000000); -INSERT INTO "zz_area_code" VALUES (430900000000, '益阳市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (430901000000, '市辖区', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430902000000, '资阳区', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430903000000, '赫山区', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430921000000, '南县', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430922000000, '桃江县', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430923000000, '安化县', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430971000000, '益阳市大通湖管理区', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430972000000, '湖南益阳高新技术产业园区', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (430981000000, '沅江市', 3, 430900000000); -INSERT INTO "zz_area_code" VALUES (431000000000, '郴州市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (431001000000, '市辖区', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431002000000, '北湖区', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431003000000, '苏仙区', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431021000000, '桂阳县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431022000000, '宜章县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431023000000, '永兴县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431024000000, '嘉禾县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431025000000, '临武县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431026000000, '汝城县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431027000000, '桂东县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431028000000, '安仁县', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431081000000, '资兴市', 3, 431000000000); -INSERT INTO "zz_area_code" VALUES (431100000000, '永州市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (431101000000, '市辖区', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431102000000, '零陵区', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431103000000, '冷水滩区', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431121000000, '祁阳县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431122000000, '东安县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431123000000, '双牌县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431124000000, '道县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431125000000, '江永县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431126000000, '宁远县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431127000000, '蓝山县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431128000000, '新田县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431129000000, '江华瑶族自治县', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431171000000, '永州经济技术开发区', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431172000000, '永州市金洞管理区', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431173000000, '永州市回龙圩管理区', 3, 431100000000); -INSERT INTO "zz_area_code" VALUES (431200000000, '怀化市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (431201000000, '市辖区', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431202000000, '鹤城区', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431221000000, '中方县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431222000000, '沅陵县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431223000000, '辰溪县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431224000000, '溆浦县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431225000000, '会同县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431226000000, '麻阳苗族自治县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431227000000, '新晃侗族自治县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431228000000, '芷江侗族自治县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431229000000, '靖州苗族侗族自治县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431230000000, '通道侗族自治县', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431271000000, '怀化市洪江管理区', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431281000000, '洪江市', 3, 431200000000); -INSERT INTO "zz_area_code" VALUES (431300000000, '娄底市', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (431301000000, '市辖区', 3, 431300000000); -INSERT INTO "zz_area_code" VALUES (431302000000, '娄星区', 3, 431300000000); -INSERT INTO "zz_area_code" VALUES (431321000000, '双峰县', 3, 431300000000); -INSERT INTO "zz_area_code" VALUES (431322000000, '新化县', 3, 431300000000); -INSERT INTO "zz_area_code" VALUES (431381000000, '冷水江市', 3, 431300000000); -INSERT INTO "zz_area_code" VALUES (431382000000, '涟源市', 3, 431300000000); -INSERT INTO "zz_area_code" VALUES (433100000000, '湘西土家族苗族自治州', 2, 430000000000); -INSERT INTO "zz_area_code" VALUES (433101000000, '吉首市', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433122000000, '泸溪县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433123000000, '凤凰县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433124000000, '花垣县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433125000000, '保靖县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433126000000, '古丈县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433127000000, '永顺县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433130000000, '龙山县', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433172000000, '湖南吉首经济开发区', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (433173000000, '湖南永顺经济开发区', 3, 433100000000); -INSERT INTO "zz_area_code" VALUES (440000000000, '广东省', 1, null); -INSERT INTO "zz_area_code" VALUES (440100000000, '广州市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440101000000, '市辖区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440103000000, '荔湾区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440104000000, '越秀区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440105000000, '海珠区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440106000000, '天河区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440111000000, '白云区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440112000000, '黄埔区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440113000000, '番禺区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440114000000, '花都区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440115000000, '南沙区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440117000000, '从化区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440118000000, '增城区', 3, 440100000000); -INSERT INTO "zz_area_code" VALUES (440200000000, '韶关市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440201000000, '市辖区', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440203000000, '武江区', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440204000000, '浈江区', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440205000000, '曲江区', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440222000000, '始兴县', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440224000000, '仁化县', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440229000000, '翁源县', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440232000000, '乳源瑶族自治县', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440233000000, '新丰县', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440281000000, '乐昌市', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440282000000, '南雄市', 3, 440200000000); -INSERT INTO "zz_area_code" VALUES (440300000000, '深圳市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440301000000, '市辖区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440303000000, '罗湖区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440304000000, '福田区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440305000000, '南山区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440306000000, '宝安区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440307000000, '龙岗区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440308000000, '盐田区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440309000000, '龙华区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440310000000, '坪山区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440311000000, '光明区', 3, 440300000000); -INSERT INTO "zz_area_code" VALUES (440400000000, '珠海市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440401000000, '市辖区', 3, 440400000000); -INSERT INTO "zz_area_code" VALUES (440402000000, '香洲区', 3, 440400000000); -INSERT INTO "zz_area_code" VALUES (440403000000, '斗门区', 3, 440400000000); -INSERT INTO "zz_area_code" VALUES (440404000000, '金湾区', 3, 440400000000); -INSERT INTO "zz_area_code" VALUES (440500000000, '汕头市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440501000000, '市辖区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440507000000, '龙湖区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440511000000, '金平区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440512000000, '濠江区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440513000000, '潮阳区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440514000000, '潮南区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440515000000, '澄海区', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440523000000, '南澳县', 3, 440500000000); -INSERT INTO "zz_area_code" VALUES (440600000000, '佛山市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440601000000, '市辖区', 3, 440600000000); -INSERT INTO "zz_area_code" VALUES (440604000000, '禅城区', 3, 440600000000); -INSERT INTO "zz_area_code" VALUES (440605000000, '南海区', 3, 440600000000); -INSERT INTO "zz_area_code" VALUES (440606000000, '顺德区', 3, 440600000000); -INSERT INTO "zz_area_code" VALUES (440607000000, '三水区', 3, 440600000000); -INSERT INTO "zz_area_code" VALUES (440608000000, '高明区', 3, 440600000000); -INSERT INTO "zz_area_code" VALUES (440700000000, '江门市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440701000000, '市辖区', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440703000000, '蓬江区', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440704000000, '江海区', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440705000000, '新会区', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440781000000, '台山市', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440783000000, '开平市', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440784000000, '鹤山市', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440785000000, '恩平市', 3, 440700000000); -INSERT INTO "zz_area_code" VALUES (440800000000, '湛江市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440801000000, '市辖区', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440802000000, '赤坎区', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440803000000, '霞山区', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440804000000, '坡头区', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440811000000, '麻章区', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440823000000, '遂溪县', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440825000000, '徐闻县', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440881000000, '廉江市', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440882000000, '雷州市', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440883000000, '吴川市', 3, 440800000000); -INSERT INTO "zz_area_code" VALUES (440900000000, '茂名市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (440901000000, '市辖区', 3, 440900000000); -INSERT INTO "zz_area_code" VALUES (440902000000, '茂南区', 3, 440900000000); -INSERT INTO "zz_area_code" VALUES (440904000000, '电白区', 3, 440900000000); -INSERT INTO "zz_area_code" VALUES (440981000000, '高州市', 3, 440900000000); -INSERT INTO "zz_area_code" VALUES (440982000000, '化州市', 3, 440900000000); -INSERT INTO "zz_area_code" VALUES (440983000000, '信宜市', 3, 440900000000); -INSERT INTO "zz_area_code" VALUES (441200000000, '肇庆市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441201000000, '市辖区', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441202000000, '端州区', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441203000000, '鼎湖区', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441204000000, '高要区', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441223000000, '广宁县', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441224000000, '怀集县', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441225000000, '封开县', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441226000000, '德庆县', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441284000000, '四会市', 3, 441200000000); -INSERT INTO "zz_area_code" VALUES (441300000000, '惠州市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441301000000, '市辖区', 3, 441300000000); -INSERT INTO "zz_area_code" VALUES (441302000000, '惠城区', 3, 441300000000); -INSERT INTO "zz_area_code" VALUES (441303000000, '惠阳区', 3, 441300000000); -INSERT INTO "zz_area_code" VALUES (441322000000, '博罗县', 3, 441300000000); -INSERT INTO "zz_area_code" VALUES (441323000000, '惠东县', 3, 441300000000); -INSERT INTO "zz_area_code" VALUES (441324000000, '龙门县', 3, 441300000000); -INSERT INTO "zz_area_code" VALUES (441400000000, '梅州市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441401000000, '市辖区', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441402000000, '梅江区', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441403000000, '梅县区', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441422000000, '大埔县', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441423000000, '丰顺县', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441424000000, '五华县', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441426000000, '平远县', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441427000000, '蕉岭县', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441481000000, '兴宁市', 3, 441400000000); -INSERT INTO "zz_area_code" VALUES (441500000000, '汕尾市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441501000000, '市辖区', 3, 441500000000); -INSERT INTO "zz_area_code" VALUES (441502000000, '城区', 3, 441500000000); -INSERT INTO "zz_area_code" VALUES (441521000000, '海丰县', 3, 441500000000); -INSERT INTO "zz_area_code" VALUES (441523000000, '陆河县', 3, 441500000000); -INSERT INTO "zz_area_code" VALUES (441581000000, '陆丰市', 3, 441500000000); -INSERT INTO "zz_area_code" VALUES (441600000000, '河源市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441601000000, '市辖区', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441602000000, '源城区', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441621000000, '紫金县', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441622000000, '龙川县', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441623000000, '连平县', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441624000000, '和平县', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441625000000, '东源县', 3, 441600000000); -INSERT INTO "zz_area_code" VALUES (441700000000, '阳江市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441701000000, '市辖区', 3, 441700000000); -INSERT INTO "zz_area_code" VALUES (441702000000, '江城区', 3, 441700000000); -INSERT INTO "zz_area_code" VALUES (441704000000, '阳东区', 3, 441700000000); -INSERT INTO "zz_area_code" VALUES (441721000000, '阳西县', 3, 441700000000); -INSERT INTO "zz_area_code" VALUES (441781000000, '阳春市', 3, 441700000000); -INSERT INTO "zz_area_code" VALUES (441800000000, '清远市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (441801000000, '市辖区', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441802000000, '清城区', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441803000000, '清新区', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441821000000, '佛冈县', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441823000000, '阳山县', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441825000000, '连山壮族瑶族自治县', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441826000000, '连南瑶族自治县', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441881000000, '英德市', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441882000000, '连州市', 3, 441800000000); -INSERT INTO "zz_area_code" VALUES (441900000000, '东莞市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (442000000000, '中山市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (445100000000, '潮州市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (445101000000, '市辖区', 3, 445100000000); -INSERT INTO "zz_area_code" VALUES (445102000000, '湘桥区', 3, 445100000000); -INSERT INTO "zz_area_code" VALUES (445103000000, '潮安区', 3, 445100000000); -INSERT INTO "zz_area_code" VALUES (445122000000, '饶平县', 3, 445100000000); -INSERT INTO "zz_area_code" VALUES (445200000000, '揭阳市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (445201000000, '市辖区', 3, 445200000000); -INSERT INTO "zz_area_code" VALUES (445202000000, '榕城区', 3, 445200000000); -INSERT INTO "zz_area_code" VALUES (445203000000, '揭东区', 3, 445200000000); -INSERT INTO "zz_area_code" VALUES (445222000000, '揭西县', 3, 445200000000); -INSERT INTO "zz_area_code" VALUES (445224000000, '惠来县', 3, 445200000000); -INSERT INTO "zz_area_code" VALUES (445281000000, '普宁市', 3, 445200000000); -INSERT INTO "zz_area_code" VALUES (445300000000, '云浮市', 2, 440000000000); -INSERT INTO "zz_area_code" VALUES (445301000000, '市辖区', 3, 445300000000); -INSERT INTO "zz_area_code" VALUES (445302000000, '云城区', 3, 445300000000); -INSERT INTO "zz_area_code" VALUES (445303000000, '云安区', 3, 445300000000); -INSERT INTO "zz_area_code" VALUES (445321000000, '新兴县', 3, 445300000000); -INSERT INTO "zz_area_code" VALUES (445322000000, '郁南县', 3, 445300000000); -INSERT INTO "zz_area_code" VALUES (445381000000, '罗定市', 3, 445300000000); -INSERT INTO "zz_area_code" VALUES (450000000000, '广西壮族自治区', 1, null); -INSERT INTO "zz_area_code" VALUES (450100000000, '南宁市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450101000000, '市辖区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450102000000, '兴宁区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450103000000, '青秀区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450105000000, '江南区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450107000000, '西乡塘区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450108000000, '良庆区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450109000000, '邕宁区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450110000000, '武鸣区', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450123000000, '隆安县', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450124000000, '马山县', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450125000000, '上林县', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450126000000, '宾阳县', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450127000000, '横县', 3, 450100000000); -INSERT INTO "zz_area_code" VALUES (450200000000, '柳州市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450201000000, '市辖区', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450202000000, '城中区', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450203000000, '鱼峰区', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450204000000, '柳南区', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450205000000, '柳北区', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450206000000, '柳江区', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450222000000, '柳城县', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450223000000, '鹿寨县', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450224000000, '融安县', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450225000000, '融水苗族自治县', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450226000000, '三江侗族自治县', 3, 450200000000); -INSERT INTO "zz_area_code" VALUES (450300000000, '桂林市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450301000000, '市辖区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450302000000, '秀峰区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450303000000, '叠彩区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450304000000, '象山区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450305000000, '七星区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450311000000, '雁山区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450312000000, '临桂区', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450321000000, '阳朔县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450323000000, '灵川县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450324000000, '全州县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450325000000, '兴安县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450326000000, '永福县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450327000000, '灌阳县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450328000000, '龙胜各族自治县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450329000000, '资源县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450330000000, '平乐县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450332000000, '恭城瑶族自治县', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450381000000, '荔浦市', 3, 450300000000); -INSERT INTO "zz_area_code" VALUES (450400000000, '梧州市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450401000000, '市辖区', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450403000000, '万秀区', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450405000000, '长洲区', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450406000000, '龙圩区', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450421000000, '苍梧县', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450422000000, '藤县', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450423000000, '蒙山县', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450481000000, '岑溪市', 3, 450400000000); -INSERT INTO "zz_area_code" VALUES (450500000000, '北海市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450501000000, '市辖区', 3, 450500000000); -INSERT INTO "zz_area_code" VALUES (450502000000, '海城区', 3, 450500000000); -INSERT INTO "zz_area_code" VALUES (450503000000, '银海区', 3, 450500000000); -INSERT INTO "zz_area_code" VALUES (450512000000, '铁山港区', 3, 450500000000); -INSERT INTO "zz_area_code" VALUES (450521000000, '合浦县', 3, 450500000000); -INSERT INTO "zz_area_code" VALUES (450600000000, '防城港市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450601000000, '市辖区', 3, 450600000000); -INSERT INTO "zz_area_code" VALUES (450602000000, '港口区', 3, 450600000000); -INSERT INTO "zz_area_code" VALUES (450603000000, '防城区', 3, 450600000000); -INSERT INTO "zz_area_code" VALUES (450621000000, '上思县', 3, 450600000000); -INSERT INTO "zz_area_code" VALUES (450681000000, '东兴市', 3, 450600000000); -INSERT INTO "zz_area_code" VALUES (450700000000, '钦州市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450701000000, '市辖区', 3, 450700000000); -INSERT INTO "zz_area_code" VALUES (450702000000, '钦南区', 3, 450700000000); -INSERT INTO "zz_area_code" VALUES (450703000000, '钦北区', 3, 450700000000); -INSERT INTO "zz_area_code" VALUES (450721000000, '灵山县', 3, 450700000000); -INSERT INTO "zz_area_code" VALUES (450722000000, '浦北县', 3, 450700000000); -INSERT INTO "zz_area_code" VALUES (450800000000, '贵港市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450801000000, '市辖区', 3, 450800000000); -INSERT INTO "zz_area_code" VALUES (450802000000, '港北区', 3, 450800000000); -INSERT INTO "zz_area_code" VALUES (450803000000, '港南区', 3, 450800000000); -INSERT INTO "zz_area_code" VALUES (450804000000, '覃塘区', 3, 450800000000); -INSERT INTO "zz_area_code" VALUES (450821000000, '平南县', 3, 450800000000); -INSERT INTO "zz_area_code" VALUES (450881000000, '桂平市', 3, 450800000000); -INSERT INTO "zz_area_code" VALUES (450900000000, '玉林市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (450901000000, '市辖区', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450902000000, '玉州区', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450903000000, '福绵区', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450921000000, '容县', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450922000000, '陆川县', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450923000000, '博白县', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450924000000, '兴业县', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (450981000000, '北流市', 3, 450900000000); -INSERT INTO "zz_area_code" VALUES (451000000000, '百色市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (451001000000, '市辖区', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451002000000, '右江区', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451021000000, '田阳县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451022000000, '田东县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451023000000, '平果县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451024000000, '德保县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451026000000, '那坡县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451027000000, '凌云县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451028000000, '乐业县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451029000000, '田林县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451030000000, '西林县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451031000000, '隆林各族自治县', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451081000000, '靖西市', 3, 451000000000); -INSERT INTO "zz_area_code" VALUES (451100000000, '贺州市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (451101000000, '市辖区', 3, 451100000000); -INSERT INTO "zz_area_code" VALUES (451102000000, '八步区', 3, 451100000000); -INSERT INTO "zz_area_code" VALUES (451103000000, '平桂区', 3, 451100000000); -INSERT INTO "zz_area_code" VALUES (451121000000, '昭平县', 3, 451100000000); -INSERT INTO "zz_area_code" VALUES (451122000000, '钟山县', 3, 451100000000); -INSERT INTO "zz_area_code" VALUES (451123000000, '富川瑶族自治县', 3, 451100000000); -INSERT INTO "zz_area_code" VALUES (451200000000, '河池市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (451201000000, '市辖区', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451202000000, '金城江区', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451203000000, '宜州区', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451221000000, '南丹县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451222000000, '天峨县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451223000000, '凤山县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451224000000, '东兰县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451225000000, '罗城仫佬族自治县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451226000000, '环江毛南族自治县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451227000000, '巴马瑶族自治县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451228000000, '都安瑶族自治县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451229000000, '大化瑶族自治县', 3, 451200000000); -INSERT INTO "zz_area_code" VALUES (451300000000, '来宾市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (451301000000, '市辖区', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451302000000, '兴宾区', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451321000000, '忻城县', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451322000000, '象州县', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451323000000, '武宣县', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451324000000, '金秀瑶族自治县', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451381000000, '合山市', 3, 451300000000); -INSERT INTO "zz_area_code" VALUES (451400000000, '崇左市', 2, 450000000000); -INSERT INTO "zz_area_code" VALUES (451401000000, '市辖区', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451402000000, '江州区', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451421000000, '扶绥县', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451422000000, '宁明县', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451423000000, '龙州县', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451424000000, '大新县', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451425000000, '天等县', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (451481000000, '凭祥市', 3, 451400000000); -INSERT INTO "zz_area_code" VALUES (460000000000, '海南省', 1, null); -INSERT INTO "zz_area_code" VALUES (460100000000, '海口市', 2, 460000000000); -INSERT INTO "zz_area_code" VALUES (460101000000, '市辖区', 3, 460100000000); -INSERT INTO "zz_area_code" VALUES (460105000000, '秀英区', 3, 460100000000); -INSERT INTO "zz_area_code" VALUES (460106000000, '龙华区', 3, 460100000000); -INSERT INTO "zz_area_code" VALUES (460107000000, '琼山区', 3, 460100000000); -INSERT INTO "zz_area_code" VALUES (460108000000, '美兰区', 3, 460100000000); -INSERT INTO "zz_area_code" VALUES (460200000000, '三亚市', 2, 460000000000); -INSERT INTO "zz_area_code" VALUES (460201000000, '市辖区', 3, 460200000000); -INSERT INTO "zz_area_code" VALUES (460202000000, '海棠区', 3, 460200000000); -INSERT INTO "zz_area_code" VALUES (460203000000, '吉阳区', 3, 460200000000); -INSERT INTO "zz_area_code" VALUES (460204000000, '天涯区', 3, 460200000000); -INSERT INTO "zz_area_code" VALUES (460205000000, '崖州区', 3, 460200000000); -INSERT INTO "zz_area_code" VALUES (460300000000, '三沙市', 2, 460000000000); -INSERT INTO "zz_area_code" VALUES (460321000000, '西沙群岛', 3, 460300000000); -INSERT INTO "zz_area_code" VALUES (460322000000, '南沙群岛', 3, 460300000000); -INSERT INTO "zz_area_code" VALUES (460323000000, '中沙群岛的岛礁及其海域', 3, 460300000000); -INSERT INTO "zz_area_code" VALUES (460400000000, '儋州市', 2, 460000000000); -INSERT INTO "zz_area_code" VALUES (469000000000, '省直辖县级行政区划', 2, 460000000000); -INSERT INTO "zz_area_code" VALUES (469001000000, '五指山市', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469002000000, '琼海市', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469005000000, '文昌市', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469006000000, '万宁市', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469007000000, '东方市', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469021000000, '定安县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469022000000, '屯昌县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469023000000, '澄迈县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469024000000, '临高县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469025000000, '白沙黎族自治县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469026000000, '昌江黎族自治县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469027000000, '乐东黎族自治县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469028000000, '陵水黎族自治县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469029000000, '保亭黎族苗族自治县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (469030000000, '琼中黎族苗族自治县', 3, 469000000000); -INSERT INTO "zz_area_code" VALUES (500000000000, '重庆市', 1, null); -INSERT INTO "zz_area_code" VALUES (500100000000, '市辖区', 2, 500000000000); -INSERT INTO "zz_area_code" VALUES (500101000000, '万州区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500102000000, '涪陵区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500103000000, '渝中区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500104000000, '大渡口区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500105000000, '江北区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500106000000, '沙坪坝区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500107000000, '九龙坡区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500108000000, '南岸区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500109000000, '北碚区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500110000000, '綦江区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500111000000, '大足区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500112000000, '渝北区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500113000000, '巴南区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500114000000, '黔江区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500115000000, '长寿区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500116000000, '江津区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500117000000, '合川区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500118000000, '永川区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500119000000, '南川区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500120000000, '璧山区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500151000000, '铜梁区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500152000000, '潼南区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500153000000, '荣昌区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500154000000, '开州区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500155000000, '梁平区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500156000000, '武隆区', 3, 500100000000); -INSERT INTO "zz_area_code" VALUES (500200000000, '县', 2, 500000000000); -INSERT INTO "zz_area_code" VALUES (500229000000, '城口县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500230000000, '丰都县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500231000000, '垫江县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500233000000, '忠县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500235000000, '云阳县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500236000000, '奉节县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500237000000, '巫山县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500238000000, '巫溪县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500240000000, '石柱土家族自治县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500241000000, '秀山土家族苗族自治县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500242000000, '酉阳土家族苗族自治县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (500243000000, '彭水苗族土家族自治县', 3, 500200000000); -INSERT INTO "zz_area_code" VALUES (510000000000, '四川省', 1, null); -INSERT INTO "zz_area_code" VALUES (510100000000, '成都市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510101000000, '市辖区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510104000000, '锦江区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510105000000, '青羊区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510106000000, '金牛区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510107000000, '武侯区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510108000000, '成华区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510112000000, '龙泉驿区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510113000000, '青白江区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510114000000, '新都区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510115000000, '温江区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510116000000, '双流区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510117000000, '郫都区', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510121000000, '金堂县', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510129000000, '大邑县', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510131000000, '蒲江县', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510132000000, '新津县', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510181000000, '都江堰市', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510182000000, '彭州市', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510183000000, '邛崃市', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510184000000, '崇州市', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510185000000, '简阳市', 3, 510100000000); -INSERT INTO "zz_area_code" VALUES (510300000000, '自贡市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510301000000, '市辖区', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510302000000, '自流井区', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510303000000, '贡井区', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510304000000, '大安区', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510311000000, '沿滩区', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510321000000, '荣县', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510322000000, '富顺县', 3, 510300000000); -INSERT INTO "zz_area_code" VALUES (510400000000, '攀枝花市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510401000000, '市辖区', 3, 510400000000); -INSERT INTO "zz_area_code" VALUES (510402000000, '东区', 3, 510400000000); -INSERT INTO "zz_area_code" VALUES (510403000000, '西区', 3, 510400000000); -INSERT INTO "zz_area_code" VALUES (510411000000, '仁和区', 3, 510400000000); -INSERT INTO "zz_area_code" VALUES (510421000000, '米易县', 3, 510400000000); -INSERT INTO "zz_area_code" VALUES (510422000000, '盐边县', 3, 510400000000); -INSERT INTO "zz_area_code" VALUES (510500000000, '泸州市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510501000000, '市辖区', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510502000000, '江阳区', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510503000000, '纳溪区', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510504000000, '龙马潭区', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510521000000, '泸县', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510522000000, '合江县', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510524000000, '叙永县', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510525000000, '古蔺县', 3, 510500000000); -INSERT INTO "zz_area_code" VALUES (510600000000, '德阳市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510601000000, '市辖区', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510603000000, '旌阳区', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510604000000, '罗江区', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510623000000, '中江县', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510681000000, '广汉市', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510682000000, '什邡市', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510683000000, '绵竹市', 3, 510600000000); -INSERT INTO "zz_area_code" VALUES (510700000000, '绵阳市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510701000000, '市辖区', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510703000000, '涪城区', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510704000000, '游仙区', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510705000000, '安州区', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510722000000, '三台县', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510723000000, '盐亭县', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510725000000, '梓潼县', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510726000000, '北川羌族自治县', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510727000000, '平武县', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510781000000, '江油市', 3, 510700000000); -INSERT INTO "zz_area_code" VALUES (510800000000, '广元市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510801000000, '市辖区', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510802000000, '利州区', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510811000000, '昭化区', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510812000000, '朝天区', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510821000000, '旺苍县', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510822000000, '青川县', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510823000000, '剑阁县', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510824000000, '苍溪县', 3, 510800000000); -INSERT INTO "zz_area_code" VALUES (510900000000, '遂宁市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (510901000000, '市辖区', 3, 510900000000); -INSERT INTO "zz_area_code" VALUES (510903000000, '船山区', 3, 510900000000); -INSERT INTO "zz_area_code" VALUES (510904000000, '安居区', 3, 510900000000); -INSERT INTO "zz_area_code" VALUES (510921000000, '蓬溪县', 3, 510900000000); -INSERT INTO "zz_area_code" VALUES (510922000000, '射洪县', 3, 510900000000); -INSERT INTO "zz_area_code" VALUES (510923000000, '大英县', 3, 510900000000); -INSERT INTO "zz_area_code" VALUES (511000000000, '内江市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511001000000, '市辖区', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511002000000, '市中区', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511011000000, '东兴区', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511024000000, '威远县', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511025000000, '资中县', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511071000000, '内江经济开发区', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511083000000, '隆昌市', 3, 511000000000); -INSERT INTO "zz_area_code" VALUES (511100000000, '乐山市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511101000000, '市辖区', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511102000000, '市中区', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511111000000, '沙湾区', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511112000000, '五通桥区', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511113000000, '金口河区', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511123000000, '犍为县', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511124000000, '井研县', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511126000000, '夹江县', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511129000000, '沐川县', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511132000000, '峨边彝族自治县', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511133000000, '马边彝族自治县', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511181000000, '峨眉山市', 3, 511100000000); -INSERT INTO "zz_area_code" VALUES (511300000000, '南充市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511301000000, '市辖区', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511302000000, '顺庆区', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511303000000, '高坪区', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511304000000, '嘉陵区', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511321000000, '南部县', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511322000000, '营山县', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511323000000, '蓬安县', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511324000000, '仪陇县', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511325000000, '西充县', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511381000000, '阆中市', 3, 511300000000); -INSERT INTO "zz_area_code" VALUES (511400000000, '眉山市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511401000000, '市辖区', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511402000000, '东坡区', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511403000000, '彭山区', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511421000000, '仁寿县', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511423000000, '洪雅县', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511424000000, '丹棱县', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511425000000, '青神县', 3, 511400000000); -INSERT INTO "zz_area_code" VALUES (511500000000, '宜宾市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511501000000, '市辖区', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511502000000, '翠屏区', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511503000000, '南溪区', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511504000000, '叙州区', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511523000000, '江安县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511524000000, '长宁县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511525000000, '高县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511526000000, '珙县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511527000000, '筠连县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511528000000, '兴文县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511529000000, '屏山县', 3, 511500000000); -INSERT INTO "zz_area_code" VALUES (511600000000, '广安市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511601000000, '市辖区', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511602000000, '广安区', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511603000000, '前锋区', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511621000000, '岳池县', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511622000000, '武胜县', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511623000000, '邻水县', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511681000000, '华蓥市', 3, 511600000000); -INSERT INTO "zz_area_code" VALUES (511700000000, '达州市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511701000000, '市辖区', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511702000000, '通川区', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511703000000, '达川区', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511722000000, '宣汉县', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511723000000, '开江县', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511724000000, '大竹县', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511725000000, '渠县', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511771000000, '达州经济开发区', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511781000000, '万源市', 3, 511700000000); -INSERT INTO "zz_area_code" VALUES (511800000000, '雅安市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511801000000, '市辖区', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511802000000, '雨城区', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511803000000, '名山区', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511822000000, '荥经县', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511823000000, '汉源县', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511824000000, '石棉县', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511825000000, '天全县', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511826000000, '芦山县', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511827000000, '宝兴县', 3, 511800000000); -INSERT INTO "zz_area_code" VALUES (511900000000, '巴中市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (511901000000, '市辖区', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (511902000000, '巴州区', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (511903000000, '恩阳区', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (511921000000, '通江县', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (511922000000, '南江县', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (511923000000, '平昌县', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (511971000000, '巴中经济开发区', 3, 511900000000); -INSERT INTO "zz_area_code" VALUES (512000000000, '资阳市', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (512001000000, '市辖区', 3, 512000000000); -INSERT INTO "zz_area_code" VALUES (512002000000, '雁江区', 3, 512000000000); -INSERT INTO "zz_area_code" VALUES (512021000000, '安岳县', 3, 512000000000); -INSERT INTO "zz_area_code" VALUES (512022000000, '乐至县', 3, 512000000000); -INSERT INTO "zz_area_code" VALUES (513200000000, '阿坝藏族羌族自治州', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (513201000000, '马尔康市', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513221000000, '汶川县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513222000000, '理县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513223000000, '茂县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513224000000, '松潘县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513225000000, '九寨沟县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513226000000, '金川县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513227000000, '小金县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513228000000, '黑水县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513230000000, '壤塘县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513231000000, '阿坝县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513232000000, '若尔盖县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513233000000, '红原县', 3, 513200000000); -INSERT INTO "zz_area_code" VALUES (513300000000, '甘孜藏族自治州', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (513301000000, '康定市', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513322000000, '泸定县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513323000000, '丹巴县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513324000000, '九龙县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513325000000, '雅江县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513326000000, '道孚县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513327000000, '炉霍县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513328000000, '甘孜县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513329000000, '新龙县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513330000000, '德格县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513331000000, '白玉县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513332000000, '石渠县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513333000000, '色达县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513334000000, '理塘县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513335000000, '巴塘县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513336000000, '乡城县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513337000000, '稻城县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513338000000, '得荣县', 3, 513300000000); -INSERT INTO "zz_area_code" VALUES (513400000000, '凉山彝族自治州', 2, 510000000000); -INSERT INTO "zz_area_code" VALUES (513401000000, '西昌市', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513422000000, '木里藏族自治县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513423000000, '盐源县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513424000000, '德昌县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513425000000, '会理县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513426000000, '会东县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513427000000, '宁南县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513428000000, '普格县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513429000000, '布拖县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513430000000, '金阳县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513431000000, '昭觉县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513432000000, '喜德县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513433000000, '冕宁县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513434000000, '越西县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513435000000, '甘洛县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513436000000, '美姑县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (513437000000, '雷波县', 3, 513400000000); -INSERT INTO "zz_area_code" VALUES (520000000000, '贵州省', 1, null); -INSERT INTO "zz_area_code" VALUES (520100000000, '贵阳市', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (520101000000, '市辖区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520102000000, '南明区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520103000000, '云岩区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520111000000, '花溪区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520112000000, '乌当区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520113000000, '白云区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520115000000, '观山湖区', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520121000000, '开阳县', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520122000000, '息烽县', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520123000000, '修文县', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520181000000, '清镇市', 3, 520100000000); -INSERT INTO "zz_area_code" VALUES (520200000000, '六盘水市', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (520201000000, '钟山区', 3, 520200000000); -INSERT INTO "zz_area_code" VALUES (520203000000, '六枝特区', 3, 520200000000); -INSERT INTO "zz_area_code" VALUES (520221000000, '水城县', 3, 520200000000); -INSERT INTO "zz_area_code" VALUES (520281000000, '盘州市', 3, 520200000000); -INSERT INTO "zz_area_code" VALUES (520300000000, '遵义市', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (520301000000, '市辖区', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520302000000, '红花岗区', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520303000000, '汇川区', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520304000000, '播州区', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520322000000, '桐梓县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520323000000, '绥阳县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520324000000, '正安县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520325000000, '道真仡佬族苗族自治县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520326000000, '务川仡佬族苗族自治县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520327000000, '凤冈县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520328000000, '湄潭县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520329000000, '余庆县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520330000000, '习水县', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520381000000, '赤水市', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520382000000, '仁怀市', 3, 520300000000); -INSERT INTO "zz_area_code" VALUES (520400000000, '安顺市', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (520401000000, '市辖区', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520402000000, '西秀区', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520403000000, '平坝区', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520422000000, '普定县', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520423000000, '镇宁布依族苗族自治县', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520424000000, '关岭布依族苗族自治县', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520425000000, '紫云苗族布依族自治县', 3, 520400000000); -INSERT INTO "zz_area_code" VALUES (520500000000, '毕节市', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (520501000000, '市辖区', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520502000000, '七星关区', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520521000000, '大方县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520522000000, '黔西县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520523000000, '金沙县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520524000000, '织金县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520525000000, '纳雍县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520526000000, '威宁彝族回族苗族自治县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520527000000, '赫章县', 3, 520500000000); -INSERT INTO "zz_area_code" VALUES (520600000000, '铜仁市', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (520601000000, '市辖区', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520602000000, '碧江区', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520603000000, '万山区', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520621000000, '江口县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520622000000, '玉屏侗族自治县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520623000000, '石阡县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520624000000, '思南县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520625000000, '印江土家族苗族自治县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520626000000, '德江县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520627000000, '沿河土家族自治县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (520628000000, '松桃苗族自治县', 3, 520600000000); -INSERT INTO "zz_area_code" VALUES (522300000000, '黔西南布依族苗族自治州', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (522301000000, '兴义市', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522302000000, '兴仁市', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522323000000, '普安县', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522324000000, '晴隆县', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522325000000, '贞丰县', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522326000000, '望谟县', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522327000000, '册亨县', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522328000000, '安龙县', 3, 522300000000); -INSERT INTO "zz_area_code" VALUES (522600000000, '黔东南苗族侗族自治州', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (522601000000, '凯里市', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522622000000, '黄平县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522623000000, '施秉县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522624000000, '三穗县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522625000000, '镇远县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522626000000, '岑巩县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522627000000, '天柱县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522628000000, '锦屏县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522629000000, '剑河县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522630000000, '台江县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522631000000, '黎平县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522632000000, '榕江县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522633000000, '从江县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522634000000, '雷山县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522635000000, '麻江县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522636000000, '丹寨县', 3, 522600000000); -INSERT INTO "zz_area_code" VALUES (522700000000, '黔南布依族苗族自治州', 2, 520000000000); -INSERT INTO "zz_area_code" VALUES (522701000000, '都匀市', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522702000000, '福泉市', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522722000000, '荔波县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522723000000, '贵定县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522725000000, '瓮安县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522726000000, '独山县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522727000000, '平塘县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522728000000, '罗甸县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522729000000, '长顺县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522730000000, '龙里县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522731000000, '惠水县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (522732000000, '三都水族自治县', 3, 522700000000); -INSERT INTO "zz_area_code" VALUES (530000000000, '云南省', 1, null); -INSERT INTO "zz_area_code" VALUES (530100000000, '昆明市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530101000000, '市辖区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530102000000, '五华区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530103000000, '盘龙区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530111000000, '官渡区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530112000000, '西山区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530113000000, '东川区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530114000000, '呈贡区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530115000000, '晋宁区', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530124000000, '富民县', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530125000000, '宜良县', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530126000000, '石林彝族自治县', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530127000000, '嵩明县', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530128000000, '禄劝彝族苗族自治县', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530129000000, '寻甸回族彝族自治县', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530181000000, '安宁市', 3, 530100000000); -INSERT INTO "zz_area_code" VALUES (530300000000, '曲靖市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530301000000, '市辖区', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530302000000, '麒麟区', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530303000000, '沾益区', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530304000000, '马龙区', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530322000000, '陆良县', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530323000000, '师宗县', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530324000000, '罗平县', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530325000000, '富源县', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530326000000, '会泽县', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530381000000, '宣威市', 3, 530300000000); -INSERT INTO "zz_area_code" VALUES (530400000000, '玉溪市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530401000000, '市辖区', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530402000000, '红塔区', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530403000000, '江川区', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530422000000, '澄江县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530423000000, '通海县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530424000000, '华宁县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530425000000, '易门县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530426000000, '峨山彝族自治县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530427000000, '新平彝族傣族自治县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530428000000, '元江哈尼族彝族傣族自治县', 3, 530400000000); -INSERT INTO "zz_area_code" VALUES (530500000000, '保山市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530501000000, '市辖区', 3, 530500000000); -INSERT INTO "zz_area_code" VALUES (530502000000, '隆阳区', 3, 530500000000); -INSERT INTO "zz_area_code" VALUES (530521000000, '施甸县', 3, 530500000000); -INSERT INTO "zz_area_code" VALUES (530523000000, '龙陵县', 3, 530500000000); -INSERT INTO "zz_area_code" VALUES (530524000000, '昌宁县', 3, 530500000000); -INSERT INTO "zz_area_code" VALUES (530581000000, '腾冲市', 3, 530500000000); -INSERT INTO "zz_area_code" VALUES (530600000000, '昭通市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530601000000, '市辖区', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530602000000, '昭阳区', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530621000000, '鲁甸县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530622000000, '巧家县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530623000000, '盐津县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530624000000, '大关县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530625000000, '永善县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530626000000, '绥江县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530627000000, '镇雄县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530628000000, '彝良县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530629000000, '威信县', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530681000000, '水富市', 3, 530600000000); -INSERT INTO "zz_area_code" VALUES (530700000000, '丽江市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530701000000, '市辖区', 3, 530700000000); -INSERT INTO "zz_area_code" VALUES (530702000000, '古城区', 3, 530700000000); -INSERT INTO "zz_area_code" VALUES (530721000000, '玉龙纳西族自治县', 3, 530700000000); -INSERT INTO "zz_area_code" VALUES (530722000000, '永胜县', 3, 530700000000); -INSERT INTO "zz_area_code" VALUES (530723000000, '华坪县', 3, 530700000000); -INSERT INTO "zz_area_code" VALUES (530724000000, '宁蒗彝族自治县', 3, 530700000000); -INSERT INTO "zz_area_code" VALUES (530800000000, '普洱市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530801000000, '市辖区', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530802000000, '思茅区', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530821000000, '宁洱哈尼族彝族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530822000000, '墨江哈尼族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530823000000, '景东彝族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530824000000, '景谷傣族彝族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530825000000, '镇沅彝族哈尼族拉祜族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530826000000, '江城哈尼族彝族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530827000000, '孟连傣族拉祜族佤族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530828000000, '澜沧拉祜族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530829000000, '西盟佤族自治县', 3, 530800000000); -INSERT INTO "zz_area_code" VALUES (530900000000, '临沧市', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (530901000000, '市辖区', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530902000000, '临翔区', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530921000000, '凤庆县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530922000000, '云县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530923000000, '永德县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530924000000, '镇康县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530925000000, '双江拉祜族佤族布朗族傣族自治县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530926000000, '耿马傣族佤族自治县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (530927000000, '沧源佤族自治县', 3, 530900000000); -INSERT INTO "zz_area_code" VALUES (532300000000, '楚雄彝族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (532301000000, '楚雄市', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532322000000, '双柏县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532323000000, '牟定县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532324000000, '南华县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532325000000, '姚安县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532326000000, '大姚县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532327000000, '永仁县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532328000000, '元谋县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532329000000, '武定县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532331000000, '禄丰县', 3, 532300000000); -INSERT INTO "zz_area_code" VALUES (532500000000, '红河哈尼族彝族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (532501000000, '个旧市', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532502000000, '开远市', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532503000000, '蒙自市', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532504000000, '弥勒市', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532523000000, '屏边苗族自治县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532524000000, '建水县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532525000000, '石屏县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532527000000, '泸西县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532528000000, '元阳县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532529000000, '红河县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532530000000, '金平苗族瑶族傣族自治县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532531000000, '绿春县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532532000000, '河口瑶族自治县', 3, 532500000000); -INSERT INTO "zz_area_code" VALUES (532600000000, '文山壮族苗族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (532601000000, '文山市', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532622000000, '砚山县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532623000000, '西畴县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532624000000, '麻栗坡县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532625000000, '马关县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532626000000, '丘北县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532627000000, '广南县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532628000000, '富宁县', 3, 532600000000); -INSERT INTO "zz_area_code" VALUES (532800000000, '西双版纳傣族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (532801000000, '景洪市', 3, 532800000000); -INSERT INTO "zz_area_code" VALUES (532822000000, '勐海县', 3, 532800000000); -INSERT INTO "zz_area_code" VALUES (532823000000, '勐腊县', 3, 532800000000); -INSERT INTO "zz_area_code" VALUES (532900000000, '大理白族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (532901000000, '大理市', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532922000000, '漾濞彝族自治县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532923000000, '祥云县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532924000000, '宾川县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532925000000, '弥渡县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532926000000, '南涧彝族自治县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532927000000, '巍山彝族回族自治县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532928000000, '永平县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532929000000, '云龙县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532930000000, '洱源县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532931000000, '剑川县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (532932000000, '鹤庆县', 3, 532900000000); -INSERT INTO "zz_area_code" VALUES (533100000000, '德宏傣族景颇族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (533102000000, '瑞丽市', 3, 533100000000); -INSERT INTO "zz_area_code" VALUES (533103000000, '芒市', 3, 533100000000); -INSERT INTO "zz_area_code" VALUES (533122000000, '梁河县', 3, 533100000000); -INSERT INTO "zz_area_code" VALUES (533123000000, '盈江县', 3, 533100000000); -INSERT INTO "zz_area_code" VALUES (533124000000, '陇川县', 3, 533100000000); -INSERT INTO "zz_area_code" VALUES (533300000000, '怒江傈僳族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (533301000000, '泸水市', 3, 533300000000); -INSERT INTO "zz_area_code" VALUES (533323000000, '福贡县', 3, 533300000000); -INSERT INTO "zz_area_code" VALUES (533324000000, '贡山独龙族怒族自治县', 3, 533300000000); -INSERT INTO "zz_area_code" VALUES (533325000000, '兰坪白族普米族自治县', 3, 533300000000); -INSERT INTO "zz_area_code" VALUES (533400000000, '迪庆藏族自治州', 2, 530000000000); -INSERT INTO "zz_area_code" VALUES (533401000000, '香格里拉市', 3, 533400000000); -INSERT INTO "zz_area_code" VALUES (533422000000, '德钦县', 3, 533400000000); -INSERT INTO "zz_area_code" VALUES (533423000000, '维西傈僳族自治县', 3, 533400000000); -INSERT INTO "zz_area_code" VALUES (540000000000, '西藏自治区', 1, null); -INSERT INTO "zz_area_code" VALUES (540100000000, '拉萨市', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (540101000000, '市辖区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540102000000, '城关区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540103000000, '堆龙德庆区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540104000000, '达孜区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540121000000, '林周县', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540122000000, '当雄县', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540123000000, '尼木县', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540124000000, '曲水县', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540127000000, '墨竹工卡县', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540171000000, '格尔木藏青工业园区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540172000000, '拉萨经济技术开发区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540173000000, '西藏文化旅游创意园区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540174000000, '达孜工业园区', 3, 540100000000); -INSERT INTO "zz_area_code" VALUES (540200000000, '日喀则市', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (540202000000, '桑珠孜区', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540221000000, '南木林县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540222000000, '江孜县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540223000000, '定日县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540224000000, '萨迦县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540225000000, '拉孜县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540226000000, '昂仁县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540227000000, '谢通门县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540228000000, '白朗县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540229000000, '仁布县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540230000000, '康马县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540231000000, '定结县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540232000000, '仲巴县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540233000000, '亚东县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540234000000, '吉隆县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540235000000, '聂拉木县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540236000000, '萨嘎县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540237000000, '岗巴县', 3, 540200000000); -INSERT INTO "zz_area_code" VALUES (540300000000, '昌都市', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (540302000000, '卡若区', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540321000000, '江达县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540322000000, '贡觉县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540323000000, '类乌齐县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540324000000, '丁青县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540325000000, '察雅县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540326000000, '八宿县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540327000000, '左贡县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540328000000, '芒康县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540329000000, '洛隆县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540330000000, '边坝县', 3, 540300000000); -INSERT INTO "zz_area_code" VALUES (540400000000, '林芝市', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (540402000000, '巴宜区', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540421000000, '工布江达县', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540422000000, '米林县', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540423000000, '墨脱县', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540424000000, '波密县', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540425000000, '察隅县', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540426000000, '朗县', 3, 540400000000); -INSERT INTO "zz_area_code" VALUES (540500000000, '山南市', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (540501000000, '市辖区', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540502000000, '乃东区', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540521000000, '扎囊县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540522000000, '贡嘎县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540523000000, '桑日县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540524000000, '琼结县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540525000000, '曲松县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540526000000, '措美县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540527000000, '洛扎县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540528000000, '加查县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540529000000, '隆子县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540530000000, '错那县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540531000000, '浪卡子县', 3, 540500000000); -INSERT INTO "zz_area_code" VALUES (540600000000, '那曲市', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (540602000000, '色尼区', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540621000000, '嘉黎县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540622000000, '比如县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540623000000, '聂荣县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540624000000, '安多县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540625000000, '申扎县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540626000000, '索县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540627000000, '班戈县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540628000000, '巴青县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540629000000, '尼玛县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (540630000000, '双湖县', 3, 540600000000); -INSERT INTO "zz_area_code" VALUES (542500000000, '阿里地区', 2, 540000000000); -INSERT INTO "zz_area_code" VALUES (542521000000, '普兰县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (542522000000, '札达县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (542523000000, '噶尔县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (542524000000, '日土县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (542525000000, '革吉县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (542526000000, '改则县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (542527000000, '措勤县', 3, 542500000000); -INSERT INTO "zz_area_code" VALUES (610000000000, '陕西省', 1, null); -INSERT INTO "zz_area_code" VALUES (610100000000, '西安市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610101000000, '市辖区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610102000000, '新城区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610103000000, '碑林区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610104000000, '莲湖区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610111000000, '灞桥区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610112000000, '未央区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610113000000, '雁塔区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610114000000, '阎良区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610115000000, '临潼区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610116000000, '长安区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610117000000, '高陵区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610118000000, '鄠邑区', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610122000000, '蓝田县', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610124000000, '周至县', 3, 610100000000); -INSERT INTO "zz_area_code" VALUES (610200000000, '铜川市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610201000000, '市辖区', 3, 610200000000); -INSERT INTO "zz_area_code" VALUES (610202000000, '王益区', 3, 610200000000); -INSERT INTO "zz_area_code" VALUES (610203000000, '印台区', 3, 610200000000); -INSERT INTO "zz_area_code" VALUES (610204000000, '耀州区', 3, 610200000000); -INSERT INTO "zz_area_code" VALUES (610222000000, '宜君县', 3, 610200000000); -INSERT INTO "zz_area_code" VALUES (610300000000, '宝鸡市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610301000000, '市辖区', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610302000000, '渭滨区', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610303000000, '金台区', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610304000000, '陈仓区', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610322000000, '凤翔县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610323000000, '岐山县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610324000000, '扶风县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610326000000, '眉县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610327000000, '陇县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610328000000, '千阳县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610329000000, '麟游县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610330000000, '凤县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610331000000, '太白县', 3, 610300000000); -INSERT INTO "zz_area_code" VALUES (610400000000, '咸阳市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610401000000, '市辖区', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610402000000, '秦都区', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610403000000, '杨陵区', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610404000000, '渭城区', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610422000000, '三原县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610423000000, '泾阳县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610424000000, '乾县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610425000000, '礼泉县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610426000000, '永寿县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610428000000, '长武县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610429000000, '旬邑县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610430000000, '淳化县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610431000000, '武功县', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610481000000, '兴平市', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610482000000, '彬州市', 3, 610400000000); -INSERT INTO "zz_area_code" VALUES (610500000000, '渭南市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610501000000, '市辖区', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610502000000, '临渭区', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610503000000, '华州区', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610522000000, '潼关县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610523000000, '大荔县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610524000000, '合阳县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610525000000, '澄城县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610526000000, '蒲城县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610527000000, '白水县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610528000000, '富平县', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610581000000, '韩城市', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610582000000, '华阴市', 3, 610500000000); -INSERT INTO "zz_area_code" VALUES (610600000000, '延安市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610601000000, '市辖区', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610602000000, '宝塔区', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610603000000, '安塞区', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610621000000, '延长县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610622000000, '延川县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610623000000, '子长县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610625000000, '志丹县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610626000000, '吴起县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610627000000, '甘泉县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610628000000, '富县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610629000000, '洛川县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610630000000, '宜川县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610631000000, '黄龙县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610632000000, '黄陵县', 3, 610600000000); -INSERT INTO "zz_area_code" VALUES (610700000000, '汉中市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610701000000, '市辖区', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610702000000, '汉台区', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610703000000, '南郑区', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610722000000, '城固县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610723000000, '洋县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610724000000, '西乡县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610725000000, '勉县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610726000000, '宁强县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610727000000, '略阳县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610728000000, '镇巴县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610729000000, '留坝县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610730000000, '佛坪县', 3, 610700000000); -INSERT INTO "zz_area_code" VALUES (610800000000, '榆林市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610801000000, '市辖区', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610802000000, '榆阳区', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610803000000, '横山区', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610822000000, '府谷县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610824000000, '靖边县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610825000000, '定边县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610826000000, '绥德县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610827000000, '米脂县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610828000000, '佳县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610829000000, '吴堡县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610830000000, '清涧县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610831000000, '子洲县', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610881000000, '神木市', 3, 610800000000); -INSERT INTO "zz_area_code" VALUES (610900000000, '安康市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (610901000000, '市辖区', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610902000000, '汉滨区', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610921000000, '汉阴县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610922000000, '石泉县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610923000000, '宁陕县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610924000000, '紫阳县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610925000000, '岚皋县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610926000000, '平利县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610927000000, '镇坪县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610928000000, '旬阳县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (610929000000, '白河县', 3, 610900000000); -INSERT INTO "zz_area_code" VALUES (611000000000, '商洛市', 2, 610000000000); -INSERT INTO "zz_area_code" VALUES (611001000000, '市辖区', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611002000000, '商州区', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611021000000, '洛南县', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611022000000, '丹凤县', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611023000000, '商南县', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611024000000, '山阳县', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611025000000, '镇安县', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (611026000000, '柞水县', 3, 611000000000); -INSERT INTO "zz_area_code" VALUES (620000000000, '甘肃省', 1, null); -INSERT INTO "zz_area_code" VALUES (620100000000, '兰州市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620101000000, '市辖区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620102000000, '城关区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620103000000, '七里河区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620104000000, '西固区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620105000000, '安宁区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620111000000, '红古区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620121000000, '永登县', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620122000000, '皋兰县', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620123000000, '榆中县', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620171000000, '兰州新区', 3, 620100000000); -INSERT INTO "zz_area_code" VALUES (620200000000, '嘉峪关市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620201000000, '市辖区', 3, 620200000000); -INSERT INTO "zz_area_code" VALUES (620300000000, '金昌市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620301000000, '市辖区', 3, 620300000000); -INSERT INTO "zz_area_code" VALUES (620302000000, '金川区', 3, 620300000000); -INSERT INTO "zz_area_code" VALUES (620321000000, '永昌县', 3, 620300000000); -INSERT INTO "zz_area_code" VALUES (620400000000, '白银市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620401000000, '市辖区', 3, 620400000000); -INSERT INTO "zz_area_code" VALUES (620402000000, '白银区', 3, 620400000000); -INSERT INTO "zz_area_code" VALUES (620403000000, '平川区', 3, 620400000000); -INSERT INTO "zz_area_code" VALUES (620421000000, '靖远县', 3, 620400000000); -INSERT INTO "zz_area_code" VALUES (620422000000, '会宁县', 3, 620400000000); -INSERT INTO "zz_area_code" VALUES (620423000000, '景泰县', 3, 620400000000); -INSERT INTO "zz_area_code" VALUES (620500000000, '天水市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620501000000, '市辖区', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620502000000, '秦州区', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620503000000, '麦积区', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620521000000, '清水县', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620522000000, '秦安县', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620523000000, '甘谷县', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620524000000, '武山县', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620525000000, '张家川回族自治县', 3, 620500000000); -INSERT INTO "zz_area_code" VALUES (620600000000, '武威市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620601000000, '市辖区', 3, 620600000000); -INSERT INTO "zz_area_code" VALUES (620602000000, '凉州区', 3, 620600000000); -INSERT INTO "zz_area_code" VALUES (620621000000, '民勤县', 3, 620600000000); -INSERT INTO "zz_area_code" VALUES (620622000000, '古浪县', 3, 620600000000); -INSERT INTO "zz_area_code" VALUES (620623000000, '天祝藏族自治县', 3, 620600000000); -INSERT INTO "zz_area_code" VALUES (620700000000, '张掖市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620701000000, '市辖区', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620702000000, '甘州区', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620721000000, '肃南裕固族自治县', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620722000000, '民乐县', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620723000000, '临泽县', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620724000000, '高台县', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620725000000, '山丹县', 3, 620700000000); -INSERT INTO "zz_area_code" VALUES (620800000000, '平凉市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620801000000, '市辖区', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620802000000, '崆峒区', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620821000000, '泾川县', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620822000000, '灵台县', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620823000000, '崇信县', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620825000000, '庄浪县', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620826000000, '静宁县', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620881000000, '华亭市', 3, 620800000000); -INSERT INTO "zz_area_code" VALUES (620900000000, '酒泉市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (620901000000, '市辖区', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620902000000, '肃州区', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620921000000, '金塔县', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620922000000, '瓜州县', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620923000000, '肃北蒙古族自治县', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620924000000, '阿克塞哈萨克族自治县', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620981000000, '玉门市', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (620982000000, '敦煌市', 3, 620900000000); -INSERT INTO "zz_area_code" VALUES (621000000000, '庆阳市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (621001000000, '市辖区', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621002000000, '西峰区', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621021000000, '庆城县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621022000000, '环县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621023000000, '华池县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621024000000, '合水县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621025000000, '正宁县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621026000000, '宁县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621027000000, '镇原县', 3, 621000000000); -INSERT INTO "zz_area_code" VALUES (621100000000, '定西市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (621101000000, '市辖区', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621102000000, '安定区', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621121000000, '通渭县', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621122000000, '陇西县', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621123000000, '渭源县', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621124000000, '临洮县', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621125000000, '漳县', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621126000000, '岷县', 3, 621100000000); -INSERT INTO "zz_area_code" VALUES (621200000000, '陇南市', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (621201000000, '市辖区', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621202000000, '武都区', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621221000000, '成县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621222000000, '文县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621223000000, '宕昌县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621224000000, '康县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621225000000, '西和县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621226000000, '礼县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621227000000, '徽县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (621228000000, '两当县', 3, 621200000000); -INSERT INTO "zz_area_code" VALUES (622900000000, '临夏回族自治州', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (622901000000, '临夏市', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622921000000, '临夏县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622922000000, '康乐县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622923000000, '永靖县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622924000000, '广河县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622925000000, '和政县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622926000000, '东乡族自治县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (622927000000, '积石山保安族东乡族撒拉族自治县', 3, 622900000000); -INSERT INTO "zz_area_code" VALUES (623000000000, '甘南藏族自治州', 2, 620000000000); -INSERT INTO "zz_area_code" VALUES (623001000000, '合作市', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623021000000, '临潭县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623022000000, '卓尼县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623023000000, '舟曲县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623024000000, '迭部县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623025000000, '玛曲县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623026000000, '碌曲县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (623027000000, '夏河县', 3, 623000000000); -INSERT INTO "zz_area_code" VALUES (630000000000, '青海省', 1, null); -INSERT INTO "zz_area_code" VALUES (630100000000, '西宁市', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (630101000000, '市辖区', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630102000000, '城东区', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630103000000, '城中区', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630104000000, '城西区', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630105000000, '城北区', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630121000000, '大通回族土族自治县', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630122000000, '湟中县', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630123000000, '湟源县', 3, 630100000000); -INSERT INTO "zz_area_code" VALUES (630200000000, '海东市', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (630202000000, '乐都区', 3, 630200000000); -INSERT INTO "zz_area_code" VALUES (630203000000, '平安区', 3, 630200000000); -INSERT INTO "zz_area_code" VALUES (630222000000, '民和回族土族自治县', 3, 630200000000); -INSERT INTO "zz_area_code" VALUES (630223000000, '互助土族自治县', 3, 630200000000); -INSERT INTO "zz_area_code" VALUES (630224000000, '化隆回族自治县', 3, 630200000000); -INSERT INTO "zz_area_code" VALUES (630225000000, '循化撒拉族自治县', 3, 630200000000); -INSERT INTO "zz_area_code" VALUES (632200000000, '海北藏族自治州', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (632221000000, '门源回族自治县', 3, 632200000000); -INSERT INTO "zz_area_code" VALUES (632222000000, '祁连县', 3, 632200000000); -INSERT INTO "zz_area_code" VALUES (632223000000, '海晏县', 3, 632200000000); -INSERT INTO "zz_area_code" VALUES (632224000000, '刚察县', 3, 632200000000); -INSERT INTO "zz_area_code" VALUES (632300000000, '黄南藏族自治州', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (632321000000, '同仁县', 3, 632300000000); -INSERT INTO "zz_area_code" VALUES (632322000000, '尖扎县', 3, 632300000000); -INSERT INTO "zz_area_code" VALUES (632323000000, '泽库县', 3, 632300000000); -INSERT INTO "zz_area_code" VALUES (632324000000, '河南蒙古族自治县', 3, 632300000000); -INSERT INTO "zz_area_code" VALUES (632500000000, '海南藏族自治州', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (632521000000, '共和县', 3, 632500000000); -INSERT INTO "zz_area_code" VALUES (632522000000, '同德县', 3, 632500000000); -INSERT INTO "zz_area_code" VALUES (632523000000, '贵德县', 3, 632500000000); -INSERT INTO "zz_area_code" VALUES (632524000000, '兴海县', 3, 632500000000); -INSERT INTO "zz_area_code" VALUES (632525000000, '贵南县', 3, 632500000000); -INSERT INTO "zz_area_code" VALUES (632600000000, '果洛藏族自治州', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (632621000000, '玛沁县', 3, 632600000000); -INSERT INTO "zz_area_code" VALUES (632622000000, '班玛县', 3, 632600000000); -INSERT INTO "zz_area_code" VALUES (632623000000, '甘德县', 3, 632600000000); -INSERT INTO "zz_area_code" VALUES (632624000000, '达日县', 3, 632600000000); -INSERT INTO "zz_area_code" VALUES (632625000000, '久治县', 3, 632600000000); -INSERT INTO "zz_area_code" VALUES (632626000000, '玛多县', 3, 632600000000); -INSERT INTO "zz_area_code" VALUES (632700000000, '玉树藏族自治州', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (632701000000, '玉树市', 3, 632700000000); -INSERT INTO "zz_area_code" VALUES (632722000000, '杂多县', 3, 632700000000); -INSERT INTO "zz_area_code" VALUES (632723000000, '称多县', 3, 632700000000); -INSERT INTO "zz_area_code" VALUES (632724000000, '治多县', 3, 632700000000); -INSERT INTO "zz_area_code" VALUES (632725000000, '囊谦县', 3, 632700000000); -INSERT INTO "zz_area_code" VALUES (632726000000, '曲麻莱县', 3, 632700000000); -INSERT INTO "zz_area_code" VALUES (632800000000, '海西蒙古族藏族自治州', 2, 630000000000); -INSERT INTO "zz_area_code" VALUES (632801000000, '格尔木市', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (632802000000, '德令哈市', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (632803000000, '茫崖市', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (632821000000, '乌兰县', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (632822000000, '都兰县', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (632823000000, '天峻县', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (632857000000, '大柴旦行政委员会', 3, 632800000000); -INSERT INTO "zz_area_code" VALUES (640000000000, '宁夏回族自治区', 1, null); -INSERT INTO "zz_area_code" VALUES (640100000000, '银川市', 2, 640000000000); -INSERT INTO "zz_area_code" VALUES (640101000000, '市辖区', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640104000000, '兴庆区', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640105000000, '西夏区', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640106000000, '金凤区', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640121000000, '永宁县', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640122000000, '贺兰县', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640181000000, '灵武市', 3, 640100000000); -INSERT INTO "zz_area_code" VALUES (640200000000, '石嘴山市', 2, 640000000000); -INSERT INTO "zz_area_code" VALUES (640201000000, '市辖区', 3, 640200000000); -INSERT INTO "zz_area_code" VALUES (640202000000, '大武口区', 3, 640200000000); -INSERT INTO "zz_area_code" VALUES (640205000000, '惠农区', 3, 640200000000); -INSERT INTO "zz_area_code" VALUES (640221000000, '平罗县', 3, 640200000000); -INSERT INTO "zz_area_code" VALUES (640300000000, '吴忠市', 2, 640000000000); -INSERT INTO "zz_area_code" VALUES (640301000000, '市辖区', 3, 640300000000); -INSERT INTO "zz_area_code" VALUES (640302000000, '利通区', 3, 640300000000); -INSERT INTO "zz_area_code" VALUES (640303000000, '红寺堡区', 3, 640300000000); -INSERT INTO "zz_area_code" VALUES (640323000000, '盐池县', 3, 640300000000); -INSERT INTO "zz_area_code" VALUES (640324000000, '同心县', 3, 640300000000); -INSERT INTO "zz_area_code" VALUES (640381000000, '青铜峡市', 3, 640300000000); -INSERT INTO "zz_area_code" VALUES (640400000000, '固原市', 2, 640000000000); -INSERT INTO "zz_area_code" VALUES (640401000000, '市辖区', 3, 640400000000); -INSERT INTO "zz_area_code" VALUES (640402000000, '原州区', 3, 640400000000); -INSERT INTO "zz_area_code" VALUES (640422000000, '西吉县', 3, 640400000000); -INSERT INTO "zz_area_code" VALUES (640423000000, '隆德县', 3, 640400000000); -INSERT INTO "zz_area_code" VALUES (640424000000, '泾源县', 3, 640400000000); -INSERT INTO "zz_area_code" VALUES (640425000000, '彭阳县', 3, 640400000000); -INSERT INTO "zz_area_code" VALUES (640500000000, '中卫市', 2, 640000000000); -INSERT INTO "zz_area_code" VALUES (640501000000, '市辖区', 3, 640500000000); -INSERT INTO "zz_area_code" VALUES (640502000000, '沙坡头区', 3, 640500000000); -INSERT INTO "zz_area_code" VALUES (640521000000, '中宁县', 3, 640500000000); -INSERT INTO "zz_area_code" VALUES (640522000000, '海原县', 3, 640500000000); -INSERT INTO "zz_area_code" VALUES (650000000000, '新疆维吾尔自治区', 1, null); -INSERT INTO "zz_area_code" VALUES (650100000000, '乌鲁木齐市', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (650101000000, '市辖区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650102000000, '天山区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650103000000, '沙依巴克区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650104000000, '新市区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650105000000, '水磨沟区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650106000000, '头屯河区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650107000000, '达坂城区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650109000000, '米东区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650121000000, '乌鲁木齐县', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650171000000, '乌鲁木齐经济技术开发区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650172000000, '乌鲁木齐高新技术产业开发区', 3, 650100000000); -INSERT INTO "zz_area_code" VALUES (650200000000, '克拉玛依市', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (650201000000, '市辖区', 3, 650200000000); -INSERT INTO "zz_area_code" VALUES (650202000000, '独山子区', 3, 650200000000); -INSERT INTO "zz_area_code" VALUES (650203000000, '克拉玛依区', 3, 650200000000); -INSERT INTO "zz_area_code" VALUES (650204000000, '白碱滩区', 3, 650200000000); -INSERT INTO "zz_area_code" VALUES (650205000000, '乌尔禾区', 3, 650200000000); -INSERT INTO "zz_area_code" VALUES (650400000000, '吐鲁番市', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (650402000000, '高昌区', 3, 650400000000); -INSERT INTO "zz_area_code" VALUES (650421000000, '鄯善县', 3, 650400000000); -INSERT INTO "zz_area_code" VALUES (650422000000, '托克逊县', 3, 650400000000); -INSERT INTO "zz_area_code" VALUES (650500000000, '哈密市', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (650502000000, '伊州区', 3, 650500000000); -INSERT INTO "zz_area_code" VALUES (650521000000, '巴里坤哈萨克自治县', 3, 650500000000); -INSERT INTO "zz_area_code" VALUES (650522000000, '伊吾县', 3, 650500000000); -INSERT INTO "zz_area_code" VALUES (652300000000, '昌吉回族自治州', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (652301000000, '昌吉市', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652302000000, '阜康市', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652323000000, '呼图壁县', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652324000000, '玛纳斯县', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652325000000, '奇台县', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652327000000, '吉木萨尔县', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652328000000, '木垒哈萨克自治县', 3, 652300000000); -INSERT INTO "zz_area_code" VALUES (652700000000, '博尔塔拉蒙古自治州', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (652701000000, '博乐市', 3, 652700000000); -INSERT INTO "zz_area_code" VALUES (652702000000, '阿拉山口市', 3, 652700000000); -INSERT INTO "zz_area_code" VALUES (652722000000, '精河县', 3, 652700000000); -INSERT INTO "zz_area_code" VALUES (652723000000, '温泉县', 3, 652700000000); -INSERT INTO "zz_area_code" VALUES (652800000000, '巴音郭楞蒙古自治州', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (652801000000, '库尔勒市', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652822000000, '轮台县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652823000000, '尉犁县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652824000000, '若羌县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652825000000, '且末县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652826000000, '焉耆回族自治县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652827000000, '和静县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652828000000, '和硕县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652829000000, '博湖县', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652871000000, '库尔勒经济技术开发区', 3, 652800000000); -INSERT INTO "zz_area_code" VALUES (652900000000, '阿克苏地区', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (652901000000, '阿克苏市', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652922000000, '温宿县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652923000000, '库车县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652924000000, '沙雅县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652925000000, '新和县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652926000000, '拜城县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652927000000, '乌什县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652928000000, '阿瓦提县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (652929000000, '柯坪县', 3, 652900000000); -INSERT INTO "zz_area_code" VALUES (653000000000, '克孜勒苏柯尔克孜自治州', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (653001000000, '阿图什市', 3, 653000000000); -INSERT INTO "zz_area_code" VALUES (653022000000, '阿克陶县', 3, 653000000000); -INSERT INTO "zz_area_code" VALUES (653023000000, '阿合奇县', 3, 653000000000); -INSERT INTO "zz_area_code" VALUES (653024000000, '乌恰县', 3, 653000000000); -INSERT INTO "zz_area_code" VALUES (653100000000, '喀什地区', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (653101000000, '喀什市', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653121000000, '疏附县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653122000000, '疏勒县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653123000000, '英吉沙县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653124000000, '泽普县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653125000000, '莎车县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653126000000, '叶城县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653127000000, '麦盖提县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653128000000, '岳普湖县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653129000000, '伽师县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653130000000, '巴楚县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653131000000, '塔什库尔干塔吉克自治县', 3, 653100000000); -INSERT INTO "zz_area_code" VALUES (653200000000, '和田地区', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (653201000000, '和田市', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653221000000, '和田县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653222000000, '墨玉县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653223000000, '皮山县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653224000000, '洛浦县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653225000000, '策勒县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653226000000, '于田县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (653227000000, '民丰县', 3, 653200000000); -INSERT INTO "zz_area_code" VALUES (654000000000, '伊犁哈萨克自治州', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (654002000000, '伊宁市', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654003000000, '奎屯市', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654004000000, '霍尔果斯市', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654021000000, '伊宁县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654022000000, '察布查尔锡伯自治县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654023000000, '霍城县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654024000000, '巩留县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654025000000, '新源县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654026000000, '昭苏县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654027000000, '特克斯县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654028000000, '尼勒克县', 3, 654000000000); -INSERT INTO "zz_area_code" VALUES (654200000000, '塔城地区', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (654201000000, '塔城市', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654202000000, '乌苏市', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654221000000, '额敏县', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654223000000, '沙湾县', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654224000000, '托里县', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654225000000, '裕民县', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654226000000, '和布克赛尔蒙古自治县', 3, 654200000000); -INSERT INTO "zz_area_code" VALUES (654300000000, '阿勒泰地区', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (654301000000, '阿勒泰市', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (654321000000, '布尔津县', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (654322000000, '富蕴县', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (654323000000, '福海县', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (654324000000, '哈巴河县', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (654325000000, '青河县', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (654326000000, '吉木乃县', 3, 654300000000); -INSERT INTO "zz_area_code" VALUES (659000000000, '自治区直辖县级行政区划', 2, 650000000000); -INSERT INTO "zz_area_code" VALUES (659001000000, '石河子市', 3, 659000000000); -INSERT INTO "zz_area_code" VALUES (659002000000, '阿拉尔市', 3, 659000000000); -INSERT INTO "zz_area_code" VALUES (659003000000, '图木舒克市', 3, 659000000000); -INSERT INTO "zz_area_code" VALUES (659004000000, '五家渠市', 3, 659000000000); -INSERT INTO "zz_area_code" VALUES (659006000000, '铁门关市', 3, 659000000000); -COMMIT; \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/init-upms-data-script-pg.sql b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/init-upms-data-script-pg.sql deleted file mode 100644 index 05d1219b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/init-upms-data-script-pg.sql +++ /dev/null @@ -1,409 +0,0 @@ - --- ---------------------------- --- 请仅在下面的数据库链接中执行该脚本。 --- 主数据源 [localhost:5432/zzdemo-single] --- ---------------------------- - - --- ---------------------------- --- 全部菜单数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_menu" VALUES(1495250233494343681,NULL,'系统管理',0,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732288,1495250233494343681,'用户管理',1,'formSysUser',NULL,NULL,100,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979869,1495250233502732288,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979870,1495250233502732288,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979871,1495250233502732288,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979872,1495250233502732288,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979873,1495250233502732288,'重置密码',3,NULL,NULL,NULL,5,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979874,1495250233502732288,'权限详情',3,NULL,NULL,NULL,6,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732289,1495250233494343681,'部门管理',1,'formSysDept',NULL,NULL,105,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979883,1495250233502732289,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979884,1495250233502732289,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979885,1495250233502732289,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979886,1495250233502732289,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732290,1495250233494343681,'角色管理',1,'formSysRole',NULL,NULL,110,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979893,1495250233502732290,'角色管理',2,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979894,1495250233502732290,'用户授权',2,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979895,1495251349346979893,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979896,1495251349346979893,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979897,1495251349346979893,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979898,1495251349346979893,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979899,1495251349346979893,'权限详情',3,NULL,NULL,NULL,5,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979900,1495251349346979894,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979901,1495251349346979894,'授权用户',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979902,1495251349346979894,'移除用户',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732291,1495250233494343681,'数据权限管理',1,'formSysDataPerm',NULL,NULL,115,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979913,1495250233502732291,'数据权限管理',2,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979914,1495250233502732291,'用户授权',2,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979915,1495251349346979913,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979916,1495251349346979913,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979917,1495251349346979913,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979918,1495251349346979913,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979919,1495251349346979914,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979920,1495251349346979914,'授权用户',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979921,1495251349346979914,'移除用户',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732292,1495250233494343681,'菜单管理',1,'formSysMenu',NULL,NULL,120,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979931,1495250233502732292,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979932,1495250233502732292,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979933,1495250233502732292,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979934,1495250233502732292,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979935,1495250233502732292,'权限详情',3,NULL,NULL,NULL,5,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732293,1495250233494343681,'权限字管理',1,'formSysPermCode',NULL,NULL,125,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979943,1495250233502732293,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979944,1495250233502732293,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979945,1495250233502732293,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979946,1495250233502732293,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979947,1495250233502732293,'权限详情',3,NULL,NULL,NULL,5,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732294,1495250233494343681,'权限管理',1,'formSysPerm',NULL,NULL,130,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979955,1495250233502732294,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979956,1495250233502732294,'新增模块',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979957,1495250233502732294,'编辑模块',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979958,1495250233502732294,'删除模块',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979959,1495250233502732294,'新增权限',3,NULL,NULL,NULL,5,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979960,1495250233502732294,'编辑权限',3,NULL,NULL,NULL,6,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979961,1495250233502732294,'删除权限',3,NULL,NULL,NULL,7,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979962,1495250233502732294,'权限详情',3,NULL,NULL,NULL,8,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732295,1495250233494343681,'字典管理',1,'formSysDict',NULL,NULL,135,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979973,1495250233502732295,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979974,1495250233502732295,'新增',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979975,1495250233502732295,'编辑',3,NULL,NULL,NULL,3,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979976,1495250233502732295,'删除',3,NULL,NULL,NULL,4,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979977,1495250233502732295,'同步缓存',3,NULL,NULL,NULL,5,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732296,1495250233494343681,'操作日志',1,'formSysOperationLog',NULL,NULL,140,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979985,1495250233502732296,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495250233502732297,1495250233494343681,'在线用户',1,'formSysLoginUser',NULL,NULL,145,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979989,1495250233502732297,'显示',3,NULL,NULL,NULL,1,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_menu" VALUES(1495251349346979990,1495250233502732297,'强制下线',3,NULL,NULL,NULL,2,NULL,1495250233473372160,NOW(),1495250233473372160,NOW()); -COMMIT; - --- ---------------------------- --- 全部权限字数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979936,NULL,'formSysMenu',0,'菜单管理',10600,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979941,1495251349346979937,'formSysMenu:fragmentSysMenu:listSysMenuPermDetail',2,'权限详情',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979924,1495251349346979922,'formSysDataPerm:fragmentSysDataPermUser',1,'用户授权',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979881,1495251349346979876,'formSysUser:fragmentSysUser:listSysUserPermDetail',2,'权限详情',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979908,1495251349346979904,'formSysRole:fragmentSysRole:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979948,NULL,'formSysPermCode',0,'权限字管理',10700,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979910,1495251349346979905,'formSysRole:fragmentSysRoleUser:addUserRole',2,'授权用户',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979963,NULL,'formSysPerm',0,'权限管理',10800,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979966,1495251349346979964,'formSysPerm:fragmentSysPerm:updatePermModule',2,'编辑模块',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979903,NULL,'formSysRole',0,'角色管理',10200,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979929,1495251349346979924,'formSysDataPerm:fragmentSysDataPermUser:deleteDataPermUser',2,'移除用户',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979949,1495251349346979948,'formSysPermCode:fragmentSysPermCode',1,'权限字管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979991,NULL,'formSysLoginUser',0,'在线用户',11200,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979980,1495251349346979979,'formSysDict:fragmentSysDict:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979982,1495251349346979979,'formSysDict:fragmentSysDict:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979877,1495251349346979876,'formSysUser:fragmentSysUser:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979887,NULL,'formSysDept',0,'部门管理',10100,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979983,1495251349346979979,'formSysDict:fragmentSysDict:reloadCache',2,'同步缓存',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979950,1495251349346979949,'formSysPermCode:fragmentSysPermCode:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979875,NULL,'formSysUser',0,'用户管理',10000,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979926,1495251349346979923,'formSysDataPerm:fragmentSysDataPerm:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979970,1495251349346979964,'formSysPerm:fragmentSysPerm:deletePerm',2,'删除权限',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979951,1495251349346979949,'formSysPermCode:fragmentSysPermCode:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979891,1495251349346979888,'formSysDept:fragmentSysDept:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979904,1495251349346979903,'formSysRole:fragmentSysRole',1,'角色管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979927,1495251349346979923,'formSysDataPerm:fragmentSysDataPerm:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979969,1495251349346979964,'formSysPerm:fragmentSysPerm:updatePerm',2,'编辑权限',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979925,1495251349346979923,'formSysDataPerm:fragmentSysDataPerm:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979965,1495251349346979964,'formSysPerm:fragmentSysPerm:addPermModule',2,'新增模块',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979993,1495251349346979992,'formSysLoginUser:fragmentLoginUser:delete',2,'强制下线',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979986,NULL,'formSysOperationLog',0,'操作日志',11100,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979876,1495251349346979875,'formSysUser:fragmentSysUser',1,'用户管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979953,1495251349346979949,'formSysPermCode:fragmentSysPermCode:listSysPermCodePermDetail',2,'权限详情',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979940,1495251349346979937,'formSysMenu:fragmentSysMenu:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979911,1495251349346979905,'formSysRole:fragmentSysRoleUser:deleteUserRole',2,'移除用户',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979979,1495251349346979978,'formSysDict:fragmentSysDict',1,'字典管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979878,1495251349346979876,'formSysUser:fragmentSysUser:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979923,1495251349346979922,'formSysDataPerm:fragmentSysDataPerm',1,'数据权限管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979880,1495251349346979876,'formSysUser:fragmentSysUser:resetPassword',2,'重置密码',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979978,NULL,'formSysDict',0,'字典管理',10900,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979939,1495251349346979937,'formSysMenu:fragmentSysMenu:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979968,1495251349346979964,'formSysPerm:fragmentSysPerm:addPerm',2,'新增权限',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979879,1495251349346979876,'formSysUser:fragmentSysUser:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979937,1495251349346979936,'formSysMenu:fragmentSysMenu',1,'菜单管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979981,1495251349346979979,'formSysDict:fragmentSysDict:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979889,1495251349346979888,'formSysDept:fragmentSysDept:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979964,1495251349346979963,'formSysPerm:fragmentSysPerm',1,'权限管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979905,1495251349346979903,'formSysRole:fragmentSysRoleUser',1,'用户授权',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979906,1495251349346979904,'formSysRole:fragmentSysRole:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979890,1495251349346979888,'formSysDept:fragmentSysDept:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979967,1495251349346979964,'formSysPerm:fragmentSysPerm:deletePermModule',2,'删除模块',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979971,1495251349346979964,'formSysPerm:fragmentSysPerm:listSysPermPermDetail',2,'权限详情',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979922,NULL,'formSysDataPerm',0,'数据权限管理',10400,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979907,1495251349346979904,'formSysRole:fragmentSysRole:update',2,'编辑',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979928,1495251349346979924,'formSysDataPerm:fragmentSysDataPermUser:addDataPermUser',2,'授权用户',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979909,1495251349346979904,'formSysRole:fragmentSysRole:listSysRolePermDetail',2,'权限详情',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979938,1495251349346979937,'formSysMenu:fragmentSysMenu:add',2,'新增',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979952,1495251349346979949,'formSysPermCode:fragmentSysPermCode:delete',2,'删除',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979987,1495251349346979986,'formSysOperationLog:fragmentSysOperationLog',1,'操作日志',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979888,1495251349346979887,'formSysDept:fragmentSysDept',1,'部门管理',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_code" VALUES(1495251349346979992,1495251349346979991,'formSysLoginUser:fragmentLoginUser',1,'在线用户',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -COMMIT; - --- ---------------------------- --- 全部菜单和权限字关系数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979869,1495251349346979876); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979870,1495251349346979877); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979871,1495251349346979878); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979872,1495251349346979879); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979873,1495251349346979880); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979874,1495251349346979881); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979883,1495251349346979888); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979884,1495251349346979889); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979885,1495251349346979890); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979886,1495251349346979891); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979895,1495251349346979904); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979900,1495251349346979905); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979896,1495251349346979906); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979897,1495251349346979907); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979898,1495251349346979908); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979901,1495251349346979910); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979902,1495251349346979911); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979899,1495251349346979909); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979915,1495251349346979923); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979919,1495251349346979924); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979916,1495251349346979925); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979917,1495251349346979926); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979918,1495251349346979927); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979920,1495251349346979928); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979921,1495251349346979929); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979931,1495251349346979937); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979933,1495251349346979939); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979932,1495251349346979938); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979934,1495251349346979940); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979935,1495251349346979941); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979943,1495251349346979949); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979944,1495251349346979950); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979945,1495251349346979951); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979946,1495251349346979952); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979947,1495251349346979953); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979955,1495251349346979964); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979956,1495251349346979965); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979957,1495251349346979966); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979958,1495251349346979967); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979959,1495251349346979968); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979960,1495251349346979969); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979961,1495251349346979970); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979962,1495251349346979971); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495250233502732295,1495251349346979979); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495250233502732295,1495251349346979980); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495250233502732295,1495251349346979981); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495250233502732295,1495251349346979982); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495250233502732295,1495251349346979983); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979973,1495251349346979979); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979974,1495251349346979980); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979975,1495251349346979981); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979976,1495251349346979982); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979977,1495251349346979983); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979985,1495251349346979987); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979989,1495251349346979992); -INSERT INTO "zz_sys_menu_perm_code" VALUES(1495251349346979990,1495251349346979993); -COMMIT; - --- ---------------------------- --- 全部权限资源模块数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_perm_module" VALUES(1495250233506926593,NULL,'缺省分组',0,3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495250233506926592,NULL,'系统配置',0,2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495250233481760770,NULL,'用户权限',0,1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349346979861,1495250233506926592,'字典管理',0,0,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495250233645338624,1495250233481760770,'部门管理',1,0,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495250233582424064,1495250233481760770,'用户管理',1,5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349342785565,1495250233481760770,'角色管理',1,10,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349342785577,1495250233481760770,'数据权限管理',1,15,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349342785587,1495250233481760770,'菜单管理',1,20,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349342785595,1495250233481760770,'权限字管理',1,25,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349346979846,1495250233481760770,'权限模块管理',1,30,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349346979852,1495250233481760770,'权限资源管理',1,35,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349346979862,1495250233506926592,'操作日志',1,5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm_module" VALUES(1495251349346979864,1495250233506926592,'在线用户',1,10,1495250233473372160,NOW(),1495250233473372160,NOW()); -COMMIT; - --- ---------------------------- --- 全部权限资源数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_perm" VALUES(1495250233657921536,1495250233645338624,'新增','/admin/upms/sysDept/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233657921545,1495250233645338624,'编辑','/admin/upms/sysDept/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233657921555,1495250233645338624,'删除','/admin/upms/sysDept/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233657921557,1495250233645338624,'导入','/admin/upms/sysDept/import',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233657921558,1495250233645338624,'批量删除','/admin/upms/sysDept/deleteBatch',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233670504448,1495250233645338624,'显示列表','/admin/upms/sysDept/list',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233670504451,1495250233645338624,'导出','/admin/upms/sysDept/export',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233670504454,1495250233645338624,'详情','/admin/upms/sysDept/view',8,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233670504456,1495250233645338624,'打印','/admin/upms/sysDept/print',9,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233603395584,1495250233582424064,'新增','/admin/upms/sysUser/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233603395597,1495250233582424064,'编辑','/admin/upms/sysUser/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233603395611,1495250233582424064,'删除','/admin/upms/sysUser/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233603395613,1495250233582424064,'导入','/admin/upms/sysUser/import',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233603395614,1495250233582424064,'批量删除','/admin/upms/sysUser/deleteBatch',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233624367104,1495250233582424064,'显示列表','/admin/upms/sysUser/list',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233624367110,1495250233582424064,'导出','/admin/upms/sysUser/export',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233624367116,1495250233582424064,'详情','/admin/upms/sysUser/view',8,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233624367118,1495250233582424064,'打印','/admin/upms/sysUser/print',9,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233632755712,1495250233582424064,'重置密码','/admin/upms/sysUser/resetPassword',10,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233523703823,1495250233582424064,'用户管理文件上传','/admin/upms/sysUser/upload',11,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495250233523703822,1495250233582424064,'用户管理文件下载','/admin/upms/sysUser/download',12,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785562,1495250233582424064,'用户权限资源分配详情','/admin/upms/sysUser/listSysPermWithDetail',13,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785563,1495250233582424064,'用户权限字分配详情','/admin/upms/sysUser/listSysPermCodeWithDetail',14,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785564,1495250233582424064,'用户菜单分配详情','/admin/upms/sysUser/listSysMenuWithDetail',15,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785566,1495251349342785565,'新增','/admin/upms/sysRole/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785567,1495251349342785565,'编辑','/admin/upms/sysRole/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785568,1495251349342785565,'删除','/admin/upms/sysRole/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785569,1495251349342785565,'显示列表','/admin/upms/sysRole/list',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785570,1495251349342785565,'详情','/admin/upms/sysRole/view',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785571,1495251349342785565,'授权用户','/admin/upms/sysRole/addUserRole',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785572,1495251349342785565,'移除用户','/admin/upms/sysRole/deleteUserRole',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785573,1495251349342785565,'角色用户列表','/admin/upms/sysRole/listUserRole',8,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785574,1495251349342785565,'角色未添加用户列表','/admin/upms/sysRole/listNotInUserRole',9,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785575,1495251349342785565,'角色权限资源分配详情','/admin/upms/sysRole/listSysPermWithDetail',10,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785576,1495251349342785565,'角色权限字分配详情','/admin/upms/sysRole/listSysPermCodeWithDetail',11,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785578,1495251349342785577,'新增','/admin/upms/sysDataPerm/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785579,1495251349342785577,'编辑','/admin/upms/sysDataPerm/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785580,1495251349342785577,'删除','/admin/upms/sysDataPerm/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785581,1495251349342785577,'显示列表','/admin/upms/sysDataPerm/list',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785582,1495251349342785577,'详情','/admin/upms/sysDataPerm/view',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785583,1495251349342785577,'授权用户','/admin/upms/sysDataPerm/addDataPermUser',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785584,1495251349342785577,'移除用户','/admin/upms/sysDataPerm/deleteDataPermUser',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785585,1495251349342785577,'数据权限用户列表','/admin/upms/sysDataPerm/listDataPermUser',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785586,1495251349342785577,'数据权限未添加用户列表','/admin/upms/sysDataPerm/listNotInDataPermUser',8,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785588,1495251349342785587,'新增','/admin/upms/sysMenu/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785589,1495251349342785587,'删除','/admin/upms/sysMenu/delete',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785590,1495251349342785587,'编辑','/admin/upms/sysMenu/update',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785591,1495251349342785587,'显示列表','/admin/upms/sysMenu/list',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785592,1495251349342785587,'详情','/admin/upms/sysMenu/view',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785593,1495251349342785587,'菜单权限资源分配详情','/admin/upms/sysMenu/listSysPermWithDetail',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785594,1495251349342785587,'菜单用户分配详情','/admin/upms/sysMenu/listSysUserWithDetail',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349342785596,1495251349342785595,'新增','/admin/upms/sysPermCode/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979840,1495251349342785595,'编辑','/admin/upms/sysPermCode/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979841,1495251349342785595,'删除','/admin/upms/sysPermCode/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979842,1495251349342785595,'显示列表','/admin/upms/sysPermCode/list',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979843,1495251349342785595,'详情','/admin/upms/sysPermCode/view',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979844,1495251349342785595,'权限字用户分配详情','/admin/upms/sysPermCode/listSysUserWithDetail',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979845,1495251349342785595,'权限字角色分配详情','/admin/upms/sysPermCode/listSysRoleWithDetail',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979847,1495251349346979846,'新增','/admin/upms/sysPermModule/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979848,1495251349346979846,'编辑','/admin/upms/sysPermModule/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979849,1495251349346979846,'删除','/admin/upms/sysPermModule/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979850,1495251349346979846,'显示列表','/admin/upms/sysPermModule/list',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979851,1495251349346979846,'显示全部','/admin/upms/sysPermModule/listAll',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979853,1495251349346979852,'新增','/admin/upms/sysPerm/add',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979854,1495251349346979852,'编辑','/admin/upms/sysPerm/update',2,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979855,1495251349346979852,'删除','/admin/upms/sysPerm/delete',3,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979856,1495251349346979852,'显示列表','/admin/upms/sysPerm/list',4,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979857,1495251349346979852,'详情','/admin/upms/sysPerm/view',5,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979858,1495251349346979852,'权限资源用户分配详情','/admin/upms/sysPerm/listSysUserWithDetail',6,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979859,1495251349346979852,'权限资源角色分配详情','/admin/upms/sysPerm/listSysRoleWithDetail',7,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979860,1495251349346979852,'权限资源菜单分配详情','/admin/upms/sysPerm/listSysMenuWithDetail',8,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979863,1495251349346979862,'显示列表','/admin/upms/sysOperationLog/list',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979865,1495251349346979864,'显示列表','/admin/upms/loginUser/list',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -INSERT INTO "zz_sys_perm" VALUES(1495251349346979866,1495251349346979864,'删除','/admin/upms/loginUser/delete',1,1495250233473372160,NOW(),1495250233473372160,NOW()); -COMMIT; - --- ---------------------------- --- 全部权限字和权限资源关系数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979876,1495250233624367104); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979876,1495250233624367110); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979877,1495250233603395584); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979877,1495250233670504448); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979877,1495251349342785581); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979877,1495251349342785569); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979878,1495250233624367116); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979878,1495250233603395597); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979878,1495250233624367118); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979878,1495250233670504448); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979878,1495251349342785581); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979878,1495251349342785569); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979879,1495250233603395611); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979880,1495250233632755712); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979881,1495251349342785564); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979881,1495251349342785563); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979881,1495251349342785562); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979888,1495250233670504448); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979888,1495250233670504451); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979889,1495250233657921536); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979890,1495250233670504454); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979890,1495250233657921545); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979890,1495250233670504456); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979891,1495250233657921555); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979904,1495251349342785569); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979906,1495251349342785566); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979906,1495251349342785591); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979907,1495251349342785570); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979907,1495251349342785567); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979907,1495251349342785591); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979909,1495251349342785576); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979909,1495251349342785575); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979908,1495251349342785568); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979905,1495251349342785573); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979910,1495251349342785571); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979910,1495251349342785574); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979911,1495251349342785572); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979923,1495251349342785581); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979925,1495251349342785578); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979926,1495251349342785582); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979926,1495251349342785579); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979927,1495251349342785580); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979924,1495251349342785585); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979928,1495251349342785583); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979928,1495251349342785586); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979929,1495251349342785584); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979937,1495251349342785591); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979938,1495251349342785588); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979938,1495251349346979842); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979939,1495251349342785592); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979939,1495251349342785590); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979939,1495251349346979842); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979940,1495251349342785589); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979941,1495251349342785593); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979941,1495251349342785594); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979949,1495251349346979842); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979950,1495251349342785596); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979950,1495251349346979851); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979951,1495251349346979843); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979951,1495251349346979840); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979951,1495251349346979851); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979952,1495251349346979841); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979953,1495251349346979844); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979953,1495251349346979845); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979964,1495251349346979850); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979964,1495251349346979851); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979964,1495251349346979856); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979965,1495251349346979847); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979966,1495251349346979848); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979967,1495251349346979849); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979968,1495251349346979853); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979969,1495251349346979857); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979969,1495251349346979854); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979970,1495251349346979855); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979971,1495251349346979858); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979971,1495251349346979859); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979971,1495251349346979860); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979987,1495251349346979863); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979992,1495251349346979865); -INSERT INTO "zz_sys_perm_code_perm" VALUES(1495251349346979993,1495251349346979866); -COMMIT; - --- ---------------------------- --- 全部白名单权限资源数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/login/getLoginInfo','登录模块','获取登录信息'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/sysRole/listDict','系统管理','角色字典接口'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/sysRole/listDictByIds','系统管理','角色字典接口'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/sysDept/listDict','部门管理','部门字典字典列表'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/sysDept/listDictByIds','部门管理','部门字典字典批量Id列表'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/sysDept/listDictByParentId','部门管理','部门字典下一级字典列表'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/login/doLogout','登录模块','退出登陆'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/login/changePassword','系统管理','修改密码'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/login/changeHeadImage','系统管理','修改头像'); -INSERT INTO "zz_sys_perm_whitelist" VALUES ('/admin/upms/login/downloadHeadImage','系统管理','下载头像'); -COMMIT; diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/rollback-upms-data-script-pg.sql b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/rollback-upms-data-script-pg.sql deleted file mode 100644 index a00ac864..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/rollback-upms-data-script-pg.sql +++ /dev/null @@ -1,405 +0,0 @@ --- ---------------------------- --- 该脚本用于删除自动生成的用户权限管理数据。在搭建初始环境的时候,不要执行该脚本。 --- 再次重新生成项目的时候,如果您在生成器中新增了用户权限相关的数据,而之前已经搭建好的数据库中,也存在了 --- 您自己手动插入的权限数据时,可以通过执行该脚本,将现有数据库表中,生成器生成的权限数据删除,删除之后,可以再执行新生成的数据库脚本数据。 --- 请仅在下面的数据库链接中执行该脚本。 --- 主数据源 [localhost:5432/zzdemo-single] --- ---------------------------- - --- ---------------------------- --- 全部菜单数据 --- ---------------------------- -BEGIN; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233494343681; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732288; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979869; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979870; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979871; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979872; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979873; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979874; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732289; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979883; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979884; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979885; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979886; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732290; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979893; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979894; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979895; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979896; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979897; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979898; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979899; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979900; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979901; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979902; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732291; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979913; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979914; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979915; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979916; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979917; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979918; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979919; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979920; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979921; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732292; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979931; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979932; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979933; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979934; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979935; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732293; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979943; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979944; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979945; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979946; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979947; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732294; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979955; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979956; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979957; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979958; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979959; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979960; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979961; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979962; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732295; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979973; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979974; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979975; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979976; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979977; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732296; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979985; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495250233502732297; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979989; -DELETE FROM "zz_sys_menu" WHERE menu_id = 1495251349346979990; -COMMIT; - --- ---------------------------- --- 全部权限字数据 --- ---------------------------- -BEGIN; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979936; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979941; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979924; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979881; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979908; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979948; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979910; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979963; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979966; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979903; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979929; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979949; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979991; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979980; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979982; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979877; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979887; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979983; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979950; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979875; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979926; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979970; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979951; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979891; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979904; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979927; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979969; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979925; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979965; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979993; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979986; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979876; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979953; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979940; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979911; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979979; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979878; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979923; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979880; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979978; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979939; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979968; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979879; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979937; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979981; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979889; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979964; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979905; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979906; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979890; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979967; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979971; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979922; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979907; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979928; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979909; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979938; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979952; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979987; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979888; -DELETE FROM "zz_sys_perm_code" WHERE perm_code_id = 1495251349346979992; -COMMIT; - --- ---------------------------- --- 全部菜单和权限字关系数据 --- ---------------------------- -BEGIN; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979869 AND perm_code_id = 1495251349346979876; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979870 AND perm_code_id = 1495251349346979877; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979871 AND perm_code_id = 1495251349346979878; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979872 AND perm_code_id = 1495251349346979879; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979873 AND perm_code_id = 1495251349346979880; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979874 AND perm_code_id = 1495251349346979881; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979883 AND perm_code_id = 1495251349346979888; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979884 AND perm_code_id = 1495251349346979889; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979885 AND perm_code_id = 1495251349346979890; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979886 AND perm_code_id = 1495251349346979891; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979895 AND perm_code_id = 1495251349346979904; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979900 AND perm_code_id = 1495251349346979905; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979896 AND perm_code_id = 1495251349346979906; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979897 AND perm_code_id = 1495251349346979907; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979898 AND perm_code_id = 1495251349346979908; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979901 AND perm_code_id = 1495251349346979910; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979902 AND perm_code_id = 1495251349346979911; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979899 AND perm_code_id = 1495251349346979909; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979915 AND perm_code_id = 1495251349346979923; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979919 AND perm_code_id = 1495251349346979924; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979916 AND perm_code_id = 1495251349346979925; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979917 AND perm_code_id = 1495251349346979926; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979918 AND perm_code_id = 1495251349346979927; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979920 AND perm_code_id = 1495251349346979928; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979921 AND perm_code_id = 1495251349346979929; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979931 AND perm_code_id = 1495251349346979937; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979933 AND perm_code_id = 1495251349346979939; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979932 AND perm_code_id = 1495251349346979938; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979934 AND perm_code_id = 1495251349346979940; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979935 AND perm_code_id = 1495251349346979941; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979943 AND perm_code_id = 1495251349346979949; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979944 AND perm_code_id = 1495251349346979950; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979945 AND perm_code_id = 1495251349346979951; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979946 AND perm_code_id = 1495251349346979952; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979947 AND perm_code_id = 1495251349346979953; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979955 AND perm_code_id = 1495251349346979964; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979956 AND perm_code_id = 1495251349346979965; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979957 AND perm_code_id = 1495251349346979966; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979958 AND perm_code_id = 1495251349346979967; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979959 AND perm_code_id = 1495251349346979968; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979960 AND perm_code_id = 1495251349346979969; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979961 AND perm_code_id = 1495251349346979970; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979962 AND perm_code_id = 1495251349346979971; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495250233502732295 AND perm_code_id = 1495251349346979979; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495250233502732295 AND perm_code_id = 1495251349346979980; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495250233502732295 AND perm_code_id = 1495251349346979981; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495250233502732295 AND perm_code_id = 1495251349346979982; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495250233502732295 AND perm_code_id = 1495251349346979983; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979973 AND perm_code_id = 1495251349346979979; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979974 AND perm_code_id = 1495251349346979980; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979975 AND perm_code_id = 1495251349346979981; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979976 AND perm_code_id = 1495251349346979982; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979977 AND perm_code_id = 1495251349346979983; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979985 AND perm_code_id = 1495251349346979987; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979989 AND perm_code_id = 1495251349346979992; -DELETE FROM "zz_sys_menu_perm_code" WHERE menu_id = 1495251349346979990 AND perm_code_id = 1495251349346979993; -COMMIT; - --- ---------------------------- --- 全部权限资源模块数据 --- ---------------------------- -BEGIN; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495250233506926593; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495250233506926592; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495250233481760770; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349346979861; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495250233645338624; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495250233582424064; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349342785565; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349342785577; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349342785587; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349342785595; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349346979846; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349346979852; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349346979862; -DELETE FROM "zz_sys_perm_module" WHERE module_id = 1495251349346979864; -COMMIT; - --- ---------------------------- --- 全部权限资源数据 --- ---------------------------- -BEGIN; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233657921536; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233657921545; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233657921555; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233657921557; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233657921558; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233670504448; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233670504451; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233670504454; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233670504456; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233603395584; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233603395597; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233603395611; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233603395613; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233603395614; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233624367104; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233624367110; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233624367116; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233624367118; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233632755712; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233523703823; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495250233523703822; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785562; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785563; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785564; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785566; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785567; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785568; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785569; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785570; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785571; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785572; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785573; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785574; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785575; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785576; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785578; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785579; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785580; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785581; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785582; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785583; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785584; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785585; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785586; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785588; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785589; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785590; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785591; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785592; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785593; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785594; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349342785596; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979840; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979841; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979842; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979843; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979844; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979845; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979847; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979848; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979849; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979850; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979851; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979853; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979854; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979855; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979856; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979857; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979858; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979859; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979860; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979863; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979865; -DELETE FROM "zz_sys_perm" WHERE perm_id = 1495251349346979866; -COMMIT; - --- ---------------------------- --- 全部权限字和权限资源关系数据 --- ---------------------------- -BEGIN; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979876 AND perm_id = 1495250233624367104; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979876 AND perm_id = 1495250233624367110; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979877 AND perm_id = 1495250233603395584; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979877 AND perm_id = 1495250233670504448; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979877 AND perm_id = 1495251349342785581; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979877 AND perm_id = 1495251349342785569; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979878 AND perm_id = 1495250233624367116; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979878 AND perm_id = 1495250233603395597; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979878 AND perm_id = 1495250233624367118; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979878 AND perm_id = 1495250233670504448; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979878 AND perm_id = 1495251349342785581; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979878 AND perm_id = 1495251349342785569; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979879 AND perm_id = 1495250233603395611; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979880 AND perm_id = 1495250233632755712; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979881 AND perm_id = 1495251349342785564; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979881 AND perm_id = 1495251349342785563; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979881 AND perm_id = 1495251349342785562; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979888 AND perm_id = 1495250233670504448; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979888 AND perm_id = 1495250233670504451; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979889 AND perm_id = 1495250233657921536; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979890 AND perm_id = 1495250233670504454; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979890 AND perm_id = 1495250233657921545; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979890 AND perm_id = 1495250233670504456; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979891 AND perm_id = 1495250233657921555; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979904 AND perm_id = 1495251349342785569; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979906 AND perm_id = 1495251349342785566; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979906 AND perm_id = 1495251349342785591; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979907 AND perm_id = 1495251349342785570; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979907 AND perm_id = 1495251349342785567; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979907 AND perm_id = 1495251349342785591; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979909 AND perm_id = 1495251349342785576; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979909 AND perm_id = 1495251349342785575; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979908 AND perm_id = 1495251349342785568; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979905 AND perm_id = 1495251349342785573; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979910 AND perm_id = 1495251349342785571; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979910 AND perm_id = 1495251349342785574; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979911 AND perm_id = 1495251349342785572; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979923 AND perm_id = 1495251349342785581; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979925 AND perm_id = 1495251349342785578; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979926 AND perm_id = 1495251349342785582; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979926 AND perm_id = 1495251349342785579; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979927 AND perm_id = 1495251349342785580; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979924 AND perm_id = 1495251349342785585; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979928 AND perm_id = 1495251349342785583; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979928 AND perm_id = 1495251349342785586; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979929 AND perm_id = 1495251349342785584; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979937 AND perm_id = 1495251349342785591; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979938 AND perm_id = 1495251349342785588; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979938 AND perm_id = 1495251349346979842; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979939 AND perm_id = 1495251349342785592; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979939 AND perm_id = 1495251349342785590; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979939 AND perm_id = 1495251349346979842; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979940 AND perm_id = 1495251349342785589; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979941 AND perm_id = 1495251349342785593; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979941 AND perm_id = 1495251349342785594; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979949 AND perm_id = 1495251349346979842; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979950 AND perm_id = 1495251349342785596; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979950 AND perm_id = 1495251349346979851; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979951 AND perm_id = 1495251349346979843; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979951 AND perm_id = 1495251349346979840; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979951 AND perm_id = 1495251349346979851; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979952 AND perm_id = 1495251349346979841; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979953 AND perm_id = 1495251349346979844; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979953 AND perm_id = 1495251349346979845; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979964 AND perm_id = 1495251349346979850; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979964 AND perm_id = 1495251349346979851; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979964 AND perm_id = 1495251349346979856; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979965 AND perm_id = 1495251349346979847; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979966 AND perm_id = 1495251349346979848; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979967 AND perm_id = 1495251349346979849; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979968 AND perm_id = 1495251349346979853; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979969 AND perm_id = 1495251349346979857; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979969 AND perm_id = 1495251349346979854; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979970 AND perm_id = 1495251349346979855; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979971 AND perm_id = 1495251349346979858; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979971 AND perm_id = 1495251349346979859; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979971 AND perm_id = 1495251349346979860; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979987 AND perm_id = 1495251349346979863; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979992 AND perm_id = 1495251349346979865; -DELETE FROM "zz_sys_perm_code_perm" WHERE perm_code_id = 1495251349346979993 AND perm_id = 1495251349346979866; - -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/login/getLoginInfo'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/sysRole/listDict'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/sysRole/listDictByIds'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/sysDept/listDict'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/sysDept/listDictByIds'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/sysDept/listDictByParentId'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/login/doLogout'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/login/changePassword'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/login/changeHeadImage'; -DELETE FROM "zz_sys_perm_whitelist" WHERE perm_url = '/admin/upms/login/downloadHeadImage'; -COMMIT; diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/upms-script-pg.sql b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/upms-script-pg.sql deleted file mode 100644 index f89e141b..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/db-scripts/upms-script-pg.sql +++ /dev/null @@ -1,490 +0,0 @@ --- ---------------------------- --- 请仅在下面的数据库链接中执行该脚本。 --- 主数据源 [localhost:5432/zzdemo-single] --- ---------------------------- - --- ---------------------------- --- 部门管理表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_dept"; -CREATE TABLE "zz_sys_dept" ( - "dept_id" int8 NOT NULL, - "parent_id" int8, - "dept_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, - "show_order" int4 NOT NULL, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL, - "deleted_flag" int4 NOT NULL -); -COMMENT ON COLUMN "zz_sys_dept"."dept_id" IS '部门Id'; -COMMENT ON COLUMN "zz_sys_dept"."parent_id" IS '父部门Id'; -COMMENT ON COLUMN "zz_sys_dept"."dept_name" IS '部门名称'; -COMMENT ON COLUMN "zz_sys_dept"."show_order" IS '兄弟部分之间的显示顺序,数字越小越靠前'; -COMMENT ON COLUMN "zz_sys_dept"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_dept"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_dept"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_dept"."update_time" IS '最后更新时间'; -COMMENT ON COLUMN "zz_sys_dept"."deleted_flag" IS '删除标记(1: 正常 -1: 已删除)'; -COMMENT ON TABLE "zz_sys_dept" IS '部门管理表'; - -CREATE INDEX "idx_zz_sys_dept_parent_id" ON "zz_sys_dept" USING btree ( - "parent_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_dept_show_order" ON "zz_sys_dept" USING btree ( - "show_order" "pg_catalog"."int4_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_dept" ADD CONSTRAINT "zz_sys_dept_pkey" PRIMARY KEY ("dept_id"); - --- ---------------------------- --- 部门关联关系表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_dept_relation"; -CREATE TABLE "zz_sys_dept_relation" ( - "parent_dept_id" int8 NOT NULL, - "dept_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_dept_relation"."parent_dept_id" IS '父部门Id'; -COMMENT ON COLUMN "zz_sys_dept_relation"."dept_id" IS '部门Id'; -COMMENT ON TABLE "zz_sys_dept_relation" IS '部门关联关系表'; - -CREATE INDEX "idx_zz_sys_dept_relation_dept_id" ON "zz_sys_dept_relation" USING btree ( - "dept_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_dept_relation" ADD CONSTRAINT "zz_sys_dept_relation_pkey" PRIMARY KEY ("parent_dept_id", "dept_id"); - --- ---------------------------- --- 系统用户表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_user"; -CREATE TABLE "zz_sys_user" ( - "user_id" int8 NOT NULL, - "login_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, - "password" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, - "show_name" varchar(32) COLLATE "pg_catalog"."default" NOT NULL, - "dept_id" int8 NOT NULL, - "user_type" int4 NOT NULL, - "head_image_url" varchar(255) COLLATE "pg_catalog"."default", - "user_status" int4 NOT NULL, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL, - "deleted_flag" int4 NOT NULL -); -COMMENT ON COLUMN "zz_sys_user"."user_id" IS '主键Id'; -COMMENT ON COLUMN "zz_sys_user"."login_name" IS '用户登录名称'; -COMMENT ON COLUMN "zz_sys_user"."password" IS '用户密码'; -COMMENT ON COLUMN "zz_sys_user"."show_name" IS '用户显示名称'; -COMMENT ON COLUMN "zz_sys_user"."dept_id" IS '用户所在部门Id'; -COMMENT ON COLUMN "zz_sys_user"."user_type" IS '用户类型(0: 管理员 1: 系统管理用户 2: 系统业务用户)'; -COMMENT ON COLUMN "zz_sys_user"."head_image_url" IS '用户头像的Url'; -COMMENT ON COLUMN "zz_sys_user"."user_status" IS '状态(0: 正常 1: 锁定)'; -COMMENT ON COLUMN "zz_sys_user"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_user"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_user"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_user"."update_time" IS '最后更新时间'; -COMMENT ON COLUMN "zz_sys_user"."deleted_flag" IS '删除标记(1: 正常 -1: 已删除)'; -COMMENT ON TABLE "zz_sys_user" IS '系统用户表'; - -CREATE INDEX "idx_zz_sys_user_dept_id" ON "zz_sys_user" USING btree ( - "dept_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_user_status" ON "zz_sys_user" USING btree ( - "user_status" "pg_catalog"."int4_ops" ASC NULLS LAST -); -CREATE UNIQUE INDEX "uk_zz_sys_user_login_name" ON "zz_sys_user" USING btree ( - "login_name" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_user" ADD CONSTRAINT "zz_sys_user_pkey" PRIMARY KEY ("user_id"); - --- ---------------------------- --- 系统角色表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_role"; -CREATE TABLE "zz_sys_role" ( - "role_id" int8 NOT NULL, - "role_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL -); -COMMENT ON COLUMN "zz_sys_role"."role_id" IS '主键Id'; -COMMENT ON COLUMN "zz_sys_role"."role_name" IS '角色名称'; -COMMENT ON COLUMN "zz_sys_role"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_role"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_role"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_role"."update_time" IS '更新时间'; -COMMENT ON TABLE "zz_sys_role" IS '系统角色表'; - -ALTER TABLE "zz_sys_role" ADD CONSTRAINT "zz_sys_role_pkey" PRIMARY KEY ("role_id"); - --- ---------------------------- --- 用户与角色对应关系表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_user_role"; -CREATE TABLE "zz_sys_user_role" ( - "user_id" int8 NOT NULL, - "role_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_user_role"."user_id" IS '用户Id'; -COMMENT ON COLUMN "zz_sys_user_role"."role_id" IS '角色Id'; -COMMENT ON TABLE "zz_sys_user_role" IS '用户与角色对应关系表'; - -CREATE INDEX "idx_zz_sys_user_role_role_id" ON "zz_sys_user_role" USING btree ( - "role_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_user_role" ADD CONSTRAINT "zz_sys_user_role_pkey" PRIMARY KEY ("user_id", "role_id"); - --- ---------------------------- --- 菜单和操作权限管理表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_menu"; -CREATE TABLE "zz_sys_menu" ( - "menu_id" int8 NOT NULL, - "parent_id" int8, - "menu_name" varchar(50) COLLATE "pg_catalog"."default" NOT NULL, - "menu_type" int4 NOT NULL, - "form_router_name" varchar(64) COLLATE "pg_catalog"."default", - "online_form_id" int8, - "online_menu_perm_type" int4, - "show_order" int4 NOT NULL, - "icon" varchar(50) COLLATE "pg_catalog"."default", - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL -); -COMMENT ON COLUMN "zz_sys_menu"."menu_id" IS '主键Id'; -COMMENT ON COLUMN "zz_sys_menu"."parent_id" IS '父菜单Id,目录菜单的父菜单为null'; -COMMENT ON COLUMN "zz_sys_menu"."menu_name" IS '菜单显示名称'; -COMMENT ON COLUMN "zz_sys_menu"."menu_type" IS '(0: 目录 1: 菜单 2: 按钮 3: UI片段)'; -COMMENT ON COLUMN "zz_sys_menu"."form_router_name" IS '前端表单路由名称,仅用于menu_type为1的菜单类型'; -COMMENT ON COLUMN "zz_sys_menu"."online_form_id" IS '在线表单主键Id'; -COMMENT ON COLUMN "zz_sys_menu"."online_menu_perm_type" IS '在线表单菜单的权限控制类型'; -COMMENT ON COLUMN "zz_sys_menu"."show_order" IS '菜单显示顺序 (值越小,排序越靠前)'; -COMMENT ON COLUMN "zz_sys_menu"."icon" IS '菜单图标'; -COMMENT ON COLUMN "zz_sys_menu"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_menu"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_menu"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_menu"."update_time" IS '更新时间'; -COMMENT ON TABLE "zz_sys_menu" IS '菜单和操作权限管理表'; - -CREATE INDEX "idx_zz_sys_menu_parent_id" ON "zz_sys_menu" USING btree ( - "parent_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_menu_show_order" ON "zz_sys_menu" USING btree ( - "show_order" "pg_catalog"."int4_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_menu" ADD CONSTRAINT "zz_sys_menu_pkey" PRIMARY KEY ("menu_id"); - --- ---------------------------- --- 角色与菜单对应关系表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_role_menu"; -CREATE TABLE "zz_sys_role_menu" ( - "role_id" int8 NOT NULL, - "menu_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_role_menu"."role_id" IS '角色Id'; -COMMENT ON COLUMN "zz_sys_role_menu"."menu_id" IS '菜单Id'; -COMMENT ON TABLE "zz_sys_role_menu" IS '角色与菜单对应关系表'; - -CREATE INDEX "idx_zz_sys_role_menu_menu_id" ON "zz_sys_role_menu" USING btree ( - "menu_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_role_menu" ADD CONSTRAINT "zz_sys_role_menu_pkey" PRIMARY KEY ("role_id", "menu_id"); - --- ---------------------------- --- 系统权限资源表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_perm_code"; -CREATE TABLE "zz_sys_perm_code" ( - "perm_code_id" int8 NOT NULL, - "parent_id" int8, - "perm_code" varchar(128) COLLATE "pg_catalog"."default" NOT NULL, - "perm_code_type" int4 NOT NULL, - "show_name" varchar(128) COLLATE "pg_catalog"."default" NOT NULL, - "show_order" int4 NOT NULL, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL -); -COMMENT ON COLUMN "zz_sys_perm_code"."perm_code_id" IS '主键Id'; -COMMENT ON COLUMN "zz_sys_perm_code"."parent_id" IS '上级权限字Id'; -COMMENT ON COLUMN "zz_sys_perm_code"."perm_code" IS '权限字标识(一般为有含义的英文字符串)'; -COMMENT ON COLUMN "zz_sys_perm_code"."perm_code_type" IS '类型(0: 表单 1: UI片段 2: 操作)'; -COMMENT ON COLUMN "zz_sys_perm_code"."show_name" IS '显示名称'; -COMMENT ON COLUMN "zz_sys_perm_code"."show_order" IS '显示顺序(数值越小,越靠前)'; -COMMENT ON COLUMN "zz_sys_perm_code"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_perm_code"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_perm_code"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_perm_code"."update_time" IS '更新时间'; -COMMENT ON TABLE "zz_sys_perm_code" IS '系统权限资源表'; - -CREATE INDEX "idx_zz_sys_perm_code_parent_id" ON "zz_sys_perm_code" USING btree ( - "parent_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -CREATE UNIQUE INDEX "uk_zz_sys_perm_code_perm_code" ON "zz_sys_perm_code" USING btree ( - "perm_code" COLLATE "pg_catalog"."default" "pg_catalog"."text_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_perm_code_show_order" ON "zz_sys_perm_code" USING btree ( - "show_order" "pg_catalog"."int4_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_perm_code" ADD CONSTRAINT "zz_sys_perm_code_pkey" PRIMARY KEY ("perm_code_id"); - --- ---------------------------- --- 菜单和权限关系表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_menu_perm_code"; -CREATE TABLE "zz_sys_menu_perm_code" ( - "menu_id" int8 NOT NULL, - "perm_code_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_menu_perm_code"."menu_id" IS '关联菜单Id'; -COMMENT ON COLUMN "zz_sys_menu_perm_code"."perm_code_id" IS '关联权限字Id'; -COMMENT ON TABLE "zz_sys_menu_perm_code" IS '菜单和权限关系表'; - -CREATE INDEX "idx_zz_sys_menu_perm_code_perm_code_id" ON "zz_sys_menu_perm_code" USING btree ( - "perm_code_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_menu_perm_code" ADD CONSTRAINT "zz_sys_menu_perm_code_pkey" PRIMARY KEY ("menu_id", "perm_code_id"); - --- ---------------------------- --- 系统权限模块表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_perm_module"; -CREATE TABLE "zz_sys_perm_module" ( - "module_id" int8 NOT NULL, - "parent_id" int8 DEFAULT 0, - "module_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '', - "module_type" int4 NOT NULL, - "show_order" int4 NOT NULL DEFAULT 0, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL -); -COMMENT ON COLUMN "zz_sys_perm_module"."module_id" IS '权限模块id'; -COMMENT ON COLUMN "zz_sys_perm_module"."parent_id" IS '上级权限模块id'; -COMMENT ON COLUMN "zz_sys_perm_module"."module_name" IS '权限模块名称'; -COMMENT ON COLUMN "zz_sys_perm_module"."module_type" IS '模块类型(0: 普通模块 1: Controller模块)'; -COMMENT ON COLUMN "zz_sys_perm_module"."show_order" IS '权限模块在当前层级下的顺序,由小到大'; -COMMENT ON COLUMN "zz_sys_perm_module"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_perm_module"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_perm_module"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_perm_module"."update_time" IS '更新时间'; -COMMENT ON TABLE "zz_sys_perm_module" IS '系统权限模块表'; - -CREATE INDEX "idx_zz_sys_perm_module_module_type" ON "zz_sys_perm_module" USING btree ( - "module_type" "pg_catalog"."int4_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_perm_module_parent_id" ON "zz_sys_perm_module" USING btree ( - "parent_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_perm_module_show_order" ON "zz_sys_perm_module" USING btree ( - "show_order" "pg_catalog"."int4_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_perm_module" ADD CONSTRAINT "zz_sys_perm_module_pkey" PRIMARY KEY ("module_id"); - --- ---------------------------- --- 系统权限表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_perm"; -CREATE TABLE "zz_sys_perm" ( - "perm_id" int8 NOT NULL, - "module_id" int8 NOT NULL DEFAULT 0, - "perm_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '', - "url" varchar(128) COLLATE "pg_catalog"."default" NOT NULL DEFAULT '', - "show_order" int4 NOT NULL DEFAULT 0, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL -); -COMMENT ON COLUMN "zz_sys_perm"."perm_id" IS '权限id'; -COMMENT ON COLUMN "zz_sys_perm"."module_id" IS '权限所在的权限模块id'; -COMMENT ON COLUMN "zz_sys_perm"."perm_name" IS '权限名称'; -COMMENT ON COLUMN "zz_sys_perm"."url" IS '关联的url'; -COMMENT ON COLUMN "zz_sys_perm"."show_order" IS '权限在当前模块下的顺序,由小到大'; -COMMENT ON COLUMN "zz_sys_perm"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_perm"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_perm"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_perm"."update_time" IS '更新时间'; -COMMENT ON TABLE "zz_sys_perm" IS '系统权限表'; - -CREATE INDEX "idx_zz_sys_perm_module_id" ON "zz_sys_perm" USING btree ( - "module_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_perm_show_order" ON "zz_sys_perm" USING btree ( - "show_order" "pg_catalog"."int4_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_perm" ADD CONSTRAINT "zz_sys_perm_pkey" PRIMARY KEY ("perm_id"); - --- ---------------------------- --- 系统权限字和权限资源关联表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_perm_code_perm"; -CREATE TABLE "zz_sys_perm_code_perm" ( - "perm_code_id" int8 NOT NULL, - "perm_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_perm_code_perm"."perm_code_id" IS '权限字Id'; -COMMENT ON COLUMN "zz_sys_perm_code_perm"."perm_id" IS '权限id'; -COMMENT ON TABLE "zz_sys_perm_code_perm" IS '系统权限字和权限资源关联表'; - -CREATE INDEX "idx_zz_sys_perm_code_perm_perm_id" ON "zz_sys_perm_code_perm" USING btree ( - "perm_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_perm_code_perm" ADD CONSTRAINT "zz_sys_perm_code_perm_pkey" PRIMARY KEY ("perm_code_id", "perm_id"); - --- ---------------------------- --- 权限资源白名单表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_perm_whitelist"; -CREATE TABLE "zz_sys_perm_whitelist" ( - "perm_url" varchar(512) COLLATE "pg_catalog"."default" NOT NULL, - "module_name" varchar(64) COLLATE "pg_catalog"."default", - "perm_name" varchar(64) COLLATE "pg_catalog"."default" -); -COMMENT ON COLUMN "zz_sys_perm_whitelist"."perm_url" IS '权限资源的url'; -COMMENT ON COLUMN "zz_sys_perm_whitelist"."module_name" IS '权限资源所属模块名字(通常是Controller的名字)'; -COMMENT ON COLUMN "zz_sys_perm_whitelist"."perm_name" IS '权限的名称'; -COMMENT ON TABLE "zz_sys_perm_whitelist" IS '权限资源白名单表(认证用户均可访问的url资源)'; - -ALTER TABLE "zz_sys_perm_whitelist" ADD CONSTRAINT "zz_sys_perm_whitelist_pkey" PRIMARY KEY ("perm_url"); - --- ---------------------------- --- 数据权限表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_data_perm"; -CREATE TABLE "zz_sys_data_perm" ( - "data_perm_id" int8 NOT NULL, - "data_perm_name" varchar(64) COLLATE "pg_catalog"."default" NOT NULL, - "rule_type" int2 NOT NULL, - "create_user_id" int8 NOT NULL, - "create_time" timestamp(6) NOT NULL, - "update_user_id" int8 NOT NULL, - "update_time" timestamp(6) NOT NULL -); -COMMENT ON COLUMN "zz_sys_data_perm"."data_perm_id" IS '主键'; -COMMENT ON COLUMN "zz_sys_data_perm"."data_perm_name" IS '显示名称'; -COMMENT ON COLUMN "zz_sys_data_perm"."rule_type" IS '数据权限规则类型(0: 全部可见 1: 只看自己 2: 只看本部门 3: 本部门及子部门 4: 多部门及子部门 5: 自定义部门列表)。'; -COMMENT ON COLUMN "zz_sys_data_perm"."create_user_id" IS '创建者'; -COMMENT ON COLUMN "zz_sys_data_perm"."create_time" IS '创建时间'; -COMMENT ON COLUMN "zz_sys_data_perm"."update_user_id" IS '更新者Id'; -COMMENT ON COLUMN "zz_sys_data_perm"."update_time" IS '更新时间'; -COMMENT ON TABLE "zz_sys_data_perm" IS '数据权限表'; - -CREATE INDEX "idx_zz_sys_data_perm_create_time" ON "zz_sys_data_perm" USING btree ( - "create_time" "pg_catalog"."timestamp_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_data_perm" ADD CONSTRAINT "zz_sys_data_perm_pkey" PRIMARY KEY ("data_perm_id"); - --- ---------------------------- --- 数据权限和用户关联表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_data_perm_user"; -CREATE TABLE "zz_sys_data_perm_user" ( - "data_perm_id" int8 NOT NULL, - "user_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_data_perm_user"."data_perm_id" IS '数据权限Id'; -COMMENT ON COLUMN "zz_sys_data_perm_user"."user_id" IS '用户Id'; -COMMENT ON TABLE "zz_sys_data_perm_user" IS '数据权限和用户关联表'; - -CREATE INDEX "idx_sys_data_perm_user_user_id" ON "zz_sys_data_perm_user" USING btree ( - "user_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_data_perm_user" ADD CONSTRAINT "zz_sys_data_perm_user_pkey" PRIMARY KEY ("data_perm_id", "user_id"); - --- ---------------------------- --- 数据权限和部门关联表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_data_perm_dept"; -CREATE TABLE "zz_sys_data_perm_dept" ( - "data_perm_id" int8 NOT NULL, - "dept_id" int8 NOT NULL -); -COMMENT ON COLUMN "zz_sys_data_perm_dept"."data_perm_id" IS '数据权限Id'; -COMMENT ON COLUMN "zz_sys_data_perm_dept"."dept_id" IS '部门Id'; -COMMENT ON TABLE "zz_sys_data_perm_dept" IS '数据权限和部门关联表'; - -CREATE INDEX "idx_zz_sys_data_perm_dept_dept_id" ON "zz_sys_data_perm_dept" USING btree ( - "dept_id" "pg_catalog"."int8_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_data_perm_dept" ADD CONSTRAINT "zz_sys_data_perm_dept_pkey" PRIMARY KEY ("data_perm_id", "dept_id"); - --- ---------------------------- --- 系统操作日志表 --- ---------------------------- -DROP TABLE IF EXISTS "zz_sys_operation_log"; -CREATE TABLE "zz_sys_operation_log" ( - "log_id" int8 NOT NULL, - "description" varchar(255) COLLATE "pg_catalog"."default", - "operation_type" int4, - "service_name" varchar(128) COLLATE "pg_catalog"."default", - "api_class" varchar(255) COLLATE "pg_catalog"."default", - "api_method" varchar(255) COLLATE "pg_catalog"."default", - "session_id" varchar(255) COLLATE "pg_catalog"."default", - "trace_id" char(32) COLLATE "pg_catalog"."default", - "elapse" int4, - "request_method" varchar(32) COLLATE "pg_catalog"."default", - "request_url" varchar(255) COLLATE "pg_catalog"."default", - "request_arguments" varchar(2000) COLLATE "pg_catalog"."default", - "response_result" varchar(2000) COLLATE "pg_catalog"."default", - "request_ip" varchar(32) COLLATE "pg_catalog"."default", - "success" bool DEFAULT false, - "error_msg" varchar(2000) COLLATE "pg_catalog"."default", - "tenant_id" int8, - "operator_id" int8, - "operator_name" varchar(255) COLLATE "pg_catalog"."default", - "operation_time" timestamp(6) -); -COMMENT ON COLUMN "zz_sys_operation_log"."log_id" IS '主键Id'; -COMMENT ON COLUMN "zz_sys_operation_log"."description" IS '日志描述'; -COMMENT ON COLUMN "zz_sys_operation_log"."operation_type" IS '操作类型'; -COMMENT ON COLUMN "zz_sys_operation_log"."service_name" IS '接口所在服务名称'; -COMMENT ON COLUMN "zz_sys_operation_log"."api_class" IS '调用的controller全类名'; -COMMENT ON COLUMN "zz_sys_operation_log"."api_method" IS '调用的controller中的方法'; -COMMENT ON COLUMN "zz_sys_operation_log"."session_id" IS '用户会话sessionId'; -COMMENT ON COLUMN "zz_sys_operation_log"."trace_id" IS '每次请求的Id'; -COMMENT ON COLUMN "zz_sys_operation_log"."elapse" IS '调用时长'; -COMMENT ON COLUMN "zz_sys_operation_log"."request_method" IS 'HTTP 请求方法,如GET'; -COMMENT ON COLUMN "zz_sys_operation_log"."request_url" IS 'HTTP 请求地址'; -COMMENT ON COLUMN "zz_sys_operation_log"."request_arguments" IS 'controller接口参数'; -COMMENT ON COLUMN "zz_sys_operation_log"."response_result" IS 'controller应答结果'; -COMMENT ON COLUMN "zz_sys_operation_log"."request_ip" IS '请求IP'; -COMMENT ON COLUMN "zz_sys_operation_log"."success" IS '应答状态'; -COMMENT ON COLUMN "zz_sys_operation_log"."error_msg" IS '错误信息'; -COMMENT ON COLUMN "zz_sys_operation_log"."tenant_id" IS '租户Id'; -COMMENT ON COLUMN "zz_sys_operation_log"."operator_id" IS '操作员Id'; -COMMENT ON COLUMN "zz_sys_operation_log"."operator_name" IS '操作员名称'; -COMMENT ON COLUMN "zz_sys_operation_log"."operation_time" IS '操作时间'; -COMMENT ON TABLE "zz_sys_operation_log" IS '系统操作日志表'; - -CREATE INDEX "idx_zz_sys_operation_log_elapse" ON "zz_sys_operation_log" USING btree ( - "elapse" "pg_catalog"."int4_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_operation_log_operation_time" ON "zz_sys_operation_log" USING btree ( - "operation_time" "pg_catalog"."timestamp_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_operation_log_operation_type" ON "zz_sys_operation_log" USING btree ( - "operation_type" "pg_catalog"."int4_ops" ASC NULLS LAST -); -CREATE INDEX "idx_zz_sys_operation_log_trace_id" ON "zz_sys_operation_log" USING btree ( - "trace_id" COLLATE "pg_catalog"."default" "pg_catalog"."bpchar_ops" ASC NULLS LAST -); -ALTER TABLE "zz_sys_operation_log" ADD CONSTRAINT "zz_sys_operation_log_pkey" PRIMARY KEY ("log_id"); - --- ---------------------------- --- 管理员账号数据 --- ---------------------------- -BEGIN; -INSERT INTO "zz_sys_dept" VALUES(1495250233481760770,NULL,'公司总部',1,1495250233473372160,NOW(),1495250233473372160,NOW(),1); -INSERT INTO "zz_sys_user" VALUES(1495250233473372160,'admin','$2a$10$yGxCD/evW6n2Uc5MWS7mHuJ.goP./8VtznZ7ezpkfaFg280pppkW6','管理员',1495250233481760770,0,NULL,0,1495250233473372160,NOW(),1495250233473372160,NOW(),1); -INSERT INTO "zz_sys_dept_relation" VALUES(1495250233481760770,1495250233481760770); -COMMIT; diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/docker-compose.yml b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/docker-compose.yml deleted file mode 100644 index 94903d49..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/docker-compose.yml +++ /dev/null @@ -1,16 +0,0 @@ -version: '3.2' - -services: - - redis: - container_name: redis - build: - context: services/redis/ - args: - - REDIS_VER=4 - ports: - - "6379:6379" - volumes: - - ./services/redis/redis.conf:/usr/local/etc/redis/redis.conf:rw - - ./data/redis:/data:rw - - ./logs/redis:/var/log/:rw diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/Dockerfile b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/Dockerfile deleted file mode 100644 index 924bd9d6..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/Dockerfile +++ /dev/null @@ -1,13 +0,0 @@ -ARG REDIS_VER - -FROM redis:${REDIS_VER} - -COPY redis.conf /usr/local/etc/redis/redis.conf -CMD ["redis-server", "/usr/local/etc/redis/redis.conf"] - -# 设置时区为上海 -ENV TZ=Asia/Shanghai -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone - -# Ubuntu软件源选择中国的服务器 -RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/redis.conf b/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/redis.conf deleted file mode 100644 index 2eecfa5a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-service/zz-resource/docker-files/services/redis/redis.conf +++ /dev/null @@ -1,1307 +0,0 @@ -# Redis configuration file example. -# -# Note that in order to read the configuration file, Redis must be -# started with the file path as first argument: -# -# ./redis-server /path/to/redis.conf - -# Note on units: when memory size is needed, it is possible to specify -# it in the usual form of 1k 5GB 4M and so forth: -# -# 1k => 1000 bytes -# 1kb => 1024 bytes -# 1m => 1000000 bytes -# 1mb => 1024*1024 bytes -# 1g => 1000000000 bytes -# 1gb => 1024*1024*1024 bytes -# -# units are case insensitive so 1GB 1Gb 1gB are all the same. - -################################## INCLUDES ################################### - -# Include one or more other config files here. This is useful if you -# have a standard template that goes to all Redis servers but also need -# to customize a few per-server settings. Include files can include -# other files, so use this wisely. -# -# Notice option "include" won't be rewritten by command "CONFIG REWRITE" -# from admin or Redis Sentinel. Since Redis always uses the last processed -# line as value of a configuration directive, you'd better put includes -# at the beginning of this file to avoid overwriting config change at runtime. -# -# If instead you are interested in using includes to override configuration -# options, it is better to use include as the last line. -# -# include /path/to/local.conf -# include /path/to/other.conf - -################################## MODULES ##################################### - -# Load modules at startup. If the server is not able to load modules -# it will abort. It is possible to use multiple loadmodule directives. -# -# loadmodule /path/to/my_module.so -# loadmodule /path/to/other_module.so - -################################## NETWORK ##################################### - -# By default, if no "bind" configuration directive is specified, Redis listens -# for connections from all the network interfaces available on the server. -# It is possible to listen to just one or multiple selected interfaces using -# the "bind" configuration directive, followed by one or more IP addresses. -# -# Examples: -# -# bind 192.168.1.100 10.0.0.1 -# bind 127.0.0.1 ::1 -# -# ~~~ WARNING ~~~ If the computer running Redis is directly exposed to the -# internet, binding to all the interfaces is dangerous and will expose the -# instance to everybody on the internet. So by default we uncomment the -# following bind directive, that will force Redis to listen only into -# the IPv4 lookback interface address (this means Redis will be able to -# accept connections only from clients running into the same computer it -# is running). -# -# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES -# JUST COMMENT THE FOLLOWING LINE. -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -bind 0.0.0.0 - -# Protected mode is a layer of security protection, in order to avoid that -# Redis instances left open on the internet are accessed and exploited. -# -# When protected mode is on and if: -# -# 1) The server is not binding explicitly to a set of addresses using the -# "bind" directive. -# 2) No password is configured. -# -# The server only accepts connections from clients connecting from the -# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain -# sockets. -# -# By default protected mode is enabled. You should disable it only if -# you are sure you want clients from other hosts to connect to Redis -# even if no authentication is configured, nor a specific set of interfaces -# are explicitly listed using the "bind" directive. -protected-mode yes - -# Accept connections on the specified port, default is 6379 (IANA #815344). -# If port 0 is specified Redis will not listen on a TCP socket. -port 6379 - -# TCP listen() backlog. -# -# In high requests-per-second environments you need an high backlog in order -# to avoid slow clients connections issues. Note that the Linux kernel -# will silently truncate it to the value of /proc/sys/net/core/somaxconn so -# make sure to raise both the value of somaxconn and tcp_max_syn_backlog -# in order to get the desired effect. -tcp-backlog 511 - -# Unix socket. -# -# Specify the path for the Unix socket that will be used to listen for -# incoming connections. There is no default, so Redis will not listen -# on a unix socket when not specified. -# -# unixsocket /tmp/redis.sock -# unixsocketperm 700 - -# Close the connection after a client is idle for N seconds (0 to disable) -timeout 0 - -# TCP keepalive. -# -# If non-zero, use SO_KEEPALIVE to send TCP ACKs to clients in absence -# of communication. This is useful for two reasons: -# -# 1) Detect dead peers. -# 2) Take the connection alive from the point of view of network -# equipment in the middle. -# -# On Linux, the specified value (in seconds) is the period used to send ACKs. -# Note that to close the connection the double of the time is needed. -# On other kernels the period depends on the kernel configuration. -# -# A reasonable value for this option is 300 seconds, which is the new -# Redis default starting with Redis 3.2.1. -tcp-keepalive 300 - -################################# GENERAL ##################################### - -# By default Redis does not run as a daemon. Use 'yes' if you need it. -# Note that Redis will write a pid file in /var/run/redis.pid when daemonized. -daemonize no - -# If you run Redis from upstart or systemd, Redis can interact with your -# supervision tree. Options: -# supervised no - no supervision interaction -# supervised upstart - signal upstart by putting Redis into SIGSTOP mode -# supervised systemd - signal systemd by writing READY=1 to $NOTIFY_SOCKET -# supervised auto - detect upstart or systemd method based on -# UPSTART_JOB or NOTIFY_SOCKET environment variables -# Note: these supervision methods only signal "process is ready." -# They do not enable continuous liveness pings back to your supervisor. -supervised no - -# If a pid file is specified, Redis writes it where specified at startup -# and removes it at exit. -# -# When the server runs non daemonized, no pid file is created if none is -# specified in the configuration. When the server is daemonized, the pid file -# is used even if not specified, defaulting to "/var/run/redis.pid". -# -# Creating a pid file is best effort: if Redis is not able to create it -# nothing bad happens, the server will start and run normally. -pidfile /var/run/redis_6379.pid - -# Specify the server verbosity level. -# This can be one of: -# debug (a lot of information, useful for development/testing) -# verbose (many rarely useful info, but not a mess like the debug level) -# notice (moderately verbose, what you want in production probably) -# warning (only very important / critical messages are logged) -loglevel notice - -# Specify the log file name. Also the empty string can be used to force -# Redis to log on the standard output. Note that if you use standard -# output for logging but daemonize, logs will be sent to /dev/null -logfile /var/log/redis_6379.log - -# To enable logging to the system logger, just set 'syslog-enabled' to yes, -# and optionally update the other syslog parameters to suit your needs. -# syslog-enabled no - -# Specify the syslog identity. -# syslog-ident redis - -# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7. -# syslog-facility local0 - -# Set the number of databases. The default database is DB 0, you can select -# a different one on a per-connection basis using SELECT where -# dbid is a number between 0 and 'databases'-1 -databases 16 - -# By default Redis shows an ASCII art logo only when started to log to the -# standard output and if the standard output is a TTY. Basically this means -# that normally a logo is displayed only in interactive sessions. -# -# However it is possible to force the pre-4.0 behavior and always show a -# ASCII art logo in startup logs by setting the following option to yes. -always-show-logo yes - -################################ SNAPSHOTTING ################################ -# -# Save the DB on disk: -# -# save -# -# Will save the DB if both the given number of seconds and the given -# number of write operations against the DB occurred. -# -# In the example below the behaviour will be to save: -# after 900 sec (15 min) if at least 1 key changed -# after 300 sec (5 min) if at least 10 keys changed -# after 60 sec if at least 10000 keys changed -# -# Note: you can disable saving completely by commenting out all "save" lines. -# -# It is also possible to remove all the previously configured save -# points by adding a save directive with a single empty string argument -# like in the following example: -# -# save "" - -save 900 1 -save 300 10 -save 60 10000 - -# By default Redis will stop accepting writes if RDB snapshots are enabled -# (at least one save point) and the latest background save failed. -# This will make the user aware (in a hard way) that data is not persisting -# on disk properly, otherwise chances are that no one will notice and some -# disaster will happen. -# -# If the background saving process will start working again Redis will -# automatically allow writes again. -# -# However if you have setup your proper monitoring of the Redis server -# and persistence, you may want to disable this feature so that Redis will -# continue to work as usual even if there are problems with disk, -# permissions, and so forth. -stop-writes-on-bgsave-error yes - -# Compress string objects using LZF when dump .rdb databases? -# For default that's set to 'yes' as it's almost always a win. -# If you want to save some CPU in the saving child set it to 'no' but -# the dataset will likely be bigger if you have compressible values or keys. -rdbcompression yes - -# Since version 5 of RDB a CRC64 checksum is placed at the end of the file. -# This makes the format more resistant to corruption but there is a performance -# hit to pay (around 10%) when saving and loading RDB files, so you can disable it -# for maximum performances. -# -# RDB files created with checksum disabled have a checksum of zero that will -# tell the loading code to skip the check. -rdbchecksum yes - -# The filename where to dump the DB -dbfilename dump.rdb - -# The working directory. -# -# The DB will be written inside this directory, with the filename specified -# above using the 'dbfilename' configuration directive. -# -# The Append Only File will also be created inside this directory. -# -# Note that you must specify a directory here, not a file name. -dir ./ - -################################# REPLICATION ################################# - -# Master-Slave replication. Use slaveof to make a Redis instance a copy of -# another Redis server. A few things to understand ASAP about Redis replication. -# -# 1) Redis replication is asynchronous, but you can configure a master to -# stop accepting writes if it appears to be not connected with at least -# a given number of slaves. -# 2) Redis slaves are able to perform a partial resynchronization with the -# master if the replication link is lost for a relatively small amount of -# time. You may want to configure the replication backlog size (see the next -# sections of this file) with a sensible value depending on your needs. -# 3) Replication is automatic and does not need user intervention. After a -# network partition slaves automatically try to reconnect to masters -# and resynchronize with them. -# -# slaveof - -# If the master is password protected (using the "requirepass" configuration -# directive below) it is possible to tell the slave to authenticate before -# starting the replication synchronization process, otherwise the master will -# refuse the slave request. -# -# masterauth - -# When a slave loses its connection with the master, or when the replication -# is still in progress, the slave can act in two different ways: -# -# 1) if slave-serve-stale-data is set to 'yes' (the default) the slave will -# still reply to client requests, possibly with out of date data, or the -# data set may just be empty if this is the first synchronization. -# -# 2) if slave-serve-stale-data is set to 'no' the slave will reply with -# an error "SYNC with master in progress" to all the kind of commands -# but to INFO and SLAVEOF. -# -slave-serve-stale-data yes - -# You can configure a slave instance to accept writes or not. Writing against -# a slave instance may be useful to store some ephemeral data (because data -# written on a slave will be easily deleted after resync with the master) but -# may also cause problems if clients are writing to it because of a -# misconfiguration. -# -# Since Redis 2.6 by default slaves are read-only. -# -# Note: read only slaves are not designed to be exposed to untrusted clients -# on the internet. It's just a protection layer against misuse of the instance. -# Still a read only slave exports by default all the administrative commands -# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve -# security of read only slaves using 'rename-command' to shadow all the -# administrative / dangerous commands. -slave-read-only yes - -# Replication SYNC strategy: disk or socket. -# -# ------------------------------------------------------- -# WARNING: DISKLESS REPLICATION IS EXPERIMENTAL CURRENTLY -# ------------------------------------------------------- -# -# New slaves and reconnecting slaves that are not able to continue the replication -# process just receiving differences, need to do what is called a "full -# synchronization". An RDB file is transmitted from the master to the slaves. -# The transmission can happen in two different ways: -# -# 1) Disk-backed: The Redis master creates a new process that writes the RDB -# file on disk. Later the file is transferred by the parent -# process to the slaves incrementally. -# 2) Diskless: The Redis master creates a new process that directly writes the -# RDB file to slave sockets, without touching the disk at all. -# -# With disk-backed replication, while the RDB file is generated, more slaves -# can be queued and served with the RDB file as soon as the current child producing -# the RDB file finishes its work. With diskless replication instead once -# the transfer starts, new slaves arriving will be queued and a new transfer -# will start when the current one terminates. -# -# When diskless replication is used, the master waits a configurable amount of -# time (in seconds) before starting the transfer in the hope that multiple slaves -# will arrive and the transfer can be parallelized. -# -# With slow disks and fast (large bandwidth) networks, diskless replication -# works better. -repl-diskless-sync no - -# When diskless replication is enabled, it is possible to configure the delay -# the server waits in order to spawn the child that transfers the RDB via socket -# to the slaves. -# -# This is important since once the transfer starts, it is not possible to serve -# new slaves arriving, that will be queued for the next RDB transfer, so the server -# waits a delay in order to let more slaves arrive. -# -# The delay is specified in seconds, and by default is 5 seconds. To disable -# it entirely just set it to 0 seconds and the transfer will start ASAP. -repl-diskless-sync-delay 5 - -# Slaves send PINGs to server in a predefined interval. It's possible to change -# this interval with the repl_ping_slave_period option. The default value is 10 -# seconds. -# -# repl-ping-slave-period 10 - -# The following option sets the replication timeout for: -# -# 1) Bulk transfer I/O during SYNC, from the point of view of slave. -# 2) Master timeout from the point of view of slaves (data, pings). -# 3) Slave timeout from the point of view of masters (REPLCONF ACK pings). -# -# It is important to make sure that this value is greater than the value -# specified for repl-ping-slave-period otherwise a timeout will be detected -# every time there is low traffic between the master and the slave. -# -# repl-timeout 60 - -# Disable TCP_NODELAY on the slave socket after SYNC? -# -# If you select "yes" Redis will use a smaller number of TCP packets and -# less bandwidth to send data to slaves. But this can add a delay for -# the data to appear on the slave side, up to 40 milliseconds with -# Linux kernels using a default configuration. -# -# If you select "no" the delay for data to appear on the slave side will -# be reduced but more bandwidth will be used for replication. -# -# By default we optimize for low latency, but in very high traffic conditions -# or when the master and slaves are many hops away, turning this to "yes" may -# be a good idea. -repl-disable-tcp-nodelay no - -# Set the replication backlog size. The backlog is a buffer that accumulates -# slave data when slaves are disconnected for some time, so that when a slave -# wants to reconnect again, often a full resync is not needed, but a partial -# resync is enough, just passing the portion of data the slave missed while -# disconnected. -# -# The bigger the replication backlog, the longer the time the slave can be -# disconnected and later be able to perform a partial resynchronization. -# -# The backlog is only allocated once there is at least a slave connected. -# -# repl-backlog-size 1mb - -# After a master has no longer connected slaves for some time, the backlog -# will be freed. The following option configures the amount of seconds that -# need to elapse, starting from the time the last slave disconnected, for -# the backlog buffer to be freed. -# -# Note that slaves never free the backlog for timeout, since they may be -# promoted to masters later, and should be able to correctly "partially -# resynchronize" with the slaves: hence they should always accumulate backlog. -# -# A value of 0 means to never release the backlog. -# -# repl-backlog-ttl 3600 - -# The slave priority is an integer number published by Redis in the INFO output. -# It is used by Redis Sentinel in order to select a slave to promote into a -# master if the master is no longer working correctly. -# -# A slave with a low priority number is considered better for promotion, so -# for instance if there are three slaves with priority 10, 100, 25 Sentinel will -# pick the one with priority 10, that is the lowest. -# -# However a special priority of 0 marks the slave as not able to perform the -# role of master, so a slave with priority of 0 will never be selected by -# Redis Sentinel for promotion. -# -# By default the priority is 100. -slave-priority 100 - -# It is possible for a master to stop accepting writes if there are less than -# N slaves connected, having a lag less or equal than M seconds. -# -# The N slaves need to be in "online" state. -# -# The lag in seconds, that must be <= the specified value, is calculated from -# the last ping received from the slave, that is usually sent every second. -# -# This option does not GUARANTEE that N replicas will accept the write, but -# will limit the window of exposure for lost writes in case not enough slaves -# are available, to the specified number of seconds. -# -# For example to require at least 3 slaves with a lag <= 10 seconds use: -# -# min-slaves-to-write 3 -# min-slaves-max-lag 10 -# -# Setting one or the other to 0 disables the feature. -# -# By default min-slaves-to-write is set to 0 (feature disabled) and -# min-slaves-max-lag is set to 10. - -# A Redis master is able to list the address and port of the attached -# slaves in different ways. For example the "INFO replication" section -# offers this information, which is used, among other tools, by -# Redis Sentinel in order to discover slave instances. -# Another place where this info is available is in the output of the -# "ROLE" command of a master. -# -# The listed IP and address normally reported by a slave is obtained -# in the following way: -# -# IP: The address is auto detected by checking the peer address -# of the socket used by the slave to connect with the master. -# -# Port: The port is communicated by the slave during the replication -# handshake, and is normally the port that the slave is using to -# list for connections. -# -# However when port forwarding or Network Address Translation (NAT) is -# used, the slave may be actually reachable via different IP and port -# pairs. The following two options can be used by a slave in order to -# report to its master a specific set of IP and port, so that both INFO -# and ROLE will report those values. -# -# There is no need to use both the options if you need to override just -# the port or the IP address. -# -# slave-announce-ip 5.5.5.5 -# slave-announce-port 1234 - -################################## SECURITY ################################### - -# Require clients to issue AUTH before processing any other -# commands. This might be useful in environments in which you do not trust -# others with access to the host running redis-server. -# -# This should stay commented out for backward compatibility and because most -# people do not need auth (e.g. they run their own servers). -# -# Warning: since Redis is pretty fast an outside user can try up to -# 150k passwords per second against a good box. This means that you should -# use a very strong password otherwise it will be very easy to break. -# -# requirepass foobared - -# Command renaming. -# -# It is possible to change the name of dangerous commands in a shared -# environment. For instance the CONFIG command may be renamed into something -# hard to guess so that it will still be available for internal-use tools -# but not available for general clients. -# -# Example: -# -# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 -# -# It is also possible to completely kill a command by renaming it into -# an empty string: -# -# rename-command CONFIG "" -# -# Please note that changing the name of commands that are logged into the -# AOF file or transmitted to slaves may cause problems. - -################################### CLIENTS #################################### - -# Set the max number of connected clients at the same time. By default -# this limit is set to 10000 clients, however if the Redis server is not -# able to configure the process file limit to allow for the specified limit -# the max number of allowed clients is set to the current file limit -# minus 32 (as Redis reserves a few file descriptors for internal uses). -# -# Once the limit is reached Redis will close all the new connections sending -# an error 'max number of clients reached'. -# -# maxclients 10000 - -############################## MEMORY MANAGEMENT ################################ - -# Set a memory usage limit to the specified amount of bytes. -# When the memory limit is reached Redis will try to remove keys -# according to the eviction policy selected (see maxmemory-policy). -# -# If Redis can't remove keys according to the policy, or if the policy is -# set to 'noeviction', Redis will start to reply with errors to commands -# that would use more memory, like SET, LPUSH, and so on, and will continue -# to reply to read-only commands like GET. -# -# This option is usually useful when using Redis as an LRU or LFU cache, or to -# set a hard memory limit for an instance (using the 'noeviction' policy). -# -# WARNING: If you have slaves attached to an instance with maxmemory on, -# the size of the output buffers needed to feed the slaves are subtracted -# from the used memory count, so that network problems / resyncs will -# not trigger a loop where keys are evicted, and in turn the output -# buffer of slaves is full with DELs of keys evicted triggering the deletion -# of more keys, and so forth until the database is completely emptied. -# -# In short... if you have slaves attached it is suggested that you set a lower -# limit for maxmemory so that there is some free RAM on the system for slave -# output buffers (but this is not needed if the policy is 'noeviction'). -# -# maxmemory - -# MAXMEMORY POLICY: how Redis will select what to remove when maxmemory -# is reached. You can select among five behaviors: -# -# volatile-lru -> Evict using approximated LRU among the keys with an expire set. -# allkeys-lru -> Evict any key using approximated LRU. -# volatile-lfu -> Evict using approximated LFU among the keys with an expire set. -# allkeys-lfu -> Evict any key using approximated LFU. -# volatile-random -> Remove a random key among the ones with an expire set. -# allkeys-random -> Remove a random key, any key. -# volatile-ttl -> Remove the key with the nearest expire time (minor TTL) -# noeviction -> Don't evict anything, just return an error on write operations. -# -# LRU means Least Recently Used -# LFU means Least Frequently Used -# -# Both LRU, LFU and volatile-ttl are implemented using approximated -# randomized algorithms. -# -# Note: with any of the above policies, Redis will return an error on write -# operations, when there are no suitable keys for eviction. -# -# At the date of writing these commands are: set setnx setex append -# incr decr rpush lpush rpushx lpushx linsert lset rpoplpush sadd -# sinter sinterstore sunion sunionstore sdiff sdiffstore zadd zincrby -# zunionstore zinterstore hset hsetnx hmset hincrby incrby decrby -# getset mset msetnx exec sort -# -# The default is: -# -# maxmemory-policy noeviction - -# LRU, LFU and minimal TTL algorithms are not precise algorithms but approximated -# algorithms (in order to save memory), so you can tune it for speed or -# accuracy. For default Redis will check five keys and pick the one that was -# used less recently, you can change the sample size using the following -# configuration directive. -# -# The default of 5 produces good enough results. 10 Approximates very closely -# true LRU but costs more CPU. 3 is faster but not very accurate. -# -# maxmemory-samples 5 - -############################# LAZY FREEING #################################### - -# Redis has two primitives to delete keys. One is called DEL and is a blocking -# deletion of the object. It means that the server stops processing new commands -# in order to reclaim all the memory associated with an object in a synchronous -# way. If the key deleted is associated with a small object, the time needed -# in order to execute the DEL command is very small and comparable to most other -# O(1) or O(log_N) commands in Redis. However if the key is associated with an -# aggregated value containing millions of elements, the server can block for -# a long time (even seconds) in order to complete the operation. -# -# For the above reasons Redis also offers non blocking deletion primitives -# such as UNLINK (non blocking DEL) and the ASYNC option of FLUSHALL and -# FLUSHDB commands, in order to reclaim memory in background. Those commands -# are executed in constant time. Another thread will incrementally free the -# object in the background as fast as possible. -# -# DEL, UNLINK and ASYNC option of FLUSHALL and FLUSHDB are user-controlled. -# It's up to the design of the application to understand when it is a good -# idea to use one or the other. However the Redis server sometimes has to -# delete keys or flush the whole database as a side effect of other operations. -# Specifically Redis deletes objects independently of a user call in the -# following scenarios: -# -# 1) On eviction, because of the maxmemory and maxmemory policy configurations, -# in order to make room for new data, without going over the specified -# memory limit. -# 2) Because of expire: when a key with an associated time to live (see the -# EXPIRE command) must be deleted from memory. -# 3) Because of a side effect of a command that stores data on a key that may -# already exist. For example the RENAME command may delete the old key -# content when it is replaced with another one. Similarly SUNIONSTORE -# or SORT with STORE option may delete existing keys. The SET command -# itself removes any old content of the specified key in order to replace -# it with the specified string. -# 4) During replication, when a slave performs a full resynchronization with -# its master, the content of the whole database is removed in order to -# load the RDB file just transfered. -# -# In all the above cases the default is to delete objects in a blocking way, -# like if DEL was called. However you can configure each case specifically -# in order to instead release memory in a non-blocking way like if UNLINK -# was called, using the following configuration directives: - -lazyfree-lazy-eviction no -lazyfree-lazy-expire no -lazyfree-lazy-server-del no -slave-lazy-flush no - -############################## APPEND ONLY MODE ############################### - -# By default Redis asynchronously dumps the dataset on disk. This mode is -# good enough in many applications, but an issue with the Redis process or -# a power outage may result into a few minutes of writes lost (depending on -# the configured save points). -# -# The Append Only File is an alternative persistence mode that provides -# much better durability. For instance using the default data fsync policy -# (see later in the config file) Redis can lose just one second of writes in a -# dramatic event like a server power outage, or a single write if something -# wrong with the Redis process itself happens, but the operating system is -# still running correctly. -# -# AOF and RDB persistence can be enabled at the same time without problems. -# If the AOF is enabled on startup Redis will load the AOF, that is the file -# with the better durability guarantees. -# -# Please check http://redis.io/topics/persistence for more information. - -appendonly no - -# The name of the append only file (default: "appendonly.aof") - -appendfilename "appendonly.aof" - -# The fsync() call tells the Operating System to actually write data on disk -# instead of waiting for more data in the output buffer. Some OS will really flush -# data on disk, some other OS will just try to do it ASAP. -# -# Redis supports three different modes: -# -# no: don't fsync, just let the OS flush the data when it wants. Faster. -# always: fsync after every write to the append only log. Slow, Safest. -# everysec: fsync only one time every second. Compromise. -# -# The default is "everysec", as that's usually the right compromise between -# speed and data safety. It's up to you to understand if you can relax this to -# "no" that will let the operating system flush the output buffer when -# it wants, for better performances (but if you can live with the idea of -# some data loss consider the default persistence mode that's snapshotting), -# or on the contrary, use "always" that's very slow but a bit safer than -# everysec. -# -# More details please check the following article: -# http://antirez.com/post/redis-persistence-demystified.html -# -# If unsure, use "everysec". - -# appendfsync always -appendfsync everysec -# appendfsync no - -# When the AOF fsync policy is set to always or everysec, and a background -# saving process (a background save or AOF log background rewriting) is -# performing a lot of I/O against the disk, in some Linux configurations -# Redis may block too long on the fsync() call. Note that there is no fix for -# this currently, as even performing fsync in a different thread will block -# our synchronous write(2) call. -# -# In order to mitigate this problem it's possible to use the following option -# that will prevent fsync() from being called in the main process while a -# BGSAVE or BGREWRITEAOF is in progress. -# -# This means that while another child is saving, the durability of Redis is -# the same as "appendfsync none". In practical terms, this means that it is -# possible to lose up to 30 seconds of log in the worst scenario (with the -# default Linux settings). -# -# If you have latency problems turn this to "yes". Otherwise leave it as -# "no" that is the safest pick from the point of view of durability. - -no-appendfsync-on-rewrite no - -# Automatic rewrite of the append only file. -# Redis is able to automatically rewrite the log file implicitly calling -# BGREWRITEAOF when the AOF log size grows by the specified percentage. -# -# This is how it works: Redis remembers the size of the AOF file after the -# latest rewrite (if no rewrite has happened since the restart, the size of -# the AOF at startup is used). -# -# This base size is compared to the current size. If the current size is -# bigger than the specified percentage, the rewrite is triggered. Also -# you need to specify a minimal size for the AOF file to be rewritten, this -# is useful to avoid rewriting the AOF file even if the percentage increase -# is reached but it is still pretty small. -# -# Specify a percentage of zero in order to disable the automatic AOF -# rewrite feature. - -auto-aof-rewrite-percentage 100 -auto-aof-rewrite-min-size 64mb - -# An AOF file may be found to be truncated at the end during the Redis -# startup process, when the AOF data gets loaded back into memory. -# This may happen when the system where Redis is running -# crashes, especially when an ext4 filesystem is mounted without the -# data=ordered option (however this can't happen when Redis itself -# crashes or aborts but the operating system still works correctly). -# -# Redis can either exit with an error when this happens, or load as much -# data as possible (the default now) and start if the AOF file is found -# to be truncated at the end. The following option controls this behavior. -# -# If aof-load-truncated is set to yes, a truncated AOF file is loaded and -# the Redis server starts emitting a log to inform the user of the event. -# Otherwise if the option is set to no, the server aborts with an error -# and refuses to start. When the option is set to no, the user requires -# to fix the AOF file using the "redis-check-aof" utility before to restart -# the server. -# -# Note that if the AOF file will be found to be corrupted in the middle -# the server will still exit with an error. This option only applies when -# Redis will try to read more data from the AOF file but not enough bytes -# will be found. -aof-load-truncated yes - -# When rewriting the AOF file, Redis is able to use an RDB preamble in the -# AOF file for faster rewrites and recoveries. When this option is turned -# on the rewritten AOF file is composed of two different stanzas: -# -# [RDB file][AOF tail] -# -# When loading Redis recognizes that the AOF file starts with the "REDIS" -# string and loads the prefixed RDB file, and continues loading the AOF -# tail. -# -# This is currently turned off by default in order to avoid the surprise -# of a format change, but will at some point be used as the default. -aof-use-rdb-preamble no - -################################ LUA SCRIPTING ############################### - -# Max execution time of a Lua script in milliseconds. -# -# If the maximum execution time is reached Redis will log that a script is -# still in execution after the maximum allowed time and will start to -# reply to queries with an error. -# -# When a long running script exceeds the maximum execution time only the -# SCRIPT KILL and SHUTDOWN NOSAVE commands are available. The first can be -# used to stop a script that did not yet called write commands. The second -# is the only way to shut down the server in the case a write command was -# already issued by the script but the user doesn't want to wait for the natural -# termination of the script. -# -# Set it to 0 or a negative value for unlimited execution without warnings. -lua-time-limit 5000 - -################################ REDIS CLUSTER ############################### -# -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# WARNING EXPERIMENTAL: Redis Cluster is considered to be stable code, however -# in order to mark it as "mature" we need to wait for a non trivial percentage -# of users to deploy it in production. -# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -# -# Normal Redis instances can't be part of a Redis Cluster; only nodes that are -# started as cluster nodes can. In order to start a Redis instance as a -# cluster node enable the cluster support uncommenting the following: -# -# cluster-enabled yes - -# Every cluster node has a cluster configuration file. This file is not -# intended to be edited by hand. It is created and updated by Redis nodes. -# Every Redis Cluster node requires a different cluster configuration file. -# Make sure that instances running in the same system do not have -# overlapping cluster configuration file names. -# -# cluster-config-file nodes-6379.conf - -# Cluster node timeout is the amount of milliseconds a node must be unreachable -# for it to be considered in failure state. -# Most other internal time limits are multiple of the node timeout. -# -# cluster-node-timeout 15000 - -# A slave of a failing master will avoid to start a failover if its data -# looks too old. -# -# There is no simple way for a slave to actually have an exact measure of -# its "data age", so the following two checks are performed: -# -# 1) If there are multiple slaves able to failover, they exchange messages -# in order to try to give an advantage to the slave with the best -# replication offset (more data from the master processed). -# Slaves will try to get their rank by offset, and apply to the start -# of the failover a delay proportional to their rank. -# -# 2) Every single slave computes the time of the last interaction with -# its master. This can be the last ping or command received (if the master -# is still in the "connected" state), or the time that elapsed since the -# disconnection with the master (if the replication link is currently down). -# If the last interaction is too old, the slave will not try to failover -# at all. -# -# The point "2" can be tuned by user. Specifically a slave will not perform -# the failover if, since the last interaction with the master, the time -# elapsed is greater than: -# -# (node-timeout * slave-validity-factor) + repl-ping-slave-period -# -# So for example if node-timeout is 30 seconds, and the slave-validity-factor -# is 10, and assuming a default repl-ping-slave-period of 10 seconds, the -# slave will not try to failover if it was not able to talk with the master -# for longer than 310 seconds. -# -# A large slave-validity-factor may allow slaves with too old data to failover -# a master, while a too small value may prevent the cluster from being able to -# elect a slave at all. -# -# For maximum availability, it is possible to set the slave-validity-factor -# to a value of 0, which means, that slaves will always try to failover the -# master regardless of the last time they interacted with the master. -# (However they'll always try to apply a delay proportional to their -# offset rank). -# -# Zero is the only value able to guarantee that when all the partitions heal -# the cluster will always be able to continue. -# -# cluster-slave-validity-factor 10 - -# Cluster slaves are able to migrate to orphaned masters, that are masters -# that are left without working slaves. This improves the cluster ability -# to resist to failures as otherwise an orphaned master can't be failed over -# in case of failure if it has no working slaves. -# -# Slaves migrate to orphaned masters only if there are still at least a -# given number of other working slaves for their old master. This number -# is the "migration barrier". A migration barrier of 1 means that a slave -# will migrate only if there is at least 1 other working slave for its master -# and so forth. It usually reflects the number of slaves you want for every -# master in your cluster. -# -# Default is 1 (slaves migrate only if their masters remain with at least -# one slave). To disable migration just set it to a very large value. -# A value of 0 can be set but is useful only for debugging and dangerous -# in production. -# -# cluster-migration-barrier 1 - -# By default Redis Cluster nodes stop accepting queries if they detect there -# is at least an hash slot uncovered (no available node is serving it). -# This way if the cluster is partially down (for example a range of hash slots -# are no longer covered) all the cluster becomes, eventually, unavailable. -# It automatically returns available as soon as all the slots are covered again. -# -# However sometimes you want the subset of the cluster which is working, -# to continue to accept queries for the part of the key space that is still -# covered. In order to do so, just set the cluster-require-full-coverage -# option to no. -# -# cluster-require-full-coverage yes - -# In order to setup your cluster make sure to read the documentation -# available at http://redis.io web site. - -########################## CLUSTER DOCKER/NAT support ######################## - -# In certain deployments, Redis Cluster nodes address discovery fails, because -# addresses are NAT-ted or because ports are forwarded (the typical case is -# Docker and other containers). -# -# In order to make Redis Cluster working in such environments, a static -# configuration where each node knows its public address is needed. The -# following two options are used for this scope, and are: -# -# * cluster-announce-ip -# * cluster-announce-port -# * cluster-announce-bus-port -# -# Each instruct the node about its address, client port, and cluster message -# bus port. The information is then published in the header of the bus packets -# so that other nodes will be able to correctly map the address of the node -# publishing the information. -# -# If the above options are not used, the normal Redis Cluster auto-detection -# will be used instead. -# -# Note that when remapped, the bus port may not be at the fixed offset of -# clients port + 10000, so you can specify any port and bus-port depending -# on how they get remapped. If the bus-port is not set, a fixed offset of -# 10000 will be used as usually. -# -# Example: -# -# cluster-announce-ip 10.1.1.5 -# cluster-announce-port 6379 -# cluster-announce-bus-port 6380 - -################################## SLOW LOG ################################### - -# The Redis Slow Log is a system to log queries that exceeded a specified -# execution time. The execution time does not include the I/O operations -# like talking with the client, sending the reply and so forth, -# but just the time needed to actually execute the command (this is the only -# stage of command execution where the thread is blocked and can not serve -# other requests in the meantime). -# -# You can configure the slow log with two parameters: one tells Redis -# what is the execution time, in microseconds, to exceed in order for the -# command to get logged, and the other parameter is the length of the -# slow log. When a new command is logged the oldest one is removed from the -# queue of logged commands. - -# The following time is expressed in microseconds, so 1000000 is equivalent -# to one second. Note that a negative number disables the slow log, while -# a value of zero forces the logging of every command. -slowlog-log-slower-than 10000 - -# There is no limit to this length. Just be aware that it will consume memory. -# You can reclaim memory used by the slow log with SLOWLOG RESET. -slowlog-max-len 128 - -################################ LATENCY MONITOR ############################## - -# The Redis latency monitoring subsystem samples different operations -# at runtime in order to collect data related to possible sources of -# latency of a Redis instance. -# -# Via the LATENCY command this information is available to the user that can -# print graphs and obtain reports. -# -# The system only logs operations that were performed in a time equal or -# greater than the amount of milliseconds specified via the -# latency-monitor-threshold configuration directive. When its value is set -# to zero, the latency monitor is turned off. -# -# By default latency monitoring is disabled since it is mostly not needed -# if you don't have latency issues, and collecting data has a performance -# impact, that while very small, can be measured under big load. Latency -# monitoring can easily be enabled at runtime using the command -# "CONFIG SET latency-monitor-threshold " if needed. -latency-monitor-threshold 0 - -############################# EVENT NOTIFICATION ############################## - -# Redis can notify Pub/Sub clients about events happening in the key space. -# This feature is documented at http://redis.io/topics/notifications -# -# For instance if keyspace events notification is enabled, and a client -# performs a DEL operation on key "foo" stored in the Database 0, two -# messages will be published via Pub/Sub: -# -# PUBLISH __keyspace@0__:foo del -# PUBLISH __keyevent@0__:del foo -# -# It is possible to select the events that Redis will notify among a set -# of classes. Every class is identified by a single character: -# -# K Keyspace events, published with __keyspace@__ prefix. -# E Keyevent events, published with __keyevent@__ prefix. -# g Generic commands (non-type specific) like DEL, EXPIRE, RENAME, ... -# $ String commands -# l List commands -# s Set commands -# h Hash commands -# z Sorted set commands -# x Expired events (events generated every time a key expires) -# e Evicted events (events generated when a key is evicted for maxmemory) -# A Alias for g$lshzxe, so that the "AKE" string means all the events. -# -# The "notify-keyspace-events" takes as argument a string that is composed -# of zero or multiple characters. The empty string means that notifications -# are disabled. -# -# Example: to enable list and generic events, from the point of view of the -# event name, use: -# -# notify-keyspace-events Elg -# -# Example 2: to get the stream of the expired keys subscribing to channel -# name __keyevent@0__:expired use: -# -# notify-keyspace-events Ex -# -# By default all notifications are disabled because most users don't need -# this feature and the feature has some overhead. Note that if you don't -# specify at least one of K or E, no events will be delivered. -notify-keyspace-events "" - -############################### ADVANCED CONFIG ############################### - -# Hashes are encoded using a memory efficient data structure when they have a -# small number of entries, and the biggest entry does not exceed a given -# threshold. These thresholds can be configured using the following directives. -hash-max-ziplist-entries 512 -hash-max-ziplist-value 64 - -# Lists are also encoded in a special way to save a lot of space. -# The number of entries allowed per internal list node can be specified -# as a fixed maximum size or a maximum number of elements. -# For a fixed maximum size, use -5 through -1, meaning: -# -5: max size: 64 Kb <-- not recommended for normal workloads -# -4: max size: 32 Kb <-- not recommended -# -3: max size: 16 Kb <-- probably not recommended -# -2: max size: 8 Kb <-- good -# -1: max size: 4 Kb <-- good -# Positive numbers mean store up to _exactly_ that number of elements -# per list node. -# The highest performing option is usually -2 (8 Kb size) or -1 (4 Kb size), -# but if your use case is unique, adjust the settings as necessary. -list-max-ziplist-size -2 - -# Lists may also be compressed. -# Compress depth is the number of quicklist ziplist nodes from *each* side of -# the list to *exclude* from compression. The head and tail of the list -# are always uncompressed for fast push/pop operations. Settings are: -# 0: disable all list compression -# 1: depth 1 means "don't start compressing until after 1 node into the list, -# going from either the head or tail" -# So: [head]->node->node->...->node->[tail] -# [head], [tail] will always be uncompressed; inner nodes will compress. -# 2: [head]->[next]->node->node->...->node->[prev]->[tail] -# 2 here means: don't compress head or head->next or tail->prev or tail, -# but compress all nodes between them. -# 3: [head]->[next]->[next]->node->node->...->node->[prev]->[prev]->[tail] -# etc. -list-compress-depth 0 - -# Sets have a special encoding in just one case: when a set is composed -# of just strings that happen to be integers in radix 10 in the range -# of 64 bit signed integers. -# The following configuration setting sets the limit in the size of the -# set in order to use this special memory saving encoding. -set-max-intset-entries 512 - -# Similarly to hashes and lists, sorted sets are also specially encoded in -# order to save a lot of space. This encoding is only used when the length and -# elements of a sorted set are below the following limits: -zset-max-ziplist-entries 128 -zset-max-ziplist-value 64 - -# HyperLogLog sparse representation bytes limit. The limit includes the -# 16 bytes header. When an HyperLogLog using the sparse representation crosses -# this limit, it is converted into the dense representation. -# -# A value greater than 16000 is totally useless, since at that point the -# dense representation is more memory efficient. -# -# The suggested value is ~ 3000 in order to have the benefits of -# the space efficient encoding without slowing down too much PFADD, -# which is O(N) with the sparse encoding. The value can be raised to -# ~ 10000 when CPU is not a concern, but space is, and the data set is -# composed of many HyperLogLogs with cardinality in the 0 - 15000 range. -hll-sparse-max-bytes 3000 - -# Active rehashing uses 1 millisecond every 100 milliseconds of CPU time in -# order to help rehashing the main Redis hash table (the one mapping top-level -# keys to values). The hash table implementation Redis uses (see dict.c) -# performs a lazy rehashing: the more operation you run into a hash table -# that is rehashing, the more rehashing "steps" are performed, so if the -# server is idle the rehashing is never complete and some more memory is used -# by the hash table. -# -# The default is to use this millisecond 10 times every second in order to -# actively rehash the main dictionaries, freeing memory when possible. -# -# If unsure: -# use "activerehashing no" if you have hard latency requirements and it is -# not a good thing in your environment that Redis can reply from time to time -# to queries with 2 milliseconds delay. -# -# use "activerehashing yes" if you don't have such hard requirements but -# want to free memory asap when possible. -activerehashing yes - -# The client output buffer limits can be used to force disconnection of clients -# that are not reading data from the server fast enough for some reason (a -# common reason is that a Pub/Sub client can't consume messages as fast as the -# publisher can produce them). -# -# The limit can be set differently for the three different classes of clients: -# -# normal -> normal clients including MONITOR clients -# slave -> slave clients -# pubsub -> clients subscribed to at least one pubsub channel or pattern -# -# The syntax of every client-output-buffer-limit directive is the following: -# -# client-output-buffer-limit -# -# A client is immediately disconnected once the hard limit is reached, or if -# the soft limit is reached and remains reached for the specified number of -# seconds (continuously). -# So for instance if the hard limit is 32 megabytes and the soft limit is -# 16 megabytes / 10 seconds, the client will get disconnected immediately -# if the size of the output buffers reach 32 megabytes, but will also get -# disconnected if the client reaches 16 megabytes and continuously overcomes -# the limit for 10 seconds. -# -# By default normal clients are not limited because they don't receive data -# without asking (in a push way), but just after a request, so only -# asynchronous clients may create a scenario where data is requested faster -# than it can read. -# -# Instead there is a default limit for pubsub and slave clients, since -# subscribers and slaves receive data in a push fashion. -# -# Both the hard or the soft limit can be disabled by setting them to zero. -client-output-buffer-limit normal 0 0 0 -client-output-buffer-limit slave 256mb 64mb 60 -client-output-buffer-limit pubsub 32mb 8mb 60 - -# Client query buffers accumulate new commands. They are limited to a fixed -# amount by default in order to avoid that a protocol desynchronization (for -# instance due to a bug in the client) will lead to unbound memory usage in -# the query buffer. However you can configure it here if you have very special -# needs, such us huge multi/exec requests or alike. -# -# client-query-buffer-limit 1gb - -# In the Redis protocol, bulk requests, that are, elements representing single -# strings, are normally limited ot 512 mb. However you can change this limit -# here. -# -# proto-max-bulk-len 512mb - -# Redis calls an internal function to perform many background tasks, like -# closing connections of clients in timeout, purging expired keys that are -# never requested, and so forth. -# -# Not all tasks are performed with the same frequency, but Redis checks for -# tasks to perform according to the specified "hz" value. -# -# By default "hz" is set to 10. Raising the value will use more CPU when -# Redis is idle, but at the same time will make Redis more responsive when -# there are many keys expiring at the same time, and timeouts may be -# handled with more precision. -# -# The range is between 1 and 500, however a value over 100 is usually not -# a good idea. Most users should use the default of 10 and raise this up to -# 100 only in environments where very low latency is required. -hz 10 - -# When a child rewrites the AOF file, if the following option is enabled -# the file will be fsync-ed every 32 MB of data generated. This is useful -# in order to commit the file to the disk more incrementally and avoid -# big latency spikes. -aof-rewrite-incremental-fsync yes - -# Redis LFU eviction (see maxmemory setting) can be tuned. However it is a good -# idea to start with the default settings and only change them after investigating -# how to improve the performances and how the keys LFU change over time, which -# is possible to inspect via the OBJECT FREQ command. -# -# There are two tunable parameters in the Redis LFU implementation: the -# counter logarithm factor and the counter decay time. It is important to -# understand what the two parameters mean before changing them. -# -# The LFU counter is just 8 bits per key, it's maximum value is 255, so Redis -# uses a probabilistic increment with logarithmic behavior. Given the value -# of the old counter, when a key is accessed, the counter is incremented in -# this way: -# -# 1. A random number R between 0 and 1 is extracted. -# 2. A probability P is calculated as 1/(old_value*lfu_log_factor+1). -# 3. The counter is incremented only if R < P. -# -# The default lfu-log-factor is 10. This is a table of how the frequency -# counter changes with a different number of accesses with different -# logarithmic factors: -# -# +--------+------------+------------+------------+------------+------------+ -# | factor | 100 hits | 1000 hits | 100K hits | 1M hits | 10M hits | -# +--------+------------+------------+------------+------------+------------+ -# | 0 | 104 | 255 | 255 | 255 | 255 | -# +--------+------------+------------+------------+------------+------------+ -# | 1 | 18 | 49 | 255 | 255 | 255 | -# +--------+------------+------------+------------+------------+------------+ -# | 10 | 10 | 18 | 142 | 255 | 255 | -# +--------+------------+------------+------------+------------+------------+ -# | 100 | 8 | 11 | 49 | 143 | 255 | -# +--------+------------+------------+------------+------------+------------+ -# -# NOTE: The above table was obtained by running the following commands: -# -# redis-benchmark -n 1000000 incr foo -# redis-cli object freq foo -# -# NOTE 2: The counter initial value is 5 in order to give new objects a chance -# to accumulate hits. -# -# The counter decay time is the time, in minutes, that must elapse in order -# for the key counter to be divided by two (or decremented if it has a value -# less <= 10). -# -# The default value for the lfu-decay-time is 1. A Special value of 0 means to -# decay the counter every time it happens to be scanned. -# -# lfu-log-factor 10 -# lfu-decay-time 1 - -########################### ACTIVE DEFRAGMENTATION ####################### -# -# WARNING THIS FEATURE IS EXPERIMENTAL. However it was stress tested -# even in production and manually tested by multiple engineers for some -# time. -# -# What is active defragmentation? -# ------------------------------- -# -# Active (online) defragmentation allows a Redis server to compact the -# spaces left between small allocations and deallocations of data in memory, -# thus allowing to reclaim back memory. -# -# Fragmentation is a natural process that happens with every allocator (but -# less so with Jemalloc, fortunately) and certain workloads. Normally a server -# restart is needed in order to lower the fragmentation, or at least to flush -# away all the data and create it again. However thanks to this feature -# implemented by Oran Agra for Redis 4.0 this process can happen at runtime -# in an "hot" way, while the server is running. -# -# Basically when the fragmentation is over a certain level (see the -# configuration options below) Redis will start to create new copies of the -# values in contiguous memory regions by exploiting certain specific Jemalloc -# features (in order to understand if an allocation is causing fragmentation -# and to allocate it in a better place), and at the same time, will release the -# old copies of the data. This process, repeated incrementally for all the keys -# will cause the fragmentation to drop back to normal values. -# -# Important things to understand: -# -# 1. This feature is disabled by default, and only works if you compiled Redis -# to use the copy of Jemalloc we ship with the source code of Redis. -# This is the default with Linux builds. -# -# 2. You never need to enable this feature if you don't have fragmentation -# issues. -# -# 3. Once you experience fragmentation, you can enable this feature when -# needed with the command "CONFIG SET activedefrag yes". -# -# The configuration parameters are able to fine tune the behavior of the -# defragmentation process. If you are not sure about what they mean it is -# a good idea to leave the defaults untouched. - -# Enabled active defragmentation -# activedefrag yes - -# Minimum amount of fragmentation waste to start active defrag -# active-defrag-ignore-bytes 100mb - -# Minimum percentage of fragmentation to start active defrag -# active-defrag-threshold-lower 10 - -# Maximum percentage of fragmentation at which we use maximum effort -# active-defrag-threshold-upper 100 - -# Minimal effort for defrag in CPU percentage -# active-defrag-cycle-min 25 - -# Maximal effort for defrag in CPU percentage -# active-defrag-cycle-max 75 - diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/.browserslistrc b/orange-demo-single-pg/orange-demo-single-pg-web/.browserslistrc deleted file mode 100644 index d6471a38..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/.browserslistrc +++ /dev/null @@ -1,2 +0,0 @@ -> 1% -last 2 versions diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/.editorconfig b/orange-demo-single-pg/orange-demo-single-pg-web/.editorconfig deleted file mode 100644 index 7053c49a..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/.editorconfig +++ /dev/null @@ -1,5 +0,0 @@ -[*.{js,jsx,ts,tsx,vue}] -indent_style = space -indent_size = 2 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/.eslintignore b/orange-demo-single-pg/orange-demo-single-pg-web/.eslintignore deleted file mode 100644 index 53395bc7..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -/src/views/workflow/package/* -/src/components/Verifition/* \ No newline at end of file diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/.eslintrc.js b/orange-demo-single-pg/orange-demo-single-pg-web/.eslintrc.js deleted file mode 100644 index 81d92950..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/.eslintrc.js +++ /dev/null @@ -1,39 +0,0 @@ -module.exports = { - root: true, - env: { - node: true - }, - 'extends': [ - 'plugin:vue/essential', - '@vue/standard' - ], - parserOptions: { - parser: 'babel-eslint' - }, - rules: { - 'no-console': 'off', - 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', - 'semi': ['off', 'always'], - 'prefer-promise-reject-errors': ['error', { 'allowEmptyReject': true }], - 'no-trailing-spaces': ['error', { 'skipBlankLines': true }], - 'prefer-const': ['off'], - 'quote-props': ['off'], - 'object-curly-spacing': ['off'], - 'dot-notation': ['off'], - 'lines-between-class-members': ['off'], - // 'no-undef': ['off', 'always'], - // 'no-unused-vars': ['off', 'always'], - 'no-new-func': ['off', 'always'] - }, - overrides: [ - { - files: [ - '**/__tests__/*.{j,t}s?(x)', - '**/tests/unit/**/*.spec.{j,t}s?(x)' - ], - env: { - jest: true - } - } - ] -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/.gitignore b/orange-demo-single-pg/orange-demo-single-pg-web/.gitignore deleted file mode 100644 index a0dddc6f..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/.gitignore +++ /dev/null @@ -1,21 +0,0 @@ -.DS_Store -node_modules -/dist - -# local env files -.env.local -.env.*.local - -# Log files -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Editor directories and files -.idea -.vscode -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/README.md b/orange-demo-single-pg/orange-demo-single-pg-web/README.md deleted file mode 100644 index 3b5fbf8e..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/README.md +++ /dev/null @@ -1,15 +0,0 @@ -## 橙单代码生成器 -### 构建命令 -``` bash -# install dependencies -npm install - -# serve with hot reload at localhost:8080 -npm run dev - -# build for production with minification -npm run build - -# run all tests -npm test -``` diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/babel.config.js b/orange-demo-single-pg/orange-demo-single-pg-web/babel.config.js deleted file mode 100644 index e9558405..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/babel.config.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - presets: [ - '@vue/cli-plugin-babel/preset' - ] -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/jest.config.js b/orange-demo-single-pg/orange-demo-single-pg-web/jest.config.js deleted file mode 100644 index 0f957914..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/jest.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - preset: '@vue/cli-plugin-unit-jest' -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/package.json b/orange-demo-single-pg/orange-demo-single-pg-web/package.json deleted file mode 100644 index 316b3cd0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/package.json +++ /dev/null @@ -1,72 +0,0 @@ -{ - "name": "orange-project", - "version": "1.0.0", - "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "dev": "vue-cli-service serve", - "build": "vue-cli-service build", - "test:unit": "vue-cli-service test:unit", - "lint": "vue-cli-service lint" - }, - "dependencies": { - "axios": "^0.18.0", - "echarts": "^4.2.1", - "element-ui": "^2.13.0", - "jquery": "^3.3.1", - "js-cookie": "^2.2.1", - "jsencrypt": "^3.0.0-rc.1", - "json-bigint": "^0.3.0", - "layui-layer": "^1.0.9", - "lodash": "^4.17.5", - "core-js": "^3.6.4", - "register-service-worker": "^1.6.2", - "sortablejs": "^1.7.0", - "v-charts": "^1.19.0", - "vue": "^2.6.11", - "vue-router": "^3.1.5", - "vuex": "^3.1.2", - "wangeditor": "^3.1.1", - "vue-json-viewer": "^2.2.18", - "min-dash": "^3.5.2", - "vuedraggable": "^2.24.3", - "xml-js": "^1.6.11", - "highlight.js": "^10.5.0", - "bpmn-js-token-simulation": "^0.10.0", - "crypto-js": "^4.1.1" - }, - "devDependencies": { - "@vue/cli-plugin-babel": "~4.2.0", - "@vue/cli-plugin-eslint": "~4.2.0", - "@vue/cli-plugin-pwa": "~4.2.0", - "@vue/cli-plugin-router": "~4.2.0", - "@vue/cli-plugin-unit-jest": "~4.2.0", - "@vue/cli-plugin-vuex": "~4.2.0", - "@vue/cli-service": "~4.2.0", - "@vue/eslint-config-standard": "^5.1.0", - "@vue/test-utils": "1.0.0-beta.31", - "babel-eslint": "^10.0.3", - "bpmn-js": "^7.4.0", - "bpmn-js-properties-panel": "^0.37.2", - "camunda-bpmn-moddle": "^4.4.1", - "eslint": "^6.7.2", - "eslint-plugin-import": "^2.20.1", - "eslint-plugin-node": "^11.0.0", - "eslint-plugin-promise": "^4.2.1", - "eslint-plugin-standard": "^4.0.0", - "eslint-plugin-vue": "^6.1.2", - "lint-staged": "^9.5.0", - "node-sass": "^4.13.1", - "sass-loader": "^7.3.1", - "vue-template-compiler": "^2.6.11" - }, - "gitHooks": { - "pre-commit": "lint-staged" - }, - "lint-staged": { - "*.{js,jsx,vue}": [ - "vue-cli-service lint", - "git add" - ] - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/favicon.ico b/orange-demo-single-pg/orange-demo-single-pg-web/public/favicon.ico deleted file mode 100644 index df36fcfb72584e00488330b560ebcf34a41c64c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/android-chrome-192x192.png b/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/android-chrome-192x192.png deleted file mode 100644 index b02aa64d97167ad649e496908b35f14c603d9249..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9416 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-120x120.png b/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-120x120.png deleted file mode 100644 index 1427cf62752646ad7217df0a61aa01fdef7475d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3369 zcmb7Hc{J2t8~Qk{w!5*3fu4c1kWV+f$uhdfm0Yr%@PJy8NU6F}hlE z<1AX3WTJu?$Npcik#7CO?ayV<8`12wv7ZdiDu4XrX_S{y+>=n~7d z9~&9D#2F*oV`RtK8X)8&x@yY(YO;P#O8VrmY|d)|7MBrpa!TRjvt9!rl6&=SCy~c3 z>tM*u-OKjWv%~5yU#iI0Y%ba~ElhEMq>t?o9nPi0c8kOI`nQYO7}ztojdXae;|Ot| z1tkl6Pk(J$XNb`OjhfPtmHxj!*zoW_BOrg>FvxHSkxfFQcjl=iZnZTFXn>+==EinV z-Xmp!-T3sQo#EA%F3G*MX?@bc)XC9Pf^|eg(0!7i!0u2D-+-rICwD+)jlOq8W>J%$ z65NtyPbiD!d?=FWge094u-`xKuC;0f^}W7-ve>-f>=u~k6i473knYXnU3-;)Cy~2T z`>(D&oL!DUa+l&*b$&iEhGb8whwg9eRO2U)=hDrKUVWJeJ6UyMyUN5m$+@3_;7kn7 zK1rGAplVFG%?QnlKP64ZhenV>WFY*0+aDLT@()k0GD2Ab?Ibx8&jJJIZof1m&-#O(8`oI|;xMi!W}KQU8AH(cwfP zRHmA|G89iRdkq&0_Tqn*yZMOg^86f+<cKq5n=7GaAFUPW z`sFW=)ylcF%KE)5yNckwDX*?}pJ`i;dc|{a-aH6&CMeiqs{gkTq3;Rg=VwpRyBUeB zOx7g{vDpp{f0{;_O{DjKtl+kb9iB~c9<}fp>oa;d(-W^XBkD6rsb$5|WqzxHf)Tx4 z&1dhImzRCX0mom>G<}b#e3~c6UvITjsnoU`Ef-{pTk)BLMbhh*pV!<|%q6RKrGS+*c+Wa(S7OJOxr*xa(0equIvspi8v&!kNpn`_~vb26^#YO5^#-KG{gQ6`M( zyXD%si{qrqc=Xg;h2q9M{9D)^HN%dk71S6XLOho3cpaI*6=Q3RWFmjKmQFTf30tuK zf`%LT#6Z}^i)(_RF{2ta@Ctq+7iFmb_op8jj->Qhkq4ZtGan`!LP8(6Wqh6dToGLJ zo#e}RVdI);2R$J7lJ}l{vbsv`n4udjL*>M?{OsI<7~A;o%n-y(BQF9pLJr$B`q->D z60Dto1*#4yMZ@6a| zM$Y@!805V@5#0EsAZxE(7AJDeigN~H6zk*T^We+o(0oD1@(0kSc~SlkIjhH!71i53gD5%O-UWfM5*~QQi)N%Oo_FK!S z^ROYHVo@tP1;yUGb@|29N_)z{u9s6nKU`Xw#3K_TY;~zG2&`zqd&lp~TS7hG*b998 z!bVjQPS+T_EhC!rMg8!sP7xm_Hk-QE*1D*p;)~S1$uZVZ*X~MBq)#qFX@}joCkQFZ zXXkN&Kc_GadVJ)+d)mIsI1`WwHb(N>^tK#gL4qZ|;|ngT#x@{eUXJ7B?;5M1k2PKs zxka3**9)$T4c0{8H^KD1QB0054?U-)ja=(P-9&wLCJL`L<||44#F)U81wQ(}Z`Y?& zh=mCtQ>7jbL8{ZzK1P)1Ca{?49l}Jw8iBrDN6ZUW)tVr?#qTs*xtbT zr+W=Th&)8bfXeGr!~bGOG+of8gULS}rfv>jWIPMJ;(cAVyRg+$|W>A70c`{iX z3&YgP&k1xnrfXu84pv-yp-Wgn{)v`P%2rn`%Bu=KMQ_rn`zwg6Y!5t3nIcGs7$mSV z@dq9xHTkzpT5{&fU;3d-K0r%2uszSfV;5ISKZFIAOD`@y#yWXDe{N6!N|@=<-?1Sk z1~_KEsi4LExBl`fQ2~w$MV@(K0eA1BIx>sN$dl_j?Rz|l@0J=QQ0-!~MQv&^EV~7r z!YYIho@&wxLbF=Ia`Akf332zjMqaV%6p-_0y7g@xX0^B#wb`2zvnwQg(Lzrv72mol zji_aHGo0MSWe!>(xc%=)q#hWoXlF-6H5pL`Z7x+#$Z-#uU`+7c`W?6U zoxg4->_Es21+*D?AJ!@Nj5tA?Gx2r_Pc)(w1;9?z1xJ*QM$8o+_V9Thqm>+sn9=#;-db_4ymFYe{`7$b{Y-W%KRR;za>e=+-D4qGS zRf@HvzI852D}`X=g6ELBcSQDG?|vKyI#@(cto;5yEoK-*M!tEPr<7;DkMoOw4o629 zFeAci>yyiby-nV?wsZbS#Y^b4W#PBP?^uNgE*QTxRKZU)vo$ioi{5{tlgp{SW%0qr z70#Z23&GdmYR6rT{;lOIYC<3PB6G0KjY}0lGNGD+yN+A}M!~Z+X0W*njdsCwo^w90 ze6F@vY1(@Z>B+R_rA*{j4bm*Bj8htRU&UO6;p4YNN)l}e_jCwsm!H7lSdt=Gj%O(n zo;ac94z}kW%h~6F2c!8XHRUQeyH}U|bVAKOp_+ADO5PkH?$E4P**m9VIn|FSjis#H zjCZfWrv!g7hlqQ5xZX@=gxMIHU0?yi@61_j-j=;5_uf58HMDq%i)cj%LB6UQw*Bco zn4*;MC@nDR0fZO${V{q`Tel}Ojw=aX#M*xw!RN(PJmITN@CAqD*?KGr5zjf=Ai?~i zR4lE2I`L8Wq?V+JV4>~NhrJ%Vp{*Xt+qw%C-%Vf9yj+TSPH+h8*8{Iefp6-_? zu5p8;GfK3Rx)Hx>pV0aD?b2N2kWJ=eK|^nX-<4NYI}Nd@mj+J%^0$#Qf~GH@3m{d_9(?C z6OSF?p&cwqYbSP=$`_KJYw&yz4t~*3l=}OLu!Z2Cghc62E?9=B%n|cdWib_MK1hCK zsCd;w3@jz@xwM%%`+U~6IlFyIBsirXFu&;TV46nEmbn-h_kd!bg=Lq^Es2QSTL6tx zN@ ROru=^AazZ3N)e9H{|11FNXq~K diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-152x152.png b/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-152x152.png deleted file mode 100644 index f24d454a2ecb8851bb893192b64ee09386d30e24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4046 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 cK^5JQ0?3d{m_4Kdj*!1;003@kYpI!lw*K!+ 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�MrHbYR_buu=L>f*wO=Er8~{qfkYT+HoHag8)VqJoC-#@ zNT})4xRE%sP-B9?xmL5!2Y8VLa?yj@Y@r1C)6o~9GF9nWG!SI2VJ$>ejtUE%Qv&r_ zYLgZ0h3iIrw7{TyurC(g^$XT%PP5`FB3aFpP&fM-8!J#3I_ujG?;7(Xv5ni%BjYP4 z^+oydy=)_&bdxYJx`X%G5PFkUB%3h6RiOs^F?#ojsB%DbfhqzGhuv4)S1%vw@PDyE z3xWF{Y^0>+=Wg! z{>z@$rD6ej*V- z^$zKIOWOfdN4~7@ndhru01+3cxwD&_Muyja({*O;-5VnF(e$WDALNStE{1{F#ts+VR{o zSlQ*@U=Du8fgKW$lU~)O)b6FS?H1SSnKVIC=DOvbo8IUvM zVf+U4YxG%qLGd%ew7Jp8>@U`ew+A#Q=2oJHNH@_f!WadS20$KZEZ+BHAvU@FB zzRCYN5r+Z#g`C^hrH$yW7ABstwjvMM*CHGzY41bbo2zy$6E8DAOPn zUnHG?e7?u7pQ}Kqbu1jEd+=mcGea4aL6V4g(m*b7x}z|ijsjb3e|tf-3&^JK{=sWz z8sqIu9jy)#J}n}cXqtXmkb-NDVPcAKn=G9uX42zYvufu_OCr>xJ=oTNp8WA5wEqvM z{r~m8;7_C>U68iRr@|rd7UYhON#(-S_+Uf>s)hhPU{{exlxc&eD diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-60x60.png b/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/apple-touch-icon-60x60.png deleted file mode 100644 index cf10a5602e653bb126332934e2b7f34081c19a01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1491 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

aZW9cb|x>1jZDoAu$NpeWiVk@{x{! zmmBmDgx|qNN?LyIrl9$qmj{KjZ8zpa=4edK3FuFS$KFl}bWPoO*Ax#Z1c2#3JAN(O zYhi>`%H9fSnLkAq|5vs>+?U*bdfMc6TmDu+QqnN9xgfZsG25($^;v7U1nBl9Q^o*i z)&?UaYZ=~7XZa75xPKB1s~MB1m<*dN08pqiy*q!)_Kc|;EZs3&nNdMQ5#LFu+J z?*($vO)$hkMOVc16f-ep;K@_~&Y6t?0t9I0(lBkZBfic|u)3pK$Xv=A@jUQnB2sC` zbI)L9m;VNkWOao}2c3b4_u4+bg zuf-@d1$?asdD1~mORQ02#!&1Xm#41*xz}wETNqKb;kueQ*~OpcAXTpJFYUYcKoA&Z z8Ke=2Vh~cu_uTb&6AH75L!k8zo~&wRsDLs^3YkD2!~;%u6sFrzV2A5(FQ|3}+0-K- zWX)W2yq%?^)iKhyMGPB5*DnWBaLqAHLJ47;r5nvkeq3u_?J{Xaf_}6I+xpLwKS7NC z|KYU%zup)8i85jc)^Yt*I0W8;+zHUI3V7@o;3DUYasdq>DFK%im4J)F?;|B-<=}8R z>HESGa5)KyCnGII|E+YX&h4Y+xCRvyX@oGhhG4 j58+{W$RJv~NLLKlV4)8v^7hU(R-4l(}$teLl` diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/favicon-16x16.png b/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/favicon-16x16.png deleted file mode 100644 index 42af00963d81b8e39a30435c60ac482d1f8756e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>WRE8{w#)hawXn|-Xp4{E;v!=;4B^%-x&;Cm1 zP>^*#n_J!T^1SBMI!C4h-R53dN8`?ylD}d{L%(vZvUKT)~-CgWFQy3lt zIqW5#zOL*K8HL%o&D;R|TePl5?VWhq^wrj^qed%lKKkpp-FogeyEi+p zE?K8rW7E1fuEJ{5jaaAp0~aIt+keS?T)@vXM=*X}V#VGMCm1~v-+0wr{w3CJ-R8wG zS@XVpzqP-5Mf0H?y-zh=XVL>S6E;rKnDmrMQlmoKbK9p$evXN`oe{6g>lvi)-+#c) zb+Al&$zRqtWk1@VTt6MPmq9d7^!kmXZn8k{sFt`!l%ynwlArU1(iRB6fMfqu& zIjIUIl?AB^nFS@u3=9=>9)IHDC=AokIOTu(jOWuJ24-b$y<~1-Wnu5hBFw@HE)6D! wQ<#-EhbWxBaplC3Ge=~Ou%B-5Sm33{@Jd{;RG<|Mp00i_>zopr0DGh}-~a#s diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/favicon-32x32.png b/orange-demo-single-pg/orange-demo-single-pg-web/public/img/icons/favicon-32x32.png deleted file mode 100644 index 46ca04dee251a4fa85a2891a145fbe20cc619d96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1271 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 - - - -Created by potrace 1.11, written by Peter Selinger 2001-2013 - - - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/index.html b/orange-demo-single-pg/orange-demo-single-pg-web/public/index.html deleted file mode 100644 index 011aade2..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/public/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - 橙单代码生成平台 - - - -

- - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/public/robots.txt b/orange-demo-single-pg/orange-demo-single-pg-web/public/robots.txt deleted file mode 100644 index eb053628..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/public/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Disallow: diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/App.vue b/orange-demo-single-pg/orange-demo-single-pg-web/src/App.vue deleted file mode 100644 index 7e16a155..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/App.vue +++ /dev/null @@ -1,21 +0,0 @@ - - - diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/DictionaryController.js b/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/DictionaryController.js deleted file mode 100644 index 9c9a0fc4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/DictionaryController.js +++ /dev/null @@ -1,52 +0,0 @@ -import * as staticDict from '@/staticDict' - -export default class DictionaryController { - static dictSysRole (sender, params, axiosOption, httpOption) { - return new Promise((resolve, reject) => { - sender.doUrl('/admin/upms/sysRole/listDict', 'get', params, axiosOption, httpOption).then(res => { - let dictData = new staticDict.DictionaryBase('角色字典'); - dictData.setList(res.data); - resolve(dictData); - }).catch(err => { - reject(err); - }); - }); - } - static dictSysUserStatus () { - return new Promise((resolve) => { - resolve(staticDict.SysUserStatus); - }); - } - static dictSysUserType () { - return new Promise((resolve) => { - resolve(staticDict.SysUserType); - }); - } - static dictSysDept (sender, params, axiosOption, httpOption) { - return new Promise((resolve, reject) => { - sender.doUrl('/admin/upms/sysDept/listDict', 'get', params, axiosOption, httpOption).then(res => { - let dictData = new staticDict.DictionaryBase('部门字典'); - dictData.setList(res.data); - resolve(dictData); - }).catch(err => { - reject(err); - }); - }); - } - static dictSysDeptByParentId (sender, params, axiosOption, httpOption) { - return new Promise((resolve, reject) => { - sender.doUrl('/admin/upms/sysDept/listDictByParentId', 'get', params, axiosOption, httpOption).then(res => { - let dictData = new staticDict.DictionaryBase('部门字典'); - dictData.setList(res.data); - resolve(dictData); - }).catch(err => { - reject(err); - }); - }); - } - static dictSysDataPermType () { - return new Promise((resolve) => { - resolve(staticDict.SysDataPermType); - }); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDataPermController.js b/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDataPermController.js deleted file mode 100644 index 15fd5ccc..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDataPermController.js +++ /dev/null @@ -1,61 +0,0 @@ -export default class SysDataPermController { - /** - * @param params {dataPermId, dataPermName, deptIdListString} - */ - static add (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/add', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermId, dataPermName, deptIdListString} - */ - static update (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/update', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermId} - */ - static delete (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/delete', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermName} - */ - static list (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/list', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermId} - */ - static view (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/view', 'get', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermId, searchString} - */ - static listDataPermUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/listDataPermUser', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermId, userIdListString} - */ - static addDataPermUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/addDataPermUser', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {dataPermId, userId} - */ - static deleteDataPermUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/deleteDataPermUser', 'post', params, axiosOption, httpOption); - } - - static listNotInDataPermUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDataPerm/listNotInDataPermUser', 'post', params, axiosOption, httpOption); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDeptController.js b/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDeptController.js deleted file mode 100644 index ff96ce55..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysDeptController.js +++ /dev/null @@ -1,25 +0,0 @@ -export default class SysDeptController { - static list (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/list', 'post', params, axiosOption, httpOption); - } - - static view (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/view', 'get', params, axiosOption, httpOption); - } - - static export (sender, params, fileName) { - return sender.download('admin/upms/sysDept/export', params, fileName); - } - - static add (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/add', 'post', params, axiosOption, httpOption); - } - - static update (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/update', 'post', params, axiosOption, httpOption); - } - - static delete (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/delete', 'post', params, axiosOption, httpOption); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysUserController.js b/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysUserController.js deleted file mode 100644 index 92d627d3..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SysUserController.js +++ /dev/null @@ -1,25 +0,0 @@ -export default class SysUserController { - static list (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/list', 'post', params, axiosOption, httpOption); - } - - static view (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/view', 'get', params, axiosOption, httpOption); - } - - static export (sender, params, fileName) { - return sender.download('admin/upms/sysUser/export', params, fileName); - } - - static add (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/add', 'post', params, axiosOption, httpOption); - } - - static update (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/update', 'post', params, axiosOption, httpOption); - } - - static delete (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/delete', 'post', params, axiosOption, httpOption); - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SystemController.js b/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SystemController.js deleted file mode 100644 index b4cd8f30..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/Controller/SystemController.js +++ /dev/null @@ -1,260 +0,0 @@ -export default class SystemController { - static login (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/login/doLogin', 'post', params, axiosOption, httpOption); - } - - static logout (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/login/doLogout', 'post', params, axiosOption, httpOption); - } - - static changePassword (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/login/changePassword', 'post', params, axiosOption, httpOption); - } - - static getLoginInfo (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/login/getLoginInfo', 'get', params, axiosOption, httpOption); - } - - static getDictList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDict/list', 'post', params, axiosOption, httpOption); - } - - static getRoleList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/list', 'post', params, axiosOption, httpOption); - } - - static getRole (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/view', 'get', params, axiosOption, httpOption); - } - - static deleteRole (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/delete', 'post', params, axiosOption, httpOption); - } - - static addRole (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/add', 'post', params, axiosOption, httpOption); - } - - static updateRole (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/update', 'post', params, axiosOption, httpOption); - } - - static getUserList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/list', 'post', params, axiosOption, httpOption); - } - - static getUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/view', 'get', params, axiosOption, httpOption); - } - - static resetUserPassword (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/resetPassword', 'post', params, axiosOption, httpOption); - } - - static deleteUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/delete', 'post', params, axiosOption, httpOption); - } - - static addUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/add', 'post', params, axiosOption, httpOption); - } - - static updateUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/update', 'post', params, axiosOption, httpOption); - } - - static addDepartment (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/add', 'post', params, axiosOption, httpOption); - } - - static deleteDepartment (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/delete', 'post', params, axiosOption, httpOption); - } - - static updateDepartment (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/update', 'post', params, axiosOption, httpOption); - } - - static getDepartmentList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysDept/list', 'post', params, axiosOption, httpOption); - } - - // 菜单接口 - static getMenuPermList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/list', 'post', params, axiosOption, httpOption); - } - static addMenu (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/add', 'post', params, axiosOption, httpOption); - } - - static updateMenu (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/update', 'post', params, axiosOption, httpOption); - } - static deleteMenu (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/delete', 'post', params, axiosOption, httpOption); - } - - static viewMenu (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/view', 'get', params, axiosOption, httpOption); - } - // 权限字接口 - static getPermCodeList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/list', 'post', params, axiosOption, httpOption); - } - - static addPermCode (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/add', 'post', params, axiosOption, httpOption); - } - - static updatePermCode (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/update', 'post', params, axiosOption, httpOption); - } - - static deletePermCode (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/delete', 'post', params, axiosOption, httpOption); - } - - static viewPermCode (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/view', 'get', params, axiosOption, httpOption); - } - - // 权限资源接口 - static getAllPermList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermModule/listAll', 'post', params, axiosOption, httpOption); - } - - static getPermGroupList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermModule/list', 'post', params, axiosOption, httpOption); - } - - static addPermGroup (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermModule/add', 'post', params, axiosOption, httpOption); - } - - static updatePermGroup (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermModule/update', 'post', params, axiosOption, httpOption); - } - - static deletePermGroup (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermModule/delete', 'post', params, axiosOption, httpOption); - } - - static getPermList (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/list', 'post', params, axiosOption, httpOption); - } - - static viewPerm (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/view', 'get', params, axiosOption, httpOption); - } - - static addPerm (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/add', 'post', params, axiosOption, httpOption); - } - - static updatePerm (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/update', 'post', params, axiosOption, httpOption); - } - - static deletePerm (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/delete', 'post', params, axiosOption, httpOption); - } - /** - * @param params {roleId, searchString} - */ - static listRoleUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/listUserRole', 'post', params, axiosOption, httpOption); - } - - static listNotInUserRole (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/listNotInUserRole', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {roleId, userIdListString} - */ - static addRoleUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/addUserRole', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {roleId, userId} - */ - static deleteRoleUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/deleteUserRole', 'post', params, axiosOption, httpOption); - } - - /** - * @param params {} - */ - static queryRoleByPermCode (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/listAllRolesByPermCode', 'post', params, axiosOption, httpOption); - } - // 权限查询 - static listSysPermWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/listSysPermWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysPermCodeWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/listSysPermCodeWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysMenuWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysUser/listSysMenuWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysPermByRoleIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/listSysPermWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysPermCodeByRoleIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysRole/listSysPermCodeWithDetail', 'get', params, axiosOption, httpOption); - } - - static listMenuPermCode (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/listMenuPerm', 'get', params, axiosOption, httpOption); - } - - static listSysPermByMenuIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/listSysPermWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysUserByMenuIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysMenu/listSysUserWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysUserByPermCodeIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/listSysUserWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysRoleByPermCodeIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPermCode/listSysRoleWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysUserByPermIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/listSysUserWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysRoleByPermIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/listSysRoleWithDetail', 'get', params, axiosOption, httpOption); - } - - static listSysMenuByPermIdWithDetail (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysPerm/listSysMenuWithDetail', 'get', params, axiosOption, httpOption); - } - // 操作日志 - static listSysOperationLog (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/sysOperationLog/list', 'post', params, axiosOption, httpOption); - } - // 在线用户 - static listSysLoginUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/loginUser/list', 'post', params, axiosOption, httpOption); - } - - static deleteSysLoginUser (sender, params, axiosOption, httpOption) { - return sender.doUrl('admin/upms/loginUser/delete', 'post', params, axiosOption, httpOption); - } - // 上传用户头像URL - static changeHeadImageUrl () { - return 'admin/upms/login/changeHeadImage'; - } -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/index.js b/orange-demo-single-pg/orange-demo-single-pg-web/src/api/index.js deleted file mode 100644 index 909dc4c4..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/api/index.js +++ /dev/null @@ -1,13 +0,0 @@ -import SystemController from './Controller/SystemController' -import SysDataPermController from './Controller/SysDataPermController' -import DictionaryController from './Controller/DictionaryController' -import SysDeptController from './Controller/SysDeptController.js'; -import SysUserController from './Controller/SysUserController.js'; - -export { - SystemController, - SysDataPermController, - DictionaryController, - SysDeptController, - SysUserController -} diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-blue.scss b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-blue.scss deleted file mode 100644 index 5e4966bb..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-blue.scss +++ /dev/null @@ -1,1014 +0,0 @@ -/* Element Chalk Variables */ - -@mixin linear-gradient ($from, $to, $direction) { - @if variable-exists(to) { - @if variable-exists(direction) { - background: linear-gradient($direction, $from, $to); - } @else { - background: linear-gradient($from, $to); - } - } @else { - background: $from; - } -} - -// Special comment for theme configurator -// type|skipAutoTranslation|Category|Order -// skipAutoTranslation 1 - -/* Transition --------------------------- */ -$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default; -$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--fade-linear-transition: opacity 200ms linear !default; -$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default; -$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default; - -/* Color --------------------------- */ -/// color|1|Brand Color|0 -$--color-primary: #0092FF !default; -/// color|1|Background Color|4 -$--color-white: #FFFFFF !default; -/// color|1|Background Color|4 -$--color-black: #000000 !default; -$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */ -$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */ -$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */ -$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */ -$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */ -$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */ -$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */ -$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ -$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ -/// color|1|Functional Color|1 -$--color-success: #67C23A !default; -/// color|1|Functional Color|1 -$--color-warning: #E6A23C !default; -/// color|1|Functional Color|1 -$--color-danger: #F56C6C !default; -/// color|1|Functional Color|1 -$--color-info: #909399 !default; - -$--color-success-light: mix($--color-white, $--color-success, 80%) !default; -$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default; -$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default; -$--color-info-light: mix($--color-white, $--color-info, 80%) !default; - -$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default; -$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default; -$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default; -$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default; -/// color|1|Font Color|2 -$--color-text-primary: #303133 !default; -/// color|1|Font Color|2 -$--color-text-regular: #606266 !default; -/// color|1|Font Color|2 -$--color-text-secondary: #909399 !default; -/// color|1|Font Color|2 -$--color-text-placeholder: #C0C4CC !default; -/// color|1|Border Color|3 -$--border-color-base: #DCDFE6 !default; -/// color|1|Border Color|3 -$--border-color-light: #E4E7ED !default; -/// color|1|Border Color|3 -$--border-color-lighter: #EBEEF5 !default; -/// color|1|Border Color|3 -$--border-color-extra-light: #F2F6FC !default; - -// Background -/// color|1|Background Color|4 -$--background-color-base: #F5F7FA !default; - -// color for left sidebar title -$--color-sidebar-title-text: #FFFFFF; -// color for left sidebar background -$--color-menu-background: $--color-primary; -$--color-menu-item-active-text-color: #FFFFFF; -$--color-menu-item-active-background: rgba(255, 255, 255, 0.01); -$--color-menu-item-active-background-to: rgba(255, 255, 255, 0.3); - -/* Link --------------------------- */ -$--link-color: $--color-primary-light-2 !default; -$--link-hover-color: $--color-primary !default; - -/* Border --------------------------- */ -$--border-width-base: 1px !default; -$--border-style-base: solid !default; -$--border-color-hover: $--color-text-placeholder !default; -$--border-base: $--border-width-base $--border-style-base $--border-color-base !default; -/// borderRadius|1|Radius|0 -$--border-radius-base: 4px !default; -/// borderRadius|1|Radius|0 -$--border-radius-small: 2px !default; -/// borderRadius|1|Radius|0 -$--border-radius-circle: 100% !default; -/// borderRadius|1|Radius|0 -$--border-radius-zero: 0 !default; - -// Box-shadow -/// boxShadow|1|Shadow|1 -$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default; -// boxShadow|1|Shadow|1 -$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default; -/// boxShadow|1|Shadow|1 -$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default; - -/* Fill --------------------------- */ -$--fill-base: $--color-white !default; - -/* Typography --------------------------- */ -$--font-path: 'fonts' !default; -$--font-display: 'auto' !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-large: 20px !default; -/// fontSize|1|Font Size|0 -$--font-size-large: 18px !default; -/// fontSize|1|Font Size|0 -$--font-size-medium: 16px !default; -/// fontSize|1|Font Size|0 -$--font-size-base: 14px !default; -/// fontSize|1|Font Size|0 -$--font-size-small: 13px !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-small: 12px !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-primary: 500 !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-secondary: 100 !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-primary: 24px !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-secondary: 16px !default; -$--font-color-disabled-base: #bbb !default; -/* Size --------------------------- */ -$--size-base: 14px !default; - -/* z-index --------------------------- */ -$--index-normal: 1 !default; -$--index-top: 1000 !default; -$--index-popper: 2000 !default; - -/* Disable base --------------------------- */ -$--disabled-fill-base: $--background-color-base !default; -$--disabled-color-base: $--color-text-placeholder !default; -$--disabled-border-base: $--border-color-light !default; - -/* Icon --------------------------- */ -$--icon-color: #666 !default; -$--icon-color-base: $--color-info !default; - -/* Checkbox --------------------------- */ -/// fontSize||Font|1 -$--checkbox-font-size: 14px !default; -/// fontWeight||Font|1 -$--checkbox-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--checkbox-font-color: $--color-text-regular !default; -$--checkbox-input-height: 14px !default; -$--checkbox-input-width: 14px !default; -/// borderRadius||Border|2 -$--checkbox-border-radius: $--border-radius-small !default; -/// color||Color|0 -$--checkbox-background-color: $--color-white !default; -$--checkbox-input-border: $--border-base !default; - -/// color||Color|0 -$--checkbox-disabled-border-color: $--border-color-base !default; -$--checkbox-disabled-input-fill: #edf2fc !default; -$--checkbox-disabled-icon-color: $--color-text-placeholder !default; - -$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default; -$--checkbox-disabled-checked-input-border-color: $--border-color-base !default; -$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--checkbox-checked-font-color: $--color-primary !default; -$--checkbox-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-checked-background-color: $--color-primary !default; -$--checkbox-checked-icon-color: $--fill-base !default; - -$--checkbox-input-border-color-hover: $--color-primary !default; -/// height||Other|4 -$--checkbox-bordered-height: 40px !default; -/// padding||Spacing|3 -$--checkbox-bordered-padding: 9px 20px 9px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default; -$--checkbox-bordered-medium-input-height: 14px !default; -$--checkbox-bordered-medium-input-width: 14px !default; -/// height||Other|4 -$--checkbox-bordered-medium-height: 36px !default; -$--checkbox-bordered-small-input-height: 12px !default; -$--checkbox-bordered-small-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-small-height: 32px !default; -$--checkbox-bordered-mini-input-height: 12px !default; -$--checkbox-bordered-mini-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-mini-height: 28px !default; - -/// color||Color|0 -$--checkbox-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--checkbox-button-checked-border-color: $--color-primary !default; - - - -/* Radio --------------------------- */ -/// fontSize||Font|1 -$--radio-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--radio-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--radio-font-color: $--color-text-regular !default; -$--radio-input-height: 14px !default; -$--radio-input-width: 14px !default; -/// borderRadius||Border|2 -$--radio-input-border-radius: $--border-radius-circle !default; -/// color||Color|0 -$--radio-input-background-color: $--color-white !default; -$--radio-input-border: $--border-base !default; -/// color||Color|0 -$--radio-input-border-color: $--border-color-base !default; -/// color||Color|0 -$--radio-icon-color: $--color-white !default; - -$--radio-disabled-input-border-color: $--disabled-border-base !default; -$--radio-disabled-input-fill: $--disabled-fill-base !default; -$--radio-disabled-icon-color: $--disabled-fill-base !default; - -$--radio-disabled-checked-input-border-color: $--disabled-border-base !default; -$--radio-disabled-checked-input-fill: $--disabled-fill-base !default; -$--radio-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--radio-checked-font-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-background-color: $--color-white !default; -/// color||Color|0 -$--radio-checked-icon-color: $--color-primary !default; - -$--radio-input-border-color-hover: $--color-primary !default; - -$--radio-bordered-height: 40px !default; -$--radio-bordered-padding: 12px 20px 0 10px !default; -$--radio-bordered-medium-padding: 10px 20px 0 10px !default; -$--radio-bordered-small-padding: 8px 15px 0 10px !default; -$--radio-bordered-mini-padding: 6px 15px 0 10px !default; -$--radio-bordered-medium-input-height: 14px !default; -$--radio-bordered-medium-input-width: 14px !default; -$--radio-bordered-medium-height: 36px !default; -$--radio-bordered-small-input-height: 12px !default; -$--radio-bordered-small-input-width: 12px !default; -$--radio-bordered-small-height: 32px !default; -$--radio-bordered-mini-input-height: 12px !default; -$--radio-bordered-mini-input-width: 12px !default; -$--radio-bordered-mini-height: 28px !default; - -/// fontSize||Font|1 -$--radio-button-font-size: $--font-size-base !default; -/// color||Color|0 -$--radio-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--radio-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--radio-button-checked-border-color: $--color-primary !default; -$--radio-button-disabled-checked-fill: $--border-color-extra-light !default; - -/* Select --------------------------- */ -$--select-border-color-hover: $--border-color-hover !default; -$--select-disabled-border: $--disabled-border-base !default; -/// fontSize||Font|1 -$--select-font-size: $--font-size-base !default; -$--select-close-hover-color: $--color-text-secondary !default; - -$--select-input-color: $--color-text-placeholder !default; -$--select-multiple-input-color: #666 !default; -/// color||Color|0 -$--select-input-focus-border-color: $--color-primary !default; -/// fontSize||Font|1 -$--select-input-font-size: 14px !default; - -$--select-option-color: $--color-text-regular !default; -$--select-option-disabled-color: $--color-text-placeholder !default; -$--select-option-disabled-background: $--color-white !default; -/// height||Other|4 -$--select-option-height: 34px !default; -$--select-option-hover-background: $--background-color-base !default; -/// color||Color|0 -$--select-option-selected-font-color: $--color-primary !default; -$--select-option-selected-hover: $--background-color-base !default; - -$--select-group-color: $--color-info !default; -$--select-group-height: 30px !default; -$--select-group-font-size: 12px !default; - -$--select-dropdown-background: $--color-white !default; -$--select-dropdown-shadow: $--box-shadow-light !default; -$--select-dropdown-empty-color: #999 !default; -/// height||Other|4 -$--select-dropdown-max-height: 274px !default; -$--select-dropdown-padding: 6px 0 !default; -$--select-dropdown-empty-padding: 10px 0 !default; -$--select-dropdown-border: solid 1px $--border-color-light !default; - -/* Alert --------------------------- */ -$--alert-padding: 8px 16px !default; -/// borderRadius||Border|2 -$--alert-border-radius: $--border-radius-base !default; -/// fontSize||Font|1 -$--alert-title-font-size: 13px !default; -/// fontSize||Font|1 -$--alert-description-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-customed-font-size: 13px !default; - -$--alert-success-color: $--color-success-lighter !default; -$--alert-info-color: $--color-info-lighter !default; -$--alert-warning-color: $--color-warning-lighter !default; -$--alert-danger-color: $--color-danger-lighter !default; - -/// height||Other|4 -$--alert-icon-size: 16px !default; -/// height||Other|4 -$--alert-icon-large-size: 28px !default; - -/* MessageBox --------------------------- */ -/// color||Color|0 -$--messagebox-title-color: $--color-text-primary !default; -$--msgbox-width: 420px !default; -$--msgbox-border-radius: 4px !default; -/// fontSize||Font|1 -$--messagebox-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--messagebox-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--messagebox-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--messagebox-error-font-size: 12px !default; -$--msgbox-padding-primary: 15px !default; -/// color||Color|0 -$--messagebox-success-color: $--color-success !default; -/// color||Color|0 -$--messagebox-info-color: $--color-info !default; -/// color||Color|0 -$--messagebox-warning-color: $--color-warning !default; -/// color||Color|0 -$--messagebox-danger-color: $--color-danger !default; - -/* Message --------------------------- */ -$--message-shadow: $--box-shadow-base !default; -$--message-min-width: 380px !default; -$--message-background-color: #edf2fc !default; -$--message-padding: 15px 15px 15px 20px !default; -/// color||Color|0 -$--message-close-icon-color: $--color-text-placeholder !default; -/// height||Other|4 -$--message-close-size: 16px !default; -/// color||Color|0 -$--message-close-hover-color: $--color-text-secondary !default; - -/// color||Color|0 -$--message-success-font-color: $--color-success !default; -/// color||Color|0 -$--message-info-font-color: $--color-info !default; -/// color||Color|0 -$--message-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--message-danger-font-color: $--color-danger !default; - -/* Notification --------------------------- */ -$--notification-width: 330px !default; -/// padding||Spacing|3 -$--notification-padding: 14px 26px 14px 13px !default; -$--notification-radius: 8px !default; -$--notification-shadow: $--box-shadow-light !default; -/// color||Color|0 -$--notification-border-color: $--border-color-lighter !default; -$--notification-icon-size: 24px !default; -$--notification-close-font-size: $--message-close-size !default; -$--notification-group-margin-left: 13px !default; -$--notification-group-margin-right: 8px !default; -/// fontSize||Font|1 -$--notification-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--notification-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--notification-title-font-size: 16px !default; -/// color||Color|0 -$--notification-title-color: $--color-text-primary !default; - -/// color||Color|0 -$--notification-close-color: $--color-text-secondary !default; -/// color||Color|0 -$--notification-close-hover-color: $--color-text-regular !default; - -/// color||Color|0 -$--notification-success-icon-color: $--color-success !default; -/// color||Color|0 -$--notification-info-icon-color: $--color-info !default; -/// color||Color|0 -$--notification-warning-icon-color: $--color-warning !default; -/// color||Color|0 -$--notification-danger-icon-color: $--color-danger !default; - -/* Input --------------------------- */ -$--input-font-size: $--font-size-base !default; -/// color||Color|0 -$--input-font-color: $--color-text-regular !default; -/// height||Other|4 -$--input-width: 140px !default; -/// height||Other|4 -$--input-height: 40px !default; -$--input-border: $--border-base !default; -$--input-border-color: $--border-color-base !default; -/// borderRadius||Border|2 -$--input-border-radius: $--border-radius-base !default; -$--input-border-color-hover: $--border-color-hover !default; -/// color||Color|0 -$--input-background-color: $--color-white !default; -$--input-fill-disabled: $--disabled-fill-base !default; -$--input-color-disabled: $--font-color-disabled-base !default; -/// color||Color|0 -$--input-icon-color: $--color-text-placeholder !default; -/// color||Color|0 -$--input-placeholder-color: $--color-text-placeholder !default; -$--input-max-width: 314px !default; - -$--input-hover-border: $--border-color-hover !default; -$--input-clear-hover-color: $--color-text-secondary !default; - -$--input-focus-border: $--color-primary !default; -$--input-focus-fill: $--color-white !default; - -$--input-disabled-fill: $--disabled-fill-base !default; -$--input-disabled-border: $--disabled-border-base !default; -$--input-disabled-color: $--disabled-color-base !default; -$--input-disabled-placeholder-color: $--color-text-placeholder !default; - -/// fontSize||Font|1 -$--input-medium-font-size: 14px !default; -/// height||Other|4 -$--input-medium-height: 36px !default; -/// fontSize||Font|1 -$--input-small-font-size: 13px !default; -/// height||Other|4 -$--input-small-height: 32px !default; -/// fontSize||Font|1 -$--input-mini-font-size: 12px !default; -/// height||Other|4 -$--input-mini-height: 28px !default; - -/* Cascader --------------------------- */ -/// color||Color|0 -$--cascader-menu-font-color: $--color-text-regular !default; -/// color||Color|0 -$--cascader-menu-selected-font-color: $--color-primary !default; -$--cascader-menu-fill: $--fill-base !default; -$--cascader-menu-font-size: $--font-size-base !default; -$--cascader-menu-radius: $--border-radius-base !default; -$--cascader-menu-border: solid 1px $--border-color-light !default; -$--cascader-menu-shadow: $--box-shadow-light !default; -$--cascader-node-background-hover: $--background-color-base !default; -$--cascader-node-color-disabled:$--color-text-placeholder !default; -$--cascader-color-empty:$--color-text-placeholder !default; -$--cascader-tag-background: #f0f2f5; - -/* Group --------------------------- */ -$--group-option-flex: 0 0 (1/5) * 100% !default; -$--group-option-offset-bottom: 12px !default; -$--group-option-fill-hover: rgba($--color-black, 0.06) !default; -$--group-title-color: $--color-black !default; -$--group-title-font-size: $--font-size-base !default; -$--group-title-width: 66px !default; - -/* Tab --------------------------- */ -$--tab-font-size: $--font-size-base !default; -$--tab-border-line: 1px solid #e4e4e4 !default; -$--tab-header-color-active: $--color-text-secondary !default; -$--tab-header-color-hover: $--color-text-regular !default; -$--tab-header-color: $--color-text-regular !default; -$--tab-header-fill-active: rgba($--color-black, 0.06) !default; -$--tab-header-fill-hover: rgba($--color-black, 0.06) !default; -$--tab-vertical-header-width: 90px !default; -$--tab-vertical-header-count-color: $--color-white !default; -$--tab-vertical-header-count-fill: $--color-text-secondary !default; - -/* Button --------------------------- */ -/// fontSize||Font|1 -$--button-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--button-font-weight: $--font-weight-primary !default; -/// borderRadius||Border|2 -$--button-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-padding-vertical: 12px !default; -/// padding||Spacing|3 -$--button-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-medium-font-size: $--font-size-base !default; -/// borderRadius||Border|2 -$--button-medium-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-medium-padding-vertical: 10px !default; -/// padding||Spacing|3 -$--button-medium-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-small-font-size: 12px !default; -$--button-small-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-small-padding-vertical: 9px !default; -/// padding||Spacing|3 -$--button-small-padding-horizontal: 15px !default; -/// fontSize||Font|1 -$--button-mini-font-size: 12px !default; -$--button-mini-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-mini-padding-vertical: 7px !default; -/// padding||Spacing|3 -$--button-mini-padding-horizontal: 15px !default; - -/// color||Color|0 -$--button-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--button-default-background-color: $--color-white !default; -/// color||Color|0 -$--button-default-border-color: $--border-color-base !default; - -/// color||Color|0 -$--button-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--button-disabled-border-color: $--border-color-lighter !default; - -/// color||Color|0 -$--button-primary-border-color: $--color-primary !default; -/// color||Color|0 -$--button-primary-font-color: $--color-white !default; -/// color||Color|0 -$--button-primary-background-color: $--color-primary !default; -/// color||Color|0 -$--button-success-border-color: $--color-success !default; -/// color||Color|0 -$--button-success-font-color: $--color-white !default; -/// color||Color|0 -$--button-success-background-color: $--color-success !default; -/// color||Color|0 -$--button-warning-border-color: $--color-warning !default; -/// color||Color|0 -$--button-warning-font-color: $--color-white !default; -/// color||Color|0 -$--button-warning-background-color: $--color-warning !default; -/// color||Color|0 -$--button-danger-border-color: $--color-danger !default; -/// color||Color|0 -$--button-danger-font-color: $--color-white !default; -/// color||Color|0 -$--button-danger-background-color: $--color-danger !default; -/// color||Color|0 -$--button-info-border-color: $--color-info !default; -/// color||Color|0 -$--button-info-font-color: $--color-white !default; -/// color||Color|0 -$--button-info-background-color: $--color-info !default; - -$--button-hover-tint-percent: 20% !default; -$--button-active-shade-percent: 10% !default; - - -/* cascader --------------------------- */ -$--cascader-height: 200px !default; - -/* Switch --------------------------- */ -/// color||Color|0 -$--switch-on-color: $--color-primary !default; -/// color||Color|0 -$--switch-off-color: $--border-color-base !default; -/// fontSize||Font|1 -$--switch-font-size: $--font-size-base !default; -$--switch-core-border-radius: 10px !default; -// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义 -$--switch-width: 40px !default; -// height||Other|4 -$--switch-height: 20px !default; -// height||Other|4 -$--switch-button-size: 16px !default; - -/* Dialog --------------------------- */ -$--dialog-background-color: $--color-white !default; -$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default; -/// fontSize||Font|1 -$--dialog-title-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--dialog-content-font-size: 14px !default; -/// fontLineHeight||LineHeight|2 -$--dialog-font-line-height: $--font-line-height-primary !default; -/// padding||Spacing|3 -$--dialog-padding-primary: 20px !default; - -/* Table --------------------------- */ -/// color||Color|0 -$--table-border-color: $--border-color-lighter !default; -$--table-border: 1px solid $--table-border-color !default; -/// color||Color|0 -$--table-font-color: $--color-text-regular !default; -/// color||Color|0 -$--table-header-font-color: $--color-text-secondary !default; -/// color||Color|0 -$--table-row-hover-background-color: $--background-color-base !default; -$--table-current-row-background-color: rgba(255, 255, 255, .12) !default; -/// color||Color|0 -$--table-header-background-color: $--color-white !default; -$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default; - -/* Pagination --------------------------- */ -/// fontSize||Font|1 -$--pagination-font-size: 13px !default; -/// color||Color|0 -$--pagination-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-font-color: $--color-text-primary !default; -$--pagination-border-radius: 3px !default; -/// color||Color|0 -$--pagination-button-color: $--color-text-primary !default; -/// height||Other|4 -$--pagination-button-width: 35.5px !default; -/// height||Other|4 -$--pagination-button-height: 28px !default; -/// color||Color|0 -$--pagination-button-disabled-color: $--color-text-placeholder !default; -/// color||Color|0 -$--pagination-button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-hover-color: $--color-primary !default; - -/* Popup --------------------------- */ -/// color||Color|0 -$--popup-modal-background-color: $--color-black !default; -/// opacity||Other|1 -$--popup-modal-opacity: 0.5 !default; - -/* Popover --------------------------- */ -/// color||Color|0 -$--popover-background-color: $--color-white !default; -/// fontSize||Font|1 -$--popover-font-size: $--font-size-base !default; -/// color||Color|0 -$--popover-border-color: $--border-color-lighter !default; -$--popover-arrow-size: 6px !default; -/// padding||Spacing|3 -$--popover-padding: 12px !default; -$--popover-padding-large: 18px 20px !default; -/// fontSize||Font|1 -$--popover-title-font-size: 16px !default; -/// color||Color|0 -$--popover-title-font-color: $--color-text-primary !default; - -/* Tooltip --------------------------- */ -/// color|1|Color|0 -$--tooltip-fill: $--color-text-primary !default; -/// color|1|Color|0 -$--tooltip-color: $--color-white !default; -/// fontSize||Font|1 -$--tooltip-font-size: 12px !default; -/// color||Color|0 -$--tooltip-border-color: $--color-text-primary !default; -$--tooltip-arrow-size: 6px !default; -/// padding||Spacing|3 -$--tooltip-padding: 10px !default; - -/* Tag --------------------------- */ -/// color||Color|0 -$--tag-info-color: $--color-info !default; -/// color||Color|0 -$--tag-primary-color: $--color-primary !default; -/// color||Color|0 -$--tag-success-color: $--color-success !default; -/// color||Color|0 -$--tag-warning-color: $--color-warning !default; -/// color||Color|0 -$--tag-danger-color: $--color-danger !default; -/// fontSize||Font|1 -$--tag-font-size: 12px !default; -$--tag-border-radius: 4px !default; -$--tag-padding: 0 10px !default; - -/* Tree --------------------------- */ -/// color||Color|0 -$--tree-node-hover-background-color: $--background-color-base !default; -/// color||Color|0 -$--tree-font-color: $--color-text-regular !default; -/// color||Color|0 -$--tree-expand-icon-color: $--color-text-placeholder !default; - -/* Dropdown --------------------------- */ -$--dropdown-menu-box-shadow: $--box-shadow-light !default; -$--dropdown-menuItem-hover-fill: $--color-menu-background !default; -$--dropdown-menuItem-hover-color: $--color-white !default; - -/* Badge --------------------------- */ -/// color||Color|0 -$--badge-background-color: $--color-danger !default; -$--badge-radius: 10px !default; -/// fontSize||Font|1 -$--badge-font-size: 12px !default; -/// padding||Spacing|3 -$--badge-padding: 6px !default; -/// height||Other|4 -$--badge-size: 18px !default; - -/* Card ---------------------------*/ -/// color||Color|0 -$--card-border-color: $--border-color-lighter !default; -$--card-border-radius: 4px !default; -/// padding||Spacing|3 -$--card-padding: 20px !default; - -/* Slider ---------------------------*/ -/// color||Color|0 -$--slider-main-background-color: $--color-primary !default; -/// color||Color|0 -$--slider-runway-background-color: $--border-color-light !default; -$--slider-button-hover-color: mix($--color-primary, black, 97%) !default; -$--slider-stop-background-color: $--color-white !default; -$--slider-disable-color: $--color-text-placeholder !default; -$--slider-margin: 16px 0 !default; -$--slider-border-radius: 3px !default; -/// height|1|Other|4 -$--slider-height: 6px !default; -/// height||Other|4 -$--slider-button-size: 16px !default; -$--slider-button-wrapper-size: 36px !default; -$--slider-button-wrapper-offset: -15px !default; - -/* Steps ---------------------------*/ -$--steps-border-color: $--disabled-border-base !default; -$--steps-border-radius: 4px !default; -$--steps-padding: 20px !default; - -/* Menu ---------------------------*/ -/// fontSize||Font|1 -$--menu-item-font-size: $--font-size-base !default; -/// color||Color|0 -$--menu-item-font-color: $--color-white !default; -/// color||Color|0 -$--menu-background-color: $--color-menu-background !default; -$--menu-item-hover-fill: $--color-menu-item-active-background !default; - -/* Rate ---------------------------*/ -$--rate-height: 20px !default; -/// fontSize||Font|1 -$--rate-font-size: $--font-size-base !default; -/// height||Other|3 -$--rate-icon-size: 18px !default; -/// margin||Spacing|2 -$--rate-icon-margin: 6px !default; -$--rate-icon-color: $--color-text-placeholder !default; - -/* DatePicker ---------------------------*/ -$--datepicker-font-color: $--color-text-regular !default; -/// color|1|Color|0 -$--datepicker-off-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--datepicker-header-font-color: $--color-text-regular !default; -$--datepicker-icon-color: $--color-text-primary !default; -$--datepicker-border-color: $--disabled-border-base !default; -$--datepicker-inner-border-color: #e4e4e4 !default; -/// color||Color|0 -$--datepicker-inrange-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-active-color: $--color-primary !default; -/// color||Color|0 -$--datepicker-hover-font-color: $--color-primary !default; -$--datepicker-cell-hover-color: #fff !default; - -/* Loading ---------------------------*/ -/// height||Other|4 -$--loading-spinner-size: 42px !default; -/// height||Other|4 -$--loading-fullscreen-spinner-size: 50px !default; - -/* Scrollbar ---------------------------*/ -$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default; -$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default; - -/* Carousel ---------------------------*/ -/// fontSize||Font|1 -$--carousel-arrow-font-size: 12px !default; -$--carousel-arrow-size: 36px !default; -$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default; -$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default; -/// width||Other|4 -$--carousel-indicator-width: 30px !default; -/// height||Other|4 -$--carousel-indicator-height: 2px !default; -$--carousel-indicator-padding-horizontal: 4px !default; -$--carousel-indicator-padding-vertical: 12px !default; -$--carousel-indicator-out-color: $--border-color-hover !default; - -/* Collapse ---------------------------*/ -/// color||Color|0 -$--collapse-border-color: $--border-color-lighter !default; -/// height||Other|4 -$--collapse-header-height: 48px !default; -/// color||Color|0 -$--collapse-header-background-color: $--color-white !default; -/// color||Color|0 -$--collapse-header-font-color: $--color-text-primary !default; -/// fontSize||Font|1 -$--collapse-header-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-background-color: $--color-white !default; -/// fontSize||Font|1 -$--collapse-content-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-font-color: $--color-text-primary !default; - -/* Transfer ---------------------------*/ -$--transfer-border-color: $--border-color-lighter !default; -$--transfer-border-radius: $--border-radius-base !default; -/// height||Other|4 -$--transfer-panel-width: 200px !default; -/// height||Other|4 -$--transfer-panel-header-height: 40px !default; -/// color||Color|0 -$--transfer-panel-header-background-color: $--background-color-base !default; -/// height||Other|4 -$--transfer-panel-footer-height: 40px !default; -/// height||Other|4 -$--transfer-panel-body-height: 246px !default; -/// height||Other|4 -$--transfer-item-height: 30px !default; -/// height||Other|4 -$--transfer-filter-height: 32px !default; - -/* Header - --------------------------*/ -$--header-padding: 0 20px !default; - -/* Footer ---------------------------*/ -$--footer-padding: 0 20px !default; - -/* Main ---------------------------*/ -$--main-padding: 20px !default; - -/* Timeline ---------------------------*/ -$--timeline-node-size-normal: 12px !default; -$--timeline-node-size-large: 14px !default; -$--timeline-node-color: $--border-color-light !default; - -/* Backtop ---------------------------*/ -/// color||Color|0 -$--backtop-background-color: $--color-white !default; -/// color||Color|0 -$--backtop-font-color: $--color-primary !default; -/// color||Color|0 -$--backtop-hover-background-color: $--border-color-extra-light !default; - -/* Link ---------------------------*/ -/// fontSize||Font|1 -$--link-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--link-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--link-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--link-default-active-color: $--color-primary !default; -/// color||Color|0 -$--link-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--link-primary-font-color: $--color-primary !default; -/// color||Color|0 -$--link-success-font-color: $--color-success !default; -/// color||Color|0 -$--link-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--link-danger-font-color: $--color-danger !default; -/// color||Color|0 -$--link-info-font-color: $--color-info !default; -/* Calendar ---------------------------*/ -/// border||Other|4 -$--calendar-border: $--table-border !default; -/// color||Other|4 -$--calendar-selected-background-color: #F2F8FE !default; -$--calendar-cell-width: 85px !default; - -/* Form --------------------------- */ -/// fontSize||Font|1 -$--form-label-font-size: $--font-size-base !default; - -/* Avatar ---------------------------*/ -/// color||Color|0 -$--avatar-font-color: #fff !default; -/// color||Color|0 -$--avatar-background-color: #C0C4CC !default; -/// fontSize||Font Size|1 -$--avatar-text-font-size: 14px !default; -/// fontSize||Font Size|1 -$--avatar-icon-font-size: 18px !default; -/// borderRadius||Border|2 -$--avatar-border-radius: $--border-radius-base !default; -/// size|1|Avatar Size|3 -$--avatar-large-size: 40px !default; -/// size|1|Avatar Size|3 -$--avatar-medium-size: 36px !default; -/// size|1|Avatar Size|3 -$--avatar-small-size: 28px !default; - -/* Break-point ---------------------------*/ -$--sm: 768px !default; -$--md: 992px !default; -$--lg: 1200px !default; -$--xl: 1920px !default; - -$--breakpoints: ( - 'xs' : (max-width: $--sm - 1), - 'sm' : (min-width: $--sm), - 'md' : (min-width: $--md), - 'lg' : (min-width: $--lg), - 'xl' : (min-width: $--xl) -); - -$--breakpoints-spec: ( - 'xs-only' : (max-width: $--sm - 1), - 'sm-and-up' : (min-width: $--sm), - 'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})", - 'sm-and-down': (max-width: $--md - 1), - 'md-and-up' : (min-width: $--md), - 'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})", - 'md-and-down': (max-width: $--lg - 1), - 'lg-and-up' : (min-width: $--lg), - 'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})", - 'lg-and-down': (max-width: $--xl - 1), - 'xl-only' : (min-width: $--xl), -); diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-dark.scss b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-dark.scss deleted file mode 100644 index ed98457d..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-dark.scss +++ /dev/null @@ -1,1000 +0,0 @@ -/* Element Chalk Variables */ - -// Special comment for theme configurator -// type|skipAutoTranslation|Category|Order -// skipAutoTranslation 1 - -/* Transition --------------------------- */ -$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default; -$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--fade-linear-transition: opacity 200ms linear !default; -$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default; -$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default; - -/* Color --------------------------- */ -/// color|1|Brand Color|0 -$--color-primary: #409EFF !default; -/// color|1|Background Color|4 -$--color-white: #FFFFFF !default; -/// color|1|Background Color|4 -$--color-black: #000000 !default; -$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */ -$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */ -$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */ -$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */ -$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */ -$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */ -$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */ -$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ -$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ -/// color|1|Functional Color|1 -$--color-success: #67C23A !default; -/// color|1|Functional Color|1 -$--color-warning: #E6A23C !default; -/// color|1|Functional Color|1 -$--color-danger: #F56C6C !default; -/// color|1|Functional Color|1 -$--color-info: #909399 !default; - -$--color-success-light: mix($--color-white, $--color-success, 80%) !default; -$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default; -$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default; -$--color-info-light: mix($--color-white, $--color-info, 80%) !default; - -$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default; -$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default; -$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default; -$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default; -/// color|1|Font Color|2 -$--color-text-primary: #303133 !default; -/// color|1|Font Color|2 -$--color-text-regular: #606266 !default; -/// color|1|Font Color|2 -$--color-text-secondary: #909399 !default; -/// color|1|Font Color|2 -$--color-text-placeholder: #C0C4CC !default; -/// color|1|Border Color|3 -$--border-color-base: #DCDFE6 !default; -/// color|1|Border Color|3 -$--border-color-light: #E4E7ED !default; -/// color|1|Border Color|3 -$--border-color-lighter: #EBEEF5 !default; -/// color|1|Border Color|3 -$--border-color-extra-light: #F2F6FC !default; - -// Background -/// color|1|Background Color|4 -$--background-color-base: #F5F7FA !default; - -// color for left sidebar title -$--color-sidebar-title-text: #FFFFFF; -// color for left sidebar background -$--color-menu-background: #272C34; -$--color-menu-item-active-text-color: #FFFFFF; -$--color-menu-item-active-background: $--color-primary; -/* Link --------------------------- */ -$--link-color: $--color-primary-light-2 !default; -$--link-hover-color: $--color-primary !default; - -/* Border --------------------------- */ -$--border-width-base: 1px !default; -$--border-style-base: solid !default; -$--border-color-hover: $--color-text-placeholder !default; -$--border-base: $--border-width-base $--border-style-base $--border-color-base !default; -/// borderRadius|1|Radius|0 -$--border-radius-base: 4px !default; -/// borderRadius|1|Radius|0 -$--border-radius-small: 2px !default; -/// borderRadius|1|Radius|0 -$--border-radius-circle: 100% !default; -/// borderRadius|1|Radius|0 -$--border-radius-zero: 0 !default; - -// Box-shadow -/// boxShadow|1|Shadow|1 -$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default; -// boxShadow|1|Shadow|1 -$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default; -/// boxShadow|1|Shadow|1 -$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default; - -/* Fill --------------------------- */ -$--fill-base: $--color-white !default; - -/* Typography --------------------------- */ -$--font-path: 'fonts' !default; -$--font-display: 'auto' !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-large: 20px !default; -/// fontSize|1|Font Size|0 -$--font-size-large: 18px !default; -/// fontSize|1|Font Size|0 -$--font-size-medium: 16px !default; -/// fontSize|1|Font Size|0 -$--font-size-base: 14px !default; -/// fontSize|1|Font Size|0 -$--font-size-small: 13px !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-small: 12px !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-primary: 500 !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-secondary: 100 !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-primary: 24px !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-secondary: 16px !default; -$--font-color-disabled-base: #bbb !default; -/* Size --------------------------- */ -$--size-base: 14px !default; - -/* z-index --------------------------- */ -$--index-normal: 1 !default; -$--index-top: 1000 !default; -$--index-popper: 2000 !default; - -/* Disable base --------------------------- */ -$--disabled-fill-base: $--background-color-base !default; -$--disabled-color-base: $--color-text-placeholder !default; -$--disabled-border-base: $--border-color-light !default; - -/* Icon --------------------------- */ -$--icon-color: #666 !default; -$--icon-color-base: $--color-info !default; - -/* Checkbox --------------------------- */ -/// fontSize||Font|1 -$--checkbox-font-size: 14px !default; -/// fontWeight||Font|1 -$--checkbox-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--checkbox-font-color: $--color-text-regular !default; -$--checkbox-input-height: 14px !default; -$--checkbox-input-width: 14px !default; -/// borderRadius||Border|2 -$--checkbox-border-radius: $--border-radius-small !default; -/// color||Color|0 -$--checkbox-background-color: $--color-white !default; -$--checkbox-input-border: $--border-base !default; - -/// color||Color|0 -$--checkbox-disabled-border-color: $--border-color-base !default; -$--checkbox-disabled-input-fill: #edf2fc !default; -$--checkbox-disabled-icon-color: $--color-text-placeholder !default; - -$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default; -$--checkbox-disabled-checked-input-border-color: $--border-color-base !default; -$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--checkbox-checked-font-color: $--color-primary !default; -$--checkbox-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-checked-background-color: $--color-primary !default; -$--checkbox-checked-icon-color: $--fill-base !default; - -$--checkbox-input-border-color-hover: $--color-primary !default; -/// height||Other|4 -$--checkbox-bordered-height: 40px !default; -/// padding||Spacing|3 -$--checkbox-bordered-padding: 9px 20px 9px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default; -$--checkbox-bordered-medium-input-height: 14px !default; -$--checkbox-bordered-medium-input-width: 14px !default; -/// height||Other|4 -$--checkbox-bordered-medium-height: 36px !default; -$--checkbox-bordered-small-input-height: 12px !default; -$--checkbox-bordered-small-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-small-height: 32px !default; -$--checkbox-bordered-mini-input-height: 12px !default; -$--checkbox-bordered-mini-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-mini-height: 28px !default; - -/// color||Color|0 -$--checkbox-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--checkbox-button-checked-border-color: $--color-primary !default; - - - -/* Radio --------------------------- */ -/// fontSize||Font|1 -$--radio-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--radio-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--radio-font-color: $--color-text-regular !default; -$--radio-input-height: 14px !default; -$--radio-input-width: 14px !default; -/// borderRadius||Border|2 -$--radio-input-border-radius: $--border-radius-circle !default; -/// color||Color|0 -$--radio-input-background-color: $--color-white !default; -$--radio-input-border: $--border-base !default; -/// color||Color|0 -$--radio-input-border-color: $--border-color-base !default; -/// color||Color|0 -$--radio-icon-color: $--color-white !default; - -$--radio-disabled-input-border-color: $--disabled-border-base !default; -$--radio-disabled-input-fill: $--disabled-fill-base !default; -$--radio-disabled-icon-color: $--disabled-fill-base !default; - -$--radio-disabled-checked-input-border-color: $--disabled-border-base !default; -$--radio-disabled-checked-input-fill: $--disabled-fill-base !default; -$--radio-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--radio-checked-font-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-background-color: $--color-white !default; -/// color||Color|0 -$--radio-checked-icon-color: $--color-primary !default; - -$--radio-input-border-color-hover: $--color-primary !default; - -$--radio-bordered-height: 40px !default; -$--radio-bordered-padding: 12px 20px 0 10px !default; -$--radio-bordered-medium-padding: 10px 20px 0 10px !default; -$--radio-bordered-small-padding: 8px 15px 0 10px !default; -$--radio-bordered-mini-padding: 6px 15px 0 10px !default; -$--radio-bordered-medium-input-height: 14px !default; -$--radio-bordered-medium-input-width: 14px !default; -$--radio-bordered-medium-height: 36px !default; -$--radio-bordered-small-input-height: 12px !default; -$--radio-bordered-small-input-width: 12px !default; -$--radio-bordered-small-height: 32px !default; -$--radio-bordered-mini-input-height: 12px !default; -$--radio-bordered-mini-input-width: 12px !default; -$--radio-bordered-mini-height: 28px !default; - -/// fontSize||Font|1 -$--radio-button-font-size: $--font-size-base !default; -/// color||Color|0 -$--radio-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--radio-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--radio-button-checked-border-color: $--color-primary !default; -$--radio-button-disabled-checked-fill: $--border-color-extra-light !default; - -/* Select --------------------------- */ -$--select-border-color-hover: $--border-color-hover !default; -$--select-disabled-border: $--disabled-border-base !default; -/// fontSize||Font|1 -$--select-font-size: $--font-size-base !default; -$--select-close-hover-color: $--color-text-secondary !default; - -$--select-input-color: $--color-text-placeholder !default; -$--select-multiple-input-color: #666 !default; -/// color||Color|0 -$--select-input-focus-border-color: $--color-primary !default; -/// fontSize||Font|1 -$--select-input-font-size: 14px !default; - -$--select-option-color: $--color-text-regular !default; -$--select-option-disabled-color: $--color-text-placeholder !default; -$--select-option-disabled-background: $--color-white !default; -/// height||Other|4 -$--select-option-height: 34px !default; -$--select-option-hover-background: $--background-color-base !default; -/// color||Color|0 -$--select-option-selected-font-color: $--color-primary !default; -$--select-option-selected-hover: $--background-color-base !default; - -$--select-group-color: $--color-info !default; -$--select-group-height: 30px !default; -$--select-group-font-size: 12px !default; - -$--select-dropdown-background: $--color-white !default; -$--select-dropdown-shadow: $--box-shadow-light !default; -$--select-dropdown-empty-color: #999 !default; -/// height||Other|4 -$--select-dropdown-max-height: 274px !default; -$--select-dropdown-padding: 6px 0 !default; -$--select-dropdown-empty-padding: 10px 0 !default; -$--select-dropdown-border: solid 1px $--border-color-light !default; - -/* Alert --------------------------- */ -$--alert-padding: 8px 16px !default; -/// borderRadius||Border|2 -$--alert-border-radius: $--border-radius-base !default; -/// fontSize||Font|1 -$--alert-title-font-size: 13px !default; -/// fontSize||Font|1 -$--alert-description-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-customed-font-size: 13px !default; - -$--alert-success-color: $--color-success-lighter !default; -$--alert-info-color: $--color-info-lighter !default; -$--alert-warning-color: $--color-warning-lighter !default; -$--alert-danger-color: $--color-danger-lighter !default; - -/// height||Other|4 -$--alert-icon-size: 16px !default; -/// height||Other|4 -$--alert-icon-large-size: 28px !default; - -/* MessageBox --------------------------- */ -/// color||Color|0 -$--messagebox-title-color: $--color-text-primary !default; -$--msgbox-width: 420px !default; -$--msgbox-border-radius: 4px !default; -/// fontSize||Font|1 -$--messagebox-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--messagebox-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--messagebox-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--messagebox-error-font-size: 12px !default; -$--msgbox-padding-primary: 15px !default; -/// color||Color|0 -$--messagebox-success-color: $--color-success !default; -/// color||Color|0 -$--messagebox-info-color: $--color-info !default; -/// color||Color|0 -$--messagebox-warning-color: $--color-warning !default; -/// color||Color|0 -$--messagebox-danger-color: $--color-danger !default; - -/* Message --------------------------- */ -$--message-shadow: $--box-shadow-base !default; -$--message-min-width: 380px !default; -$--message-background-color: #edf2fc !default; -$--message-padding: 15px 15px 15px 20px !default; -/// color||Color|0 -$--message-close-icon-color: $--color-text-placeholder !default; -/// height||Other|4 -$--message-close-size: 16px !default; -/// color||Color|0 -$--message-close-hover-color: $--color-text-secondary !default; - -/// color||Color|0 -$--message-success-font-color: $--color-success !default; -/// color||Color|0 -$--message-info-font-color: $--color-info !default; -/// color||Color|0 -$--message-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--message-danger-font-color: $--color-danger !default; - -/* Notification --------------------------- */ -$--notification-width: 330px !default; -/// padding||Spacing|3 -$--notification-padding: 14px 26px 14px 13px !default; -$--notification-radius: 8px !default; -$--notification-shadow: $--box-shadow-light !default; -/// color||Color|0 -$--notification-border-color: $--border-color-lighter !default; -$--notification-icon-size: 24px !default; -$--notification-close-font-size: $--message-close-size !default; -$--notification-group-margin-left: 13px !default; -$--notification-group-margin-right: 8px !default; -/// fontSize||Font|1 -$--notification-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--notification-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--notification-title-font-size: 16px !default; -/// color||Color|0 -$--notification-title-color: $--color-text-primary !default; - -/// color||Color|0 -$--notification-close-color: $--color-text-secondary !default; -/// color||Color|0 -$--notification-close-hover-color: $--color-text-regular !default; - -/// color||Color|0 -$--notification-success-icon-color: $--color-success !default; -/// color||Color|0 -$--notification-info-icon-color: $--color-info !default; -/// color||Color|0 -$--notification-warning-icon-color: $--color-warning !default; -/// color||Color|0 -$--notification-danger-icon-color: $--color-danger !default; - -/* Input --------------------------- */ -$--input-font-size: $--font-size-base !default; -/// color||Color|0 -$--input-font-color: $--color-text-regular !default; -/// height||Other|4 -$--input-width: 140px !default; -/// height||Other|4 -$--input-height: 40px !default; -$--input-border: $--border-base !default; -$--input-border-color: $--border-color-base !default; -/// borderRadius||Border|2 -$--input-border-radius: $--border-radius-base !default; -$--input-border-color-hover: $--border-color-hover !default; -/// color||Color|0 -$--input-background-color: $--color-white !default; -$--input-fill-disabled: $--disabled-fill-base !default; -$--input-color-disabled: $--font-color-disabled-base !default; -/// color||Color|0 -$--input-icon-color: $--color-text-placeholder !default; -/// color||Color|0 -$--input-placeholder-color: $--color-text-placeholder !default; -$--input-max-width: 314px !default; - -$--input-hover-border: $--border-color-hover !default; -$--input-clear-hover-color: $--color-text-secondary !default; - -$--input-focus-border: $--color-primary !default; -$--input-focus-fill: $--color-white !default; - -$--input-disabled-fill: $--disabled-fill-base !default; -$--input-disabled-border: $--disabled-border-base !default; -$--input-disabled-color: $--disabled-color-base !default; -$--input-disabled-placeholder-color: $--color-text-placeholder !default; - -/// fontSize||Font|1 -$--input-medium-font-size: 14px !default; -/// height||Other|4 -$--input-medium-height: 36px !default; -/// fontSize||Font|1 -$--input-small-font-size: 13px !default; -/// height||Other|4 -$--input-small-height: 32px !default; -/// fontSize||Font|1 -$--input-mini-font-size: 12px !default; -/// height||Other|4 -$--input-mini-height: 28px !default; - -/* Cascader --------------------------- */ -/// color||Color|0 -$--cascader-menu-font-color: $--color-text-regular !default; -/// color||Color|0 -$--cascader-menu-selected-font-color: $--color-primary !default; -$--cascader-menu-fill: $--fill-base !default; -$--cascader-menu-font-size: $--font-size-base !default; -$--cascader-menu-radius: $--border-radius-base !default; -$--cascader-menu-border: solid 1px $--border-color-light !default; -$--cascader-menu-shadow: $--box-shadow-light !default; -$--cascader-node-background-hover: $--background-color-base !default; -$--cascader-node-color-disabled:$--color-text-placeholder !default; -$--cascader-color-empty:$--color-text-placeholder !default; -$--cascader-tag-background: #f0f2f5; - -/* Group --------------------------- */ -$--group-option-flex: 0 0 (1/5) * 100% !default; -$--group-option-offset-bottom: 12px !default; -$--group-option-fill-hover: rgba($--color-black, 0.06) !default; -$--group-title-color: $--color-black !default; -$--group-title-font-size: $--font-size-base !default; -$--group-title-width: 66px !default; - -/* Tab --------------------------- */ -$--tab-font-size: $--font-size-base !default; -$--tab-border-line: 1px solid #e4e4e4 !default; -$--tab-header-color-active: $--color-text-secondary !default; -$--tab-header-color-hover: $--color-text-regular !default; -$--tab-header-color: $--color-text-regular !default; -$--tab-header-fill-active: rgba($--color-black, 0.06) !default; -$--tab-header-fill-hover: rgba($--color-black, 0.06) !default; -$--tab-vertical-header-width: 90px !default; -$--tab-vertical-header-count-color: $--color-white !default; -$--tab-vertical-header-count-fill: $--color-text-secondary !default; - -/* Button --------------------------- */ -/// fontSize||Font|1 -$--button-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--button-font-weight: $--font-weight-primary !default; -/// borderRadius||Border|2 -$--button-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-padding-vertical: 12px !default; -/// padding||Spacing|3 -$--button-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-medium-font-size: $--font-size-base !default; -/// borderRadius||Border|2 -$--button-medium-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-medium-padding-vertical: 10px !default; -/// padding||Spacing|3 -$--button-medium-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-small-font-size: 12px !default; -$--button-small-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-small-padding-vertical: 9px !default; -/// padding||Spacing|3 -$--button-small-padding-horizontal: 15px !default; -/// fontSize||Font|1 -$--button-mini-font-size: 12px !default; -$--button-mini-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-mini-padding-vertical: 7px !default; -/// padding||Spacing|3 -$--button-mini-padding-horizontal: 15px !default; - -/// color||Color|0 -$--button-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--button-default-background-color: $--color-white !default; -/// color||Color|0 -$--button-default-border-color: $--border-color-base !default; - -/// color||Color|0 -$--button-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--button-disabled-border-color: $--border-color-lighter !default; - -/// color||Color|0 -$--button-primary-border-color: $--color-primary !default; -/// color||Color|0 -$--button-primary-font-color: $--color-white !default; -/// color||Color|0 -$--button-primary-background-color: $--color-primary !default; -/// color||Color|0 -$--button-success-border-color: $--color-success !default; -/// color||Color|0 -$--button-success-font-color: $--color-white !default; -/// color||Color|0 -$--button-success-background-color: $--color-success !default; -/// color||Color|0 -$--button-warning-border-color: $--color-warning !default; -/// color||Color|0 -$--button-warning-font-color: $--color-white !default; -/// color||Color|0 -$--button-warning-background-color: $--color-warning !default; -/// color||Color|0 -$--button-danger-border-color: $--color-danger !default; -/// color||Color|0 -$--button-danger-font-color: $--color-white !default; -/// color||Color|0 -$--button-danger-background-color: $--color-danger !default; -/// color||Color|0 -$--button-info-border-color: $--color-info !default; -/// color||Color|0 -$--button-info-font-color: $--color-white !default; -/// color||Color|0 -$--button-info-background-color: $--color-info !default; - -$--button-hover-tint-percent: 20% !default; -$--button-active-shade-percent: 10% !default; - - -/* cascader --------------------------- */ -$--cascader-height: 200px !default; - -/* Switch --------------------------- */ -/// color||Color|0 -$--switch-on-color: $--color-primary !default; -/// color||Color|0 -$--switch-off-color: $--border-color-base !default; -/// fontSize||Font|1 -$--switch-font-size: $--font-size-base !default; -$--switch-core-border-radius: 10px !default; -// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义 -$--switch-width: 40px !default; -// height||Other|4 -$--switch-height: 20px !default; -// height||Other|4 -$--switch-button-size: 16px !default; - -/* Dialog --------------------------- */ -$--dialog-background-color: $--color-white !default; -$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default; -/// fontSize||Font|1 -$--dialog-title-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--dialog-content-font-size: 14px !default; -/// fontLineHeight||LineHeight|2 -$--dialog-font-line-height: $--font-line-height-primary !default; -/// padding||Spacing|3 -$--dialog-padding-primary: 20px !default; - -/* Table --------------------------- */ -/// color||Color|0 -$--table-border-color: $--border-color-lighter !default; -$--table-border: 1px solid $--table-border-color !default; -/// color||Color|0 -$--table-font-color: $--color-text-regular !default; -/// color||Color|0 -$--table-header-font-color: $--color-text-secondary !default; -/// color||Color|0 -$--table-row-hover-background-color: $--background-color-base !default; -$--table-current-row-background-color: $--color-primary-light-9 !default; -/// color||Color|0 -$--table-header-background-color: $--color-white !default; -$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default; - -/* Pagination --------------------------- */ -/// fontSize||Font|1 -$--pagination-font-size: 13px !default; -/// color||Color|0 -$--pagination-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-font-color: $--color-text-primary !default; -$--pagination-border-radius: 3px !default; -/// color||Color|0 -$--pagination-button-color: $--color-text-primary !default; -/// height||Other|4 -$--pagination-button-width: 35.5px !default; -/// height||Other|4 -$--pagination-button-height: 28px !default; -/// color||Color|0 -$--pagination-button-disabled-color: $--color-text-placeholder !default; -/// color||Color|0 -$--pagination-button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-hover-color: $--color-primary !default; - -/* Popup --------------------------- */ -/// color||Color|0 -$--popup-modal-background-color: $--color-black !default; -/// opacity||Other|1 -$--popup-modal-opacity: 0.5 !default; - -/* Popover --------------------------- */ -/// color||Color|0 -$--popover-background-color: $--color-white !default; -/// fontSize||Font|1 -$--popover-font-size: $--font-size-base !default; -/// color||Color|0 -$--popover-border-color: $--border-color-lighter !default; -$--popover-arrow-size: 6px !default; -/// padding||Spacing|3 -$--popover-padding: 12px !default; -$--popover-padding-large: 18px 20px !default; -/// fontSize||Font|1 -$--popover-title-font-size: 16px !default; -/// color||Color|0 -$--popover-title-font-color: $--color-text-primary !default; - -/* Tooltip --------------------------- */ -/// color|1|Color|0 -$--tooltip-fill: $--color-text-primary !default; -/// color|1|Color|0 -$--tooltip-color: $--color-white !default; -/// fontSize||Font|1 -$--tooltip-font-size: 12px !default; -/// color||Color|0 -$--tooltip-border-color: $--color-text-primary !default; -$--tooltip-arrow-size: 6px !default; -/// padding||Spacing|3 -$--tooltip-padding: 10px !default; - -/* Tag --------------------------- */ -/// color||Color|0 -$--tag-info-color: $--color-info !default; -/// color||Color|0 -$--tag-primary-color: $--color-primary !default; -/// color||Color|0 -$--tag-success-color: $--color-success !default; -/// color||Color|0 -$--tag-warning-color: $--color-warning !default; -/// color||Color|0 -$--tag-danger-color: $--color-danger !default; -/// fontSize||Font|1 -$--tag-font-size: 12px !default; -$--tag-border-radius: 4px !default; -$--tag-padding: 0 10px !default; - -/* Tree --------------------------- */ -/// color||Color|0 -$--tree-node-hover-background-color: $--background-color-base !default; -/// color||Color|0 -$--tree-font-color: $--color-text-regular !default; -/// color||Color|0 -$--tree-expand-icon-color: $--color-text-placeholder !default; - -/* Dropdown --------------------------- */ -$--dropdown-menu-box-shadow: $--box-shadow-light !default; -$--dropdown-menuItem-hover-fill: $--color-menu-item-active-background !default; -$--dropdown-menuItem-hover-color: $--color-white !default; - -/* Badge --------------------------- */ -/// color||Color|0 -$--badge-background-color: $--color-danger !default; -$--badge-radius: 10px !default; -/// fontSize||Font|1 -$--badge-font-size: 12px !default; -/// padding||Spacing|3 -$--badge-padding: 6px !default; -/// height||Other|4 -$--badge-size: 18px !default; - -/* Card ---------------------------*/ -/// color||Color|0 -$--card-border-color: $--border-color-lighter !default; -$--card-border-radius: 4px !default; -/// padding||Spacing|3 -$--card-padding: 20px !default; - -/* Slider ---------------------------*/ -/// color||Color|0 -$--slider-main-background-color: $--color-primary !default; -/// color||Color|0 -$--slider-runway-background-color: $--border-color-light !default; -$--slider-button-hover-color: mix($--color-primary, black, 97%) !default; -$--slider-stop-background-color: $--color-white !default; -$--slider-disable-color: $--color-text-placeholder !default; -$--slider-margin: 16px 0 !default; -$--slider-border-radius: 3px !default; -/// height|1|Other|4 -$--slider-height: 6px !default; -/// height||Other|4 -$--slider-button-size: 16px !default; -$--slider-button-wrapper-size: 36px !default; -$--slider-button-wrapper-offset: -15px !default; - -/* Steps ---------------------------*/ -$--steps-border-color: $--disabled-border-base !default; -$--steps-border-radius: 4px !default; -$--steps-padding: 20px !default; - -/* Menu ---------------------------*/ -/// fontSize||Font|1 -$--menu-item-font-size: $--font-size-base !default; -/// color||Color|0 -$--menu-item-font-color: $--color-white !default; -/// color||Color|0 -$--menu-background-color: $--color-menu-background !default; -$--menu-item-hover-fill: $--color-primary !default; - -/* Rate ---------------------------*/ -$--rate-height: 20px !default; -/// fontSize||Font|1 -$--rate-font-size: $--font-size-base !default; -/// height||Other|3 -$--rate-icon-size: 18px !default; -/// margin||Spacing|2 -$--rate-icon-margin: 6px !default; -$--rate-icon-color: $--color-text-placeholder !default; - -/* DatePicker ---------------------------*/ -$--datepicker-font-color: $--color-text-regular !default; -/// color|1|Color|0 -$--datepicker-off-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--datepicker-header-font-color: $--color-text-regular !default; -$--datepicker-icon-color: $--color-text-primary !default; -$--datepicker-border-color: $--disabled-border-base !default; -$--datepicker-inner-border-color: #e4e4e4 !default; -/// color||Color|0 -$--datepicker-inrange-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-active-color: $--color-primary !default; -/// color||Color|0 -$--datepicker-hover-font-color: $--color-primary !default; -$--datepicker-cell-hover-color: #fff !default; - -/* Loading ---------------------------*/ -/// height||Other|4 -$--loading-spinner-size: 42px !default; -/// height||Other|4 -$--loading-fullscreen-spinner-size: 50px !default; - -/* Scrollbar ---------------------------*/ -$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default; -$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default; - -/* Carousel ---------------------------*/ -/// fontSize||Font|1 -$--carousel-arrow-font-size: 12px !default; -$--carousel-arrow-size: 36px !default; -$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default; -$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default; -/// width||Other|4 -$--carousel-indicator-width: 30px !default; -/// height||Other|4 -$--carousel-indicator-height: 2px !default; -$--carousel-indicator-padding-horizontal: 4px !default; -$--carousel-indicator-padding-vertical: 12px !default; -$--carousel-indicator-out-color: $--border-color-hover !default; - -/* Collapse ---------------------------*/ -/// color||Color|0 -$--collapse-border-color: $--border-color-lighter !default; -/// height||Other|4 -$--collapse-header-height: 48px !default; -/// color||Color|0 -$--collapse-header-background-color: $--color-white !default; -/// color||Color|0 -$--collapse-header-font-color: $--color-text-primary !default; -/// fontSize||Font|1 -$--collapse-header-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-background-color: $--color-white !default; -/// fontSize||Font|1 -$--collapse-content-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-font-color: $--color-text-primary !default; - -/* Transfer ---------------------------*/ -$--transfer-border-color: $--border-color-lighter !default; -$--transfer-border-radius: $--border-radius-base !default; -/// height||Other|4 -$--transfer-panel-width: 200px !default; -/// height||Other|4 -$--transfer-panel-header-height: 40px !default; -/// color||Color|0 -$--transfer-panel-header-background-color: $--background-color-base !default; -/// height||Other|4 -$--transfer-panel-footer-height: 40px !default; -/// height||Other|4 -$--transfer-panel-body-height: 246px !default; -/// height||Other|4 -$--transfer-item-height: 30px !default; -/// height||Other|4 -$--transfer-filter-height: 32px !default; - -/* Header - --------------------------*/ -$--header-padding: 0 20px !default; - -/* Footer ---------------------------*/ -$--footer-padding: 0 20px !default; - -/* Main ---------------------------*/ -$--main-padding: 20px !default; - -/* Timeline ---------------------------*/ -$--timeline-node-size-normal: 12px !default; -$--timeline-node-size-large: 14px !default; -$--timeline-node-color: $--border-color-light !default; - -/* Backtop ---------------------------*/ -/// color||Color|0 -$--backtop-background-color: $--color-white !default; -/// color||Color|0 -$--backtop-font-color: $--color-primary !default; -/// color||Color|0 -$--backtop-hover-background-color: $--border-color-extra-light !default; - -/* Link ---------------------------*/ -/// fontSize||Font|1 -$--link-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--link-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--link-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--link-default-active-color: $--color-primary !default; -/// color||Color|0 -$--link-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--link-primary-font-color: $--color-primary !default; -/// color||Color|0 -$--link-success-font-color: $--color-success !default; -/// color||Color|0 -$--link-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--link-danger-font-color: $--color-danger !default; -/// color||Color|0 -$--link-info-font-color: $--color-info !default; -/* Calendar ---------------------------*/ -/// border||Other|4 -$--calendar-border: $--table-border !default; -/// color||Other|4 -$--calendar-selected-background-color: #F2F8FE !default; -$--calendar-cell-width: 85px !default; - -/* Form --------------------------- */ -/// fontSize||Font|1 -$--form-label-font-size: $--font-size-base !default; - -/* Avatar ---------------------------*/ -/// color||Color|0 -$--avatar-font-color: #fff !default; -/// color||Color|0 -$--avatar-background-color: #C0C4CC !default; -/// fontSize||Font Size|1 -$--avatar-text-font-size: 14px !default; -/// fontSize||Font Size|1 -$--avatar-icon-font-size: 18px !default; -/// borderRadius||Border|2 -$--avatar-border-radius: $--border-radius-base !default; -/// size|1|Avatar Size|3 -$--avatar-large-size: 40px !default; -/// size|1|Avatar Size|3 -$--avatar-medium-size: 36px !default; -/// size|1|Avatar Size|3 -$--avatar-small-size: 28px !default; - -/* Break-point ---------------------------*/ -$--sm: 768px !default; -$--md: 992px !default; -$--lg: 1200px !default; -$--xl: 1920px !default; - -$--breakpoints: ( - 'xs' : (max-width: $--sm - 1), - 'sm' : (min-width: $--sm), - 'md' : (min-width: $--md), - 'lg' : (min-width: $--lg), - 'xl' : (min-width: $--xl) -); - -$--breakpoints-spec: ( - 'xs-only' : (max-width: $--sm - 1), - 'sm-and-up' : (min-width: $--sm), - 'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})", - 'sm-and-down': (max-width: $--md - 1), - 'md-and-up' : (min-width: $--md), - 'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})", - 'md-and-down': (max-width: $--lg - 1), - 'lg-and-up' : (min-width: $--lg), - 'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})", - 'lg-and-down': (max-width: $--xl - 1), - 'xl-only' : (min-width: $--xl), -); diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-green.scss b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-green.scss deleted file mode 100644 index e51e10f9..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-green.scss +++ /dev/null @@ -1,1000 +0,0 @@ -/* Element Chalk Variables */ - -// Special comment for theme configurator -// type|skipAutoTranslation|Category|Order -// skipAutoTranslation 1 - -/* Transition --------------------------- */ -$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default; -$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--fade-linear-transition: opacity 200ms linear !default; -$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default; -$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default; - -/* Color --------------------------- */ -/// color|1|Brand Color|0 -$--color-primary: #00988B !default; -/// color|1|Background Color|4 -$--color-white: #FFFFFF !default; -/// color|1|Background Color|4 -$--color-black: #000000 !default; -$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */ -$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */ -$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */ -$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */ -$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */ -$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */ -$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */ -$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ -$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ -/// color|1|Functional Color|1 -$--color-success: #67C23A !default; -/// color|1|Functional Color|1 -$--color-warning: #E6A23C !default; -/// color|1|Functional Color|1 -$--color-danger: #F56C6C !default; -/// color|1|Functional Color|1 -$--color-info: #909399 !default; - -$--color-success-light: mix($--color-white, $--color-success, 80%) !default; -$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default; -$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default; -$--color-info-light: mix($--color-white, $--color-info, 80%) !default; - -$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default; -$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default; -$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default; -$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default; -/// color|1|Font Color|2 -$--color-text-primary: #303133 !default; -/// color|1|Font Color|2 -$--color-text-regular: #606266 !default; -/// color|1|Font Color|2 -$--color-text-secondary: #909399 !default; -/// color|1|Font Color|2 -$--color-text-placeholder: #C0C4CC !default; -/// color|1|Border Color|3 -$--border-color-base: #DCDFE6 !default; -/// color|1|Border Color|3 -$--border-color-light: #E4E7ED !default; -/// color|1|Border Color|3 -$--border-color-lighter: #EBEEF5 !default; -/// color|1|Border Color|3 -$--border-color-extra-light: #F2F6FC !default; - -// Background -/// color|1|Background Color|4 -$--background-color-base: #F5F7FA !default; - -// color for left sidebar title -$--color-sidebar-title-text: #FFFFFF; -// color for left sidebar background -$--color-menu-background: #272C34; -$--color-menu-item-active-text-color: #FFFFFF; -$--color-menu-item-active-background: $--color-primary; -/* Link --------------------------- */ -$--link-color: $--color-primary-light-2 !default; -$--link-hover-color: $--color-primary !default; - -/* Border --------------------------- */ -$--border-width-base: 1px !default; -$--border-style-base: solid !default; -$--border-color-hover: $--color-text-placeholder !default; -$--border-base: $--border-width-base $--border-style-base $--border-color-base !default; -/// borderRadius|1|Radius|0 -$--border-radius-base: 4px !default; -/// borderRadius|1|Radius|0 -$--border-radius-small: 2px !default; -/// borderRadius|1|Radius|0 -$--border-radius-circle: 100% !default; -/// borderRadius|1|Radius|0 -$--border-radius-zero: 0 !default; - -// Box-shadow -/// boxShadow|1|Shadow|1 -$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default; -// boxShadow|1|Shadow|1 -$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default; -/// boxShadow|1|Shadow|1 -$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default; - -/* Fill --------------------------- */ -$--fill-base: $--color-white !default; - -/* Typography --------------------------- */ -$--font-path: 'fonts' !default; -$--font-display: 'auto' !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-large: 20px !default; -/// fontSize|1|Font Size|0 -$--font-size-large: 18px !default; -/// fontSize|1|Font Size|0 -$--font-size-medium: 16px !default; -/// fontSize|1|Font Size|0 -$--font-size-base: 14px !default; -/// fontSize|1|Font Size|0 -$--font-size-small: 13px !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-small: 12px !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-primary: 500 !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-secondary: 100 !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-primary: 24px !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-secondary: 16px !default; -$--font-color-disabled-base: #bbb !default; -/* Size --------------------------- */ -$--size-base: 14px !default; - -/* z-index --------------------------- */ -$--index-normal: 1 !default; -$--index-top: 1000 !default; -$--index-popper: 2000 !default; - -/* Disable base --------------------------- */ -$--disabled-fill-base: $--background-color-base !default; -$--disabled-color-base: $--color-text-placeholder !default; -$--disabled-border-base: $--border-color-light !default; - -/* Icon --------------------------- */ -$--icon-color: #666 !default; -$--icon-color-base: $--color-info !default; - -/* Checkbox --------------------------- */ -/// fontSize||Font|1 -$--checkbox-font-size: 14px !default; -/// fontWeight||Font|1 -$--checkbox-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--checkbox-font-color: $--color-text-regular !default; -$--checkbox-input-height: 14px !default; -$--checkbox-input-width: 14px !default; -/// borderRadius||Border|2 -$--checkbox-border-radius: $--border-radius-small !default; -/// color||Color|0 -$--checkbox-background-color: $--color-white !default; -$--checkbox-input-border: $--border-base !default; - -/// color||Color|0 -$--checkbox-disabled-border-color: $--border-color-base !default; -$--checkbox-disabled-input-fill: #edf2fc !default; -$--checkbox-disabled-icon-color: $--color-text-placeholder !default; - -$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default; -$--checkbox-disabled-checked-input-border-color: $--border-color-base !default; -$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--checkbox-checked-font-color: $--color-primary !default; -$--checkbox-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-checked-background-color: $--color-primary !default; -$--checkbox-checked-icon-color: $--fill-base !default; - -$--checkbox-input-border-color-hover: $--color-primary !default; -/// height||Other|4 -$--checkbox-bordered-height: 40px !default; -/// padding||Spacing|3 -$--checkbox-bordered-padding: 9px 20px 9px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default; -$--checkbox-bordered-medium-input-height: 14px !default; -$--checkbox-bordered-medium-input-width: 14px !default; -/// height||Other|4 -$--checkbox-bordered-medium-height: 36px !default; -$--checkbox-bordered-small-input-height: 12px !default; -$--checkbox-bordered-small-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-small-height: 32px !default; -$--checkbox-bordered-mini-input-height: 12px !default; -$--checkbox-bordered-mini-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-mini-height: 28px !default; - -/// color||Color|0 -$--checkbox-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--checkbox-button-checked-border-color: $--color-primary !default; - - - -/* Radio --------------------------- */ -/// fontSize||Font|1 -$--radio-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--radio-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--radio-font-color: $--color-text-regular !default; -$--radio-input-height: 14px !default; -$--radio-input-width: 14px !default; -/// borderRadius||Border|2 -$--radio-input-border-radius: $--border-radius-circle !default; -/// color||Color|0 -$--radio-input-background-color: $--color-white !default; -$--radio-input-border: $--border-base !default; -/// color||Color|0 -$--radio-input-border-color: $--border-color-base !default; -/// color||Color|0 -$--radio-icon-color: $--color-white !default; - -$--radio-disabled-input-border-color: $--disabled-border-base !default; -$--radio-disabled-input-fill: $--disabled-fill-base !default; -$--radio-disabled-icon-color: $--disabled-fill-base !default; - -$--radio-disabled-checked-input-border-color: $--disabled-border-base !default; -$--radio-disabled-checked-input-fill: $--disabled-fill-base !default; -$--radio-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--radio-checked-font-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-background-color: $--color-white !default; -/// color||Color|0 -$--radio-checked-icon-color: $--color-primary !default; - -$--radio-input-border-color-hover: $--color-primary !default; - -$--radio-bordered-height: 40px !default; -$--radio-bordered-padding: 12px 20px 0 10px !default; -$--radio-bordered-medium-padding: 10px 20px 0 10px !default; -$--radio-bordered-small-padding: 8px 15px 0 10px !default; -$--radio-bordered-mini-padding: 6px 15px 0 10px !default; -$--radio-bordered-medium-input-height: 14px !default; -$--radio-bordered-medium-input-width: 14px !default; -$--radio-bordered-medium-height: 36px !default; -$--radio-bordered-small-input-height: 12px !default; -$--radio-bordered-small-input-width: 12px !default; -$--radio-bordered-small-height: 32px !default; -$--radio-bordered-mini-input-height: 12px !default; -$--radio-bordered-mini-input-width: 12px !default; -$--radio-bordered-mini-height: 28px !default; - -/// fontSize||Font|1 -$--radio-button-font-size: $--font-size-base !default; -/// color||Color|0 -$--radio-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--radio-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--radio-button-checked-border-color: $--color-primary !default; -$--radio-button-disabled-checked-fill: $--border-color-extra-light !default; - -/* Select --------------------------- */ -$--select-border-color-hover: $--border-color-hover !default; -$--select-disabled-border: $--disabled-border-base !default; -/// fontSize||Font|1 -$--select-font-size: $--font-size-base !default; -$--select-close-hover-color: $--color-text-secondary !default; - -$--select-input-color: $--color-text-placeholder !default; -$--select-multiple-input-color: #666 !default; -/// color||Color|0 -$--select-input-focus-border-color: $--color-primary !default; -/// fontSize||Font|1 -$--select-input-font-size: 14px !default; - -$--select-option-color: $--color-text-regular !default; -$--select-option-disabled-color: $--color-text-placeholder !default; -$--select-option-disabled-background: $--color-white !default; -/// height||Other|4 -$--select-option-height: 34px !default; -$--select-option-hover-background: $--background-color-base !default; -/// color||Color|0 -$--select-option-selected-font-color: $--color-primary !default; -$--select-option-selected-hover: $--background-color-base !default; - -$--select-group-color: $--color-info !default; -$--select-group-height: 30px !default; -$--select-group-font-size: 12px !default; - -$--select-dropdown-background: $--color-white !default; -$--select-dropdown-shadow: $--box-shadow-light !default; -$--select-dropdown-empty-color: #999 !default; -/// height||Other|4 -$--select-dropdown-max-height: 274px !default; -$--select-dropdown-padding: 6px 0 !default; -$--select-dropdown-empty-padding: 10px 0 !default; -$--select-dropdown-border: solid 1px $--border-color-light !default; - -/* Alert --------------------------- */ -$--alert-padding: 8px 16px !default; -/// borderRadius||Border|2 -$--alert-border-radius: $--border-radius-base !default; -/// fontSize||Font|1 -$--alert-title-font-size: 13px !default; -/// fontSize||Font|1 -$--alert-description-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-customed-font-size: 13px !default; - -$--alert-success-color: $--color-success-lighter !default; -$--alert-info-color: $--color-info-lighter !default; -$--alert-warning-color: $--color-warning-lighter !default; -$--alert-danger-color: $--color-danger-lighter !default; - -/// height||Other|4 -$--alert-icon-size: 16px !default; -/// height||Other|4 -$--alert-icon-large-size: 28px !default; - -/* MessageBox --------------------------- */ -/// color||Color|0 -$--messagebox-title-color: $--color-text-primary !default; -$--msgbox-width: 420px !default; -$--msgbox-border-radius: 4px !default; -/// fontSize||Font|1 -$--messagebox-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--messagebox-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--messagebox-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--messagebox-error-font-size: 12px !default; -$--msgbox-padding-primary: 15px !default; -/// color||Color|0 -$--messagebox-success-color: $--color-success !default; -/// color||Color|0 -$--messagebox-info-color: $--color-info !default; -/// color||Color|0 -$--messagebox-warning-color: $--color-warning !default; -/// color||Color|0 -$--messagebox-danger-color: $--color-danger !default; - -/* Message --------------------------- */ -$--message-shadow: $--box-shadow-base !default; -$--message-min-width: 380px !default; -$--message-background-color: #edf2fc !default; -$--message-padding: 15px 15px 15px 20px !default; -/// color||Color|0 -$--message-close-icon-color: $--color-text-placeholder !default; -/// height||Other|4 -$--message-close-size: 16px !default; -/// color||Color|0 -$--message-close-hover-color: $--color-text-secondary !default; - -/// color||Color|0 -$--message-success-font-color: $--color-success !default; -/// color||Color|0 -$--message-info-font-color: $--color-info !default; -/// color||Color|0 -$--message-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--message-danger-font-color: $--color-danger !default; - -/* Notification --------------------------- */ -$--notification-width: 330px !default; -/// padding||Spacing|3 -$--notification-padding: 14px 26px 14px 13px !default; -$--notification-radius: 8px !default; -$--notification-shadow: $--box-shadow-light !default; -/// color||Color|0 -$--notification-border-color: $--border-color-lighter !default; -$--notification-icon-size: 24px !default; -$--notification-close-font-size: $--message-close-size !default; -$--notification-group-margin-left: 13px !default; -$--notification-group-margin-right: 8px !default; -/// fontSize||Font|1 -$--notification-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--notification-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--notification-title-font-size: 16px !default; -/// color||Color|0 -$--notification-title-color: $--color-text-primary !default; - -/// color||Color|0 -$--notification-close-color: $--color-text-secondary !default; -/// color||Color|0 -$--notification-close-hover-color: $--color-text-regular !default; - -/// color||Color|0 -$--notification-success-icon-color: $--color-success !default; -/// color||Color|0 -$--notification-info-icon-color: $--color-info !default; -/// color||Color|0 -$--notification-warning-icon-color: $--color-warning !default; -/// color||Color|0 -$--notification-danger-icon-color: $--color-danger !default; - -/* Input --------------------------- */ -$--input-font-size: $--font-size-base !default; -/// color||Color|0 -$--input-font-color: $--color-text-regular !default; -/// height||Other|4 -$--input-width: 140px !default; -/// height||Other|4 -$--input-height: 40px !default; -$--input-border: $--border-base !default; -$--input-border-color: $--border-color-base !default; -/// borderRadius||Border|2 -$--input-border-radius: $--border-radius-base !default; -$--input-border-color-hover: $--border-color-hover !default; -/// color||Color|0 -$--input-background-color: $--color-white !default; -$--input-fill-disabled: $--disabled-fill-base !default; -$--input-color-disabled: $--font-color-disabled-base !default; -/// color||Color|0 -$--input-icon-color: $--color-text-placeholder !default; -/// color||Color|0 -$--input-placeholder-color: $--color-text-placeholder !default; -$--input-max-width: 314px !default; - -$--input-hover-border: $--border-color-hover !default; -$--input-clear-hover-color: $--color-text-secondary !default; - -$--input-focus-border: $--color-primary !default; -$--input-focus-fill: $--color-white !default; - -$--input-disabled-fill: $--disabled-fill-base !default; -$--input-disabled-border: $--disabled-border-base !default; -$--input-disabled-color: $--disabled-color-base !default; -$--input-disabled-placeholder-color: $--color-text-placeholder !default; - -/// fontSize||Font|1 -$--input-medium-font-size: 14px !default; -/// height||Other|4 -$--input-medium-height: 36px !default; -/// fontSize||Font|1 -$--input-small-font-size: 13px !default; -/// height||Other|4 -$--input-small-height: 32px !default; -/// fontSize||Font|1 -$--input-mini-font-size: 12px !default; -/// height||Other|4 -$--input-mini-height: 28px !default; - -/* Cascader --------------------------- */ -/// color||Color|0 -$--cascader-menu-font-color: $--color-text-regular !default; -/// color||Color|0 -$--cascader-menu-selected-font-color: $--color-primary !default; -$--cascader-menu-fill: $--fill-base !default; -$--cascader-menu-font-size: $--font-size-base !default; -$--cascader-menu-radius: $--border-radius-base !default; -$--cascader-menu-border: solid 1px $--border-color-light !default; -$--cascader-menu-shadow: $--box-shadow-light !default; -$--cascader-node-background-hover: $--background-color-base !default; -$--cascader-node-color-disabled:$--color-text-placeholder !default; -$--cascader-color-empty:$--color-text-placeholder !default; -$--cascader-tag-background: #f0f2f5; - -/* Group --------------------------- */ -$--group-option-flex: 0 0 (1/5) * 100% !default; -$--group-option-offset-bottom: 12px !default; -$--group-option-fill-hover: rgba($--color-black, 0.06) !default; -$--group-title-color: $--color-black !default; -$--group-title-font-size: $--font-size-base !default; -$--group-title-width: 66px !default; - -/* Tab --------------------------- */ -$--tab-font-size: $--font-size-base !default; -$--tab-border-line: 1px solid #e4e4e4 !default; -$--tab-header-color-active: $--color-text-secondary !default; -$--tab-header-color-hover: $--color-text-regular !default; -$--tab-header-color: $--color-text-regular !default; -$--tab-header-fill-active: rgba($--color-black, 0.06) !default; -$--tab-header-fill-hover: rgba($--color-black, 0.06) !default; -$--tab-vertical-header-width: 90px !default; -$--tab-vertical-header-count-color: $--color-white !default; -$--tab-vertical-header-count-fill: $--color-text-secondary !default; - -/* Button --------------------------- */ -/// fontSize||Font|1 -$--button-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--button-font-weight: $--font-weight-primary !default; -/// borderRadius||Border|2 -$--button-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-padding-vertical: 12px !default; -/// padding||Spacing|3 -$--button-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-medium-font-size: $--font-size-base !default; -/// borderRadius||Border|2 -$--button-medium-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-medium-padding-vertical: 10px !default; -/// padding||Spacing|3 -$--button-medium-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-small-font-size: 12px !default; -$--button-small-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-small-padding-vertical: 9px !default; -/// padding||Spacing|3 -$--button-small-padding-horizontal: 15px !default; -/// fontSize||Font|1 -$--button-mini-font-size: 12px !default; -$--button-mini-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-mini-padding-vertical: 7px !default; -/// padding||Spacing|3 -$--button-mini-padding-horizontal: 15px !default; - -/// color||Color|0 -$--button-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--button-default-background-color: $--color-white !default; -/// color||Color|0 -$--button-default-border-color: $--border-color-base !default; - -/// color||Color|0 -$--button-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--button-disabled-border-color: $--border-color-lighter !default; - -/// color||Color|0 -$--button-primary-border-color: $--color-primary !default; -/// color||Color|0 -$--button-primary-font-color: $--color-white !default; -/// color||Color|0 -$--button-primary-background-color: $--color-primary !default; -/// color||Color|0 -$--button-success-border-color: $--color-success !default; -/// color||Color|0 -$--button-success-font-color: $--color-white !default; -/// color||Color|0 -$--button-success-background-color: $--color-success !default; -/// color||Color|0 -$--button-warning-border-color: $--color-warning !default; -/// color||Color|0 -$--button-warning-font-color: $--color-white !default; -/// color||Color|0 -$--button-warning-background-color: $--color-warning !default; -/// color||Color|0 -$--button-danger-border-color: $--color-danger !default; -/// color||Color|0 -$--button-danger-font-color: $--color-white !default; -/// color||Color|0 -$--button-danger-background-color: $--color-danger !default; -/// color||Color|0 -$--button-info-border-color: $--color-info !default; -/// color||Color|0 -$--button-info-font-color: $--color-white !default; -/// color||Color|0 -$--button-info-background-color: $--color-info !default; - -$--button-hover-tint-percent: 20% !default; -$--button-active-shade-percent: 10% !default; - - -/* cascader --------------------------- */ -$--cascader-height: 200px !default; - -/* Switch --------------------------- */ -/// color||Color|0 -$--switch-on-color: $--color-primary !default; -/// color||Color|0 -$--switch-off-color: $--border-color-base !default; -/// fontSize||Font|1 -$--switch-font-size: $--font-size-base !default; -$--switch-core-border-radius: 10px !default; -// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义 -$--switch-width: 40px !default; -// height||Other|4 -$--switch-height: 20px !default; -// height||Other|4 -$--switch-button-size: 16px !default; - -/* Dialog --------------------------- */ -$--dialog-background-color: $--color-white !default; -$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default; -/// fontSize||Font|1 -$--dialog-title-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--dialog-content-font-size: 14px !default; -/// fontLineHeight||LineHeight|2 -$--dialog-font-line-height: $--font-line-height-primary !default; -/// padding||Spacing|3 -$--dialog-padding-primary: 20px !default; - -/* Table --------------------------- */ -/// color||Color|0 -$--table-border-color: $--border-color-lighter !default; -$--table-border: 1px solid $--table-border-color !default; -/// color||Color|0 -$--table-font-color: $--color-text-regular !default; -/// color||Color|0 -$--table-header-font-color: $--color-text-secondary !default; -/// color||Color|0 -$--table-row-hover-background-color: $--background-color-base !default; -$--table-current-row-background-color: $--color-primary-light-9 !default; -/// color||Color|0 -$--table-header-background-color: $--color-white !default; -$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default; - -/* Pagination --------------------------- */ -/// fontSize||Font|1 -$--pagination-font-size: 13px !default; -/// color||Color|0 -$--pagination-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-font-color: $--color-text-primary !default; -$--pagination-border-radius: 3px !default; -/// color||Color|0 -$--pagination-button-color: $--color-text-primary !default; -/// height||Other|4 -$--pagination-button-width: 35.5px !default; -/// height||Other|4 -$--pagination-button-height: 28px !default; -/// color||Color|0 -$--pagination-button-disabled-color: $--color-text-placeholder !default; -/// color||Color|0 -$--pagination-button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-hover-color: $--color-primary !default; - -/* Popup --------------------------- */ -/// color||Color|0 -$--popup-modal-background-color: $--color-black !default; -/// opacity||Other|1 -$--popup-modal-opacity: 0.5 !default; - -/* Popover --------------------------- */ -/// color||Color|0 -$--popover-background-color: $--color-white !default; -/// fontSize||Font|1 -$--popover-font-size: $--font-size-base !default; -/// color||Color|0 -$--popover-border-color: $--border-color-lighter !default; -$--popover-arrow-size: 6px !default; -/// padding||Spacing|3 -$--popover-padding: 12px !default; -$--popover-padding-large: 18px 20px !default; -/// fontSize||Font|1 -$--popover-title-font-size: 16px !default; -/// color||Color|0 -$--popover-title-font-color: $--color-text-primary !default; - -/* Tooltip --------------------------- */ -/// color|1|Color|0 -$--tooltip-fill: $--color-text-primary !default; -/// color|1|Color|0 -$--tooltip-color: $--color-white !default; -/// fontSize||Font|1 -$--tooltip-font-size: 12px !default; -/// color||Color|0 -$--tooltip-border-color: $--color-text-primary !default; -$--tooltip-arrow-size: 6px !default; -/// padding||Spacing|3 -$--tooltip-padding: 10px !default; - -/* Tag --------------------------- */ -/// color||Color|0 -$--tag-info-color: $--color-info !default; -/// color||Color|0 -$--tag-primary-color: $--color-primary !default; -/// color||Color|0 -$--tag-success-color: $--color-success !default; -/// color||Color|0 -$--tag-warning-color: $--color-warning !default; -/// color||Color|0 -$--tag-danger-color: $--color-danger !default; -/// fontSize||Font|1 -$--tag-font-size: 12px !default; -$--tag-border-radius: 4px !default; -$--tag-padding: 0 10px !default; - -/* Tree --------------------------- */ -/// color||Color|0 -$--tree-node-hover-background-color: $--background-color-base !default; -/// color||Color|0 -$--tree-font-color: $--color-text-regular !default; -/// color||Color|0 -$--tree-expand-icon-color: $--color-text-placeholder !default; - -/* Dropdown --------------------------- */ -$--dropdown-menu-box-shadow: $--box-shadow-light !default; -$--dropdown-menuItem-hover-fill: $--color-menu-item-active-background !default; -$--dropdown-menuItem-hover-color: $--color-white !default; - -/* Badge --------------------------- */ -/// color||Color|0 -$--badge-background-color: $--color-danger !default; -$--badge-radius: 10px !default; -/// fontSize||Font|1 -$--badge-font-size: 12px !default; -/// padding||Spacing|3 -$--badge-padding: 6px !default; -/// height||Other|4 -$--badge-size: 18px !default; - -/* Card ---------------------------*/ -/// color||Color|0 -$--card-border-color: $--border-color-lighter !default; -$--card-border-radius: 4px !default; -/// padding||Spacing|3 -$--card-padding: 20px !default; - -/* Slider ---------------------------*/ -/// color||Color|0 -$--slider-main-background-color: $--color-primary !default; -/// color||Color|0 -$--slider-runway-background-color: $--border-color-light !default; -$--slider-button-hover-color: mix($--color-primary, black, 97%) !default; -$--slider-stop-background-color: $--color-white !default; -$--slider-disable-color: $--color-text-placeholder !default; -$--slider-margin: 16px 0 !default; -$--slider-border-radius: 3px !default; -/// height|1|Other|4 -$--slider-height: 6px !default; -/// height||Other|4 -$--slider-button-size: 16px !default; -$--slider-button-wrapper-size: 36px !default; -$--slider-button-wrapper-offset: -15px !default; - -/* Steps ---------------------------*/ -$--steps-border-color: $--disabled-border-base !default; -$--steps-border-radius: 4px !default; -$--steps-padding: 20px !default; - -/* Menu ---------------------------*/ -/// fontSize||Font|1 -$--menu-item-font-size: $--font-size-base !default; -/// color||Color|0 -$--menu-item-font-color: $--color-white !default; -/// color||Color|0 -$--menu-background-color: $--color-menu-background !default; -$--menu-item-hover-fill: $--color-primary !default; - -/* Rate ---------------------------*/ -$--rate-height: 20px !default; -/// fontSize||Font|1 -$--rate-font-size: $--font-size-base !default; -/// height||Other|3 -$--rate-icon-size: 18px !default; -/// margin||Spacing|2 -$--rate-icon-margin: 6px !default; -$--rate-icon-color: $--color-text-placeholder !default; - -/* DatePicker ---------------------------*/ -$--datepicker-font-color: $--color-text-regular !default; -/// color|1|Color|0 -$--datepicker-off-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--datepicker-header-font-color: $--color-text-regular !default; -$--datepicker-icon-color: $--color-text-primary !default; -$--datepicker-border-color: $--disabled-border-base !default; -$--datepicker-inner-border-color: #e4e4e4 !default; -/// color||Color|0 -$--datepicker-inrange-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-active-color: $--color-primary !default; -/// color||Color|0 -$--datepicker-hover-font-color: $--color-primary !default; -$--datepicker-cell-hover-color: #fff !default; - -/* Loading ---------------------------*/ -/// height||Other|4 -$--loading-spinner-size: 42px !default; -/// height||Other|4 -$--loading-fullscreen-spinner-size: 50px !default; - -/* Scrollbar ---------------------------*/ -$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default; -$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default; - -/* Carousel ---------------------------*/ -/// fontSize||Font|1 -$--carousel-arrow-font-size: 12px !default; -$--carousel-arrow-size: 36px !default; -$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default; -$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default; -/// width||Other|4 -$--carousel-indicator-width: 30px !default; -/// height||Other|4 -$--carousel-indicator-height: 2px !default; -$--carousel-indicator-padding-horizontal: 4px !default; -$--carousel-indicator-padding-vertical: 12px !default; -$--carousel-indicator-out-color: $--border-color-hover !default; - -/* Collapse ---------------------------*/ -/// color||Color|0 -$--collapse-border-color: $--border-color-lighter !default; -/// height||Other|4 -$--collapse-header-height: 48px !default; -/// color||Color|0 -$--collapse-header-background-color: $--color-white !default; -/// color||Color|0 -$--collapse-header-font-color: $--color-text-primary !default; -/// fontSize||Font|1 -$--collapse-header-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-background-color: $--color-white !default; -/// fontSize||Font|1 -$--collapse-content-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-font-color: $--color-text-primary !default; - -/* Transfer ---------------------------*/ -$--transfer-border-color: $--border-color-lighter !default; -$--transfer-border-radius: $--border-radius-base !default; -/// height||Other|4 -$--transfer-panel-width: 200px !default; -/// height||Other|4 -$--transfer-panel-header-height: 40px !default; -/// color||Color|0 -$--transfer-panel-header-background-color: $--background-color-base !default; -/// height||Other|4 -$--transfer-panel-footer-height: 40px !default; -/// height||Other|4 -$--transfer-panel-body-height: 246px !default; -/// height||Other|4 -$--transfer-item-height: 30px !default; -/// height||Other|4 -$--transfer-filter-height: 32px !default; - -/* Header - --------------------------*/ -$--header-padding: 0 20px !default; - -/* Footer ---------------------------*/ -$--footer-padding: 0 20px !default; - -/* Main ---------------------------*/ -$--main-padding: 20px !default; - -/* Timeline ---------------------------*/ -$--timeline-node-size-normal: 12px !default; -$--timeline-node-size-large: 14px !default; -$--timeline-node-color: $--border-color-light !default; - -/* Backtop ---------------------------*/ -/// color||Color|0 -$--backtop-background-color: $--color-white !default; -/// color||Color|0 -$--backtop-font-color: $--color-primary !default; -/// color||Color|0 -$--backtop-hover-background-color: $--border-color-extra-light !default; - -/* Link ---------------------------*/ -/// fontSize||Font|1 -$--link-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--link-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--link-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--link-default-active-color: $--color-primary !default; -/// color||Color|0 -$--link-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--link-primary-font-color: $--color-primary !default; -/// color||Color|0 -$--link-success-font-color: $--color-success !default; -/// color||Color|0 -$--link-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--link-danger-font-color: $--color-danger !default; -/// color||Color|0 -$--link-info-font-color: $--color-info !default; -/* Calendar ---------------------------*/ -/// border||Other|4 -$--calendar-border: $--table-border !default; -/// color||Other|4 -$--calendar-selected-background-color: #F2F8FE !default; -$--calendar-cell-width: 85px !default; - -/* Form --------------------------- */ -/// fontSize||Font|1 -$--form-label-font-size: $--font-size-base !default; - -/* Avatar ---------------------------*/ -/// color||Color|0 -$--avatar-font-color: #fff !default; -/// color||Color|0 -$--avatar-background-color: #C0C4CC !default; -/// fontSize||Font Size|1 -$--avatar-text-font-size: 14px !default; -/// fontSize||Font Size|1 -$--avatar-icon-font-size: 18px !default; -/// borderRadius||Border|2 -$--avatar-border-radius: $--border-radius-base !default; -/// size|1|Avatar Size|3 -$--avatar-large-size: 40px !default; -/// size|1|Avatar Size|3 -$--avatar-medium-size: 36px !default; -/// size|1|Avatar Size|3 -$--avatar-small-size: 28px !default; - -/* Break-point ---------------------------*/ -$--sm: 768px !default; -$--md: 992px !default; -$--lg: 1200px !default; -$--xl: 1920px !default; - -$--breakpoints: ( - 'xs' : (max-width: $--sm - 1), - 'sm' : (min-width: $--sm), - 'md' : (min-width: $--md), - 'lg' : (min-width: $--lg), - 'xl' : (min-width: $--xl) -); - -$--breakpoints-spec: ( - 'xs-only' : (max-width: $--sm - 1), - 'sm-and-up' : (min-width: $--sm), - 'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})", - 'sm-and-down': (max-width: $--md - 1), - 'md-and-up' : (min-width: $--md), - 'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})", - 'md-and-down': (max-width: $--lg - 1), - 'lg-and-up' : (min-width: $--lg), - 'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})", - 'lg-and-down': (max-width: $--xl - 1), - 'xl-only' : (min-width: $--xl), -); diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-light.scss b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-light.scss deleted file mode 100644 index 2c6cdad8..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-light.scss +++ /dev/null @@ -1,998 +0,0 @@ -/* Element Chalk Variables */ - -// Special comment for theme configurator -// type|skipAutoTranslation|Category|Order -// skipAutoTranslation 1 - -/* Transition --------------------------- */ -$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default; -$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--fade-linear-transition: opacity 200ms linear !default; -$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default; -$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default; - -/* Color --------------------------- */ -// color for left sidebar title -$--color-sidebar-title-text: #381524; -// color for left sidebar background -$--color-menu-background: #FFFFFF; -/// color|1|Brand Color|0 -$--color-primary: #409EFF !default; -/// color|1|Background Color|4 -$--color-white: #FFFFFF !default; -/// color|1|Background Color|4 -$--color-black: #000000 !default; -$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */ -$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */ -$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */ -$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */ -$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */ -$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */ -$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */ -$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ -$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ -/// color|1|Functional Color|1 -$--color-success: #67C23A !default; -/// color|1|Functional Color|1 -$--color-warning: #E6A23C !default; -/// color|1|Functional Color|1 -$--color-danger: #F56C6C !default; -/// color|1|Functional Color|1 -$--color-info: #909399 !default; - -$--color-success-light: mix($--color-white, $--color-success, 80%) !default; -$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default; -$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default; -$--color-info-light: mix($--color-white, $--color-info, 80%) !default; - -$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default; -$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default; -$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default; -$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default; -/// color|1|Font Color|2 -$--color-text-primary: #303133 !default; -/// color|1|Font Color|2 -$--color-text-regular: #606266 !default; -/// color|1|Font Color|2 -$--color-text-secondary: #909399 !default; -/// color|1|Font Color|2 -$--color-text-placeholder: #C0C4CC !default; -/// color|1|Border Color|3 -$--border-color-base: #DCDFE6 !default; -/// color|1|Border Color|3 -$--border-color-light: #E4E7ED !default; -/// color|1|Border Color|3 -$--border-color-lighter: #EBEEF5 !default; -/// color|1|Border Color|3 -$--border-color-extra-light: #F2F6FC !default; - -// Background -/// color|1|Background Color|4 -$--background-color-base: #F5F7FA !default; - -/* Link --------------------------- */ -$--link-color: $--color-primary-light-2 !default; -$--link-hover-color: $--color-primary !default; - -/* Border --------------------------- */ -$--border-width-base: 1px !default; -$--border-style-base: solid !default; -$--border-color-hover: $--color-text-placeholder !default; -$--border-base: $--border-width-base $--border-style-base $--border-color-base !default; -/// borderRadius|1|Radius|0 -$--border-radius-base: 4px !default; -/// borderRadius|1|Radius|0 -$--border-radius-small: 2px !default; -/// borderRadius|1|Radius|0 -$--border-radius-circle: 100% !default; -/// borderRadius|1|Radius|0 -$--border-radius-zero: 0 !default; - -// Box-shadow -/// boxShadow|1|Shadow|1 -$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default; -// boxShadow|1|Shadow|1 -$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default; -/// boxShadow|1|Shadow|1 -$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default; - -/* Fill --------------------------- */ -$--fill-base: $--color-white !default; - -/* Typography --------------------------- */ -$--font-path: 'fonts' !default; -$--font-display: 'auto' !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-large: 20px !default; -/// fontSize|1|Font Size|0 -$--font-size-large: 18px !default; -/// fontSize|1|Font Size|0 -$--font-size-medium: 16px !default; -/// fontSize|1|Font Size|0 -$--font-size-base: 14px !default; -/// fontSize|1|Font Size|0 -$--font-size-small: 13px !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-small: 12px !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-primary: 500 !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-secondary: 100 !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-primary: 24px !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-secondary: 16px !default; -$--font-color-disabled-base: #bbb !default; -/* Size --------------------------- */ -$--size-base: 14px !default; - -/* z-index --------------------------- */ -$--index-normal: 1 !default; -$--index-top: 1000 !default; -$--index-popper: 2000 !default; - -/* Disable base --------------------------- */ -$--disabled-fill-base: $--background-color-base !default; -$--disabled-color-base: $--color-text-placeholder !default; -$--disabled-border-base: $--border-color-light !default; - -/* Icon --------------------------- */ -$--icon-color: #666 !default; -$--icon-color-base: $--color-info !default; - -/* Checkbox --------------------------- */ -/// fontSize||Font|1 -$--checkbox-font-size: 14px !default; -/// fontWeight||Font|1 -$--checkbox-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--checkbox-font-color: $--color-text-regular !default; -$--checkbox-input-height: 14px !default; -$--checkbox-input-width: 14px !default; -/// borderRadius||Border|2 -$--checkbox-border-radius: $--border-radius-small !default; -/// color||Color|0 -$--checkbox-background-color: $--color-white !default; -$--checkbox-input-border: $--border-base !default; - -/// color||Color|0 -$--checkbox-disabled-border-color: $--border-color-base !default; -$--checkbox-disabled-input-fill: #edf2fc !default; -$--checkbox-disabled-icon-color: $--color-text-placeholder !default; - -$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default; -$--checkbox-disabled-checked-input-border-color: $--border-color-base !default; -$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--checkbox-checked-font-color: $--color-primary !default; -$--checkbox-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-checked-background-color: $--color-primary !default; -$--checkbox-checked-icon-color: $--fill-base !default; - -$--checkbox-input-border-color-hover: $--color-primary !default; -/// height||Other|4 -$--checkbox-bordered-height: 40px !default; -/// padding||Spacing|3 -$--checkbox-bordered-padding: 9px 20px 9px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default; -$--checkbox-bordered-medium-input-height: 14px !default; -$--checkbox-bordered-medium-input-width: 14px !default; -/// height||Other|4 -$--checkbox-bordered-medium-height: 36px !default; -$--checkbox-bordered-small-input-height: 12px !default; -$--checkbox-bordered-small-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-small-height: 32px !default; -$--checkbox-bordered-mini-input-height: 12px !default; -$--checkbox-bordered-mini-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-mini-height: 28px !default; - -/// color||Color|0 -$--checkbox-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--checkbox-button-checked-border-color: $--color-primary !default; - - - -/* Radio --------------------------- */ -/// fontSize||Font|1 -$--radio-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--radio-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--radio-font-color: $--color-text-regular !default; -$--radio-input-height: 14px !default; -$--radio-input-width: 14px !default; -/// borderRadius||Border|2 -$--radio-input-border-radius: $--border-radius-circle !default; -/// color||Color|0 -$--radio-input-background-color: $--color-white !default; -$--radio-input-border: $--border-base !default; -/// color||Color|0 -$--radio-input-border-color: $--border-color-base !default; -/// color||Color|0 -$--radio-icon-color: $--color-white !default; - -$--radio-disabled-input-border-color: $--disabled-border-base !default; -$--radio-disabled-input-fill: $--disabled-fill-base !default; -$--radio-disabled-icon-color: $--disabled-fill-base !default; - -$--radio-disabled-checked-input-border-color: $--disabled-border-base !default; -$--radio-disabled-checked-input-fill: $--disabled-fill-base !default; -$--radio-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--radio-checked-font-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-background-color: $--color-white !default; -/// color||Color|0 -$--radio-checked-icon-color: $--color-primary !default; - -$--radio-input-border-color-hover: $--color-primary !default; - -$--radio-bordered-height: 40px !default; -$--radio-bordered-padding: 12px 20px 0 10px !default; -$--radio-bordered-medium-padding: 10px 20px 0 10px !default; -$--radio-bordered-small-padding: 8px 15px 0 10px !default; -$--radio-bordered-mini-padding: 6px 15px 0 10px !default; -$--radio-bordered-medium-input-height: 14px !default; -$--radio-bordered-medium-input-width: 14px !default; -$--radio-bordered-medium-height: 36px !default; -$--radio-bordered-small-input-height: 12px !default; -$--radio-bordered-small-input-width: 12px !default; -$--radio-bordered-small-height: 32px !default; -$--radio-bordered-mini-input-height: 12px !default; -$--radio-bordered-mini-input-width: 12px !default; -$--radio-bordered-mini-height: 28px !default; - -/// fontSize||Font|1 -$--radio-button-font-size: $--font-size-base !default; -/// color||Color|0 -$--radio-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--radio-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--radio-button-checked-border-color: $--color-primary !default; -$--radio-button-disabled-checked-fill: $--border-color-extra-light !default; - -/* Select --------------------------- */ -$--select-border-color-hover: $--border-color-hover !default; -$--select-disabled-border: $--disabled-border-base !default; -/// fontSize||Font|1 -$--select-font-size: $--font-size-base !default; -$--select-close-hover-color: $--color-text-secondary !default; - -$--select-input-color: $--color-text-placeholder !default; -$--select-multiple-input-color: #666 !default; -/// color||Color|0 -$--select-input-focus-border-color: $--color-primary !default; -/// fontSize||Font|1 -$--select-input-font-size: 14px !default; - -$--select-option-color: $--color-text-regular !default; -$--select-option-disabled-color: $--color-text-placeholder !default; -$--select-option-disabled-background: $--color-white !default; -/// height||Other|4 -$--select-option-height: 34px !default; -$--select-option-hover-background: $--background-color-base !default; -/// color||Color|0 -$--select-option-selected-font-color: $--color-primary !default; -$--select-option-selected-hover: $--background-color-base !default; - -$--select-group-color: $--color-info !default; -$--select-group-height: 30px !default; -$--select-group-font-size: 12px !default; - -$--select-dropdown-background: $--color-white !default; -$--select-dropdown-shadow: $--box-shadow-light !default; -$--select-dropdown-empty-color: #999 !default; -/// height||Other|4 -$--select-dropdown-max-height: 274px !default; -$--select-dropdown-padding: 6px 0 !default; -$--select-dropdown-empty-padding: 10px 0 !default; -$--select-dropdown-border: solid 1px $--border-color-light !default; - -/* Alert --------------------------- */ -$--alert-padding: 8px 16px !default; -/// borderRadius||Border|2 -$--alert-border-radius: $--border-radius-base !default; -/// fontSize||Font|1 -$--alert-title-font-size: 13px !default; -/// fontSize||Font|1 -$--alert-description-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-customed-font-size: 13px !default; - -$--alert-success-color: $--color-success-lighter !default; -$--alert-info-color: $--color-info-lighter !default; -$--alert-warning-color: $--color-warning-lighter !default; -$--alert-danger-color: $--color-danger-lighter !default; - -/// height||Other|4 -$--alert-icon-size: 16px !default; -/// height||Other|4 -$--alert-icon-large-size: 28px !default; - -/* MessageBox --------------------------- */ -/// color||Color|0 -$--messagebox-title-color: $--color-text-primary !default; -$--msgbox-width: 420px !default; -$--msgbox-border-radius: 4px !default; -/// fontSize||Font|1 -$--messagebox-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--messagebox-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--messagebox-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--messagebox-error-font-size: 12px !default; -$--msgbox-padding-primary: 15px !default; -/// color||Color|0 -$--messagebox-success-color: $--color-success !default; -/// color||Color|0 -$--messagebox-info-color: $--color-info !default; -/// color||Color|0 -$--messagebox-warning-color: $--color-warning !default; -/// color||Color|0 -$--messagebox-danger-color: $--color-danger !default; - -/* Message --------------------------- */ -$--message-shadow: $--box-shadow-base !default; -$--message-min-width: 380px !default; -$--message-background-color: #edf2fc !default; -$--message-padding: 15px 15px 15px 20px !default; -/// color||Color|0 -$--message-close-icon-color: $--color-text-placeholder !default; -/// height||Other|4 -$--message-close-size: 16px !default; -/// color||Color|0 -$--message-close-hover-color: $--color-text-secondary !default; - -/// color||Color|0 -$--message-success-font-color: $--color-success !default; -/// color||Color|0 -$--message-info-font-color: $--color-info !default; -/// color||Color|0 -$--message-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--message-danger-font-color: $--color-danger !default; - -/* Notification --------------------------- */ -$--notification-width: 330px !default; -/// padding||Spacing|3 -$--notification-padding: 14px 26px 14px 13px !default; -$--notification-radius: 8px !default; -$--notification-shadow: $--box-shadow-light !default; -/// color||Color|0 -$--notification-border-color: $--border-color-lighter !default; -$--notification-icon-size: 24px !default; -$--notification-close-font-size: $--message-close-size !default; -$--notification-group-margin-left: 13px !default; -$--notification-group-margin-right: 8px !default; -/// fontSize||Font|1 -$--notification-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--notification-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--notification-title-font-size: 16px !default; -/// color||Color|0 -$--notification-title-color: $--color-text-primary !default; - -/// color||Color|0 -$--notification-close-color: $--color-text-secondary !default; -/// color||Color|0 -$--notification-close-hover-color: $--color-text-regular !default; - -/// color||Color|0 -$--notification-success-icon-color: $--color-success !default; -/// color||Color|0 -$--notification-info-icon-color: $--color-info !default; -/// color||Color|0 -$--notification-warning-icon-color: $--color-warning !default; -/// color||Color|0 -$--notification-danger-icon-color: $--color-danger !default; - -/* Input --------------------------- */ -$--input-font-size: $--font-size-base !default; -/// color||Color|0 -$--input-font-color: $--color-text-regular !default; -/// height||Other|4 -$--input-width: 140px !default; -/// height||Other|4 -$--input-height: 40px !default; -$--input-border: $--border-base !default; -$--input-border-color: $--border-color-base !default; -/// borderRadius||Border|2 -$--input-border-radius: $--border-radius-base !default; -$--input-border-color-hover: $--border-color-hover !default; -/// color||Color|0 -$--input-background-color: $--color-white !default; -$--input-fill-disabled: $--disabled-fill-base !default; -$--input-color-disabled: $--font-color-disabled-base !default; -/// color||Color|0 -$--input-icon-color: $--color-text-placeholder !default; -/// color||Color|0 -$--input-placeholder-color: $--color-text-placeholder !default; -$--input-max-width: 314px !default; - -$--input-hover-border: $--border-color-hover !default; -$--input-clear-hover-color: $--color-text-secondary !default; - -$--input-focus-border: $--color-primary !default; -$--input-focus-fill: $--color-white !default; - -$--input-disabled-fill: $--disabled-fill-base !default; -$--input-disabled-border: $--disabled-border-base !default; -$--input-disabled-color: $--disabled-color-base !default; -$--input-disabled-placeholder-color: $--color-text-placeholder !default; - -/// fontSize||Font|1 -$--input-medium-font-size: 14px !default; -/// height||Other|4 -$--input-medium-height: 36px !default; -/// fontSize||Font|1 -$--input-small-font-size: 13px !default; -/// height||Other|4 -$--input-small-height: 32px !default; -/// fontSize||Font|1 -$--input-mini-font-size: 12px !default; -/// height||Other|4 -$--input-mini-height: 28px !default; - -/* Cascader --------------------------- */ -/// color||Color|0 -$--cascader-menu-font-color: $--color-text-regular !default; -/// color||Color|0 -$--cascader-menu-selected-font-color: $--color-primary !default; -$--cascader-menu-fill: $--fill-base !default; -$--cascader-menu-font-size: $--font-size-base !default; -$--cascader-menu-radius: $--border-radius-base !default; -$--cascader-menu-border: solid 1px $--border-color-light !default; -$--cascader-menu-shadow: $--box-shadow-light !default; -$--cascader-node-background-hover: $--background-color-base !default; -$--cascader-node-color-disabled:$--color-text-placeholder !default; -$--cascader-color-empty:$--color-text-placeholder !default; -$--cascader-tag-background: #f0f2f5; - -/* Group --------------------------- */ -$--group-option-flex: 0 0 (1/5) * 100% !default; -$--group-option-offset-bottom: 12px !default; -$--group-option-fill-hover: rgba($--color-black, 0.06) !default; -$--group-title-color: $--color-black !default; -$--group-title-font-size: $--font-size-base !default; -$--group-title-width: 66px !default; - -/* Tab --------------------------- */ -$--tab-font-size: $--font-size-base !default; -$--tab-border-line: 1px solid #e4e4e4 !default; -$--tab-header-color-active: $--color-text-secondary !default; -$--tab-header-color-hover: $--color-text-regular !default; -$--tab-header-color: $--color-text-regular !default; -$--tab-header-fill-active: rgba($--color-black, 0.06) !default; -$--tab-header-fill-hover: rgba($--color-black, 0.06) !default; -$--tab-vertical-header-width: 90px !default; -$--tab-vertical-header-count-color: $--color-white !default; -$--tab-vertical-header-count-fill: $--color-text-secondary !default; - -/* Button --------------------------- */ -/// fontSize||Font|1 -$--button-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--button-font-weight: $--font-weight-primary !default; -/// borderRadius||Border|2 -$--button-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-padding-vertical: 12px !default; -/// padding||Spacing|3 -$--button-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-medium-font-size: $--font-size-base !default; -/// borderRadius||Border|2 -$--button-medium-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-medium-padding-vertical: 10px !default; -/// padding||Spacing|3 -$--button-medium-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-small-font-size: 12px !default; -$--button-small-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-small-padding-vertical: 9px !default; -/// padding||Spacing|3 -$--button-small-padding-horizontal: 15px !default; -/// fontSize||Font|1 -$--button-mini-font-size: 12px !default; -$--button-mini-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-mini-padding-vertical: 7px !default; -/// padding||Spacing|3 -$--button-mini-padding-horizontal: 15px !default; - -/// color||Color|0 -$--button-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--button-default-background-color: $--color-white !default; -/// color||Color|0 -$--button-default-border-color: $--border-color-base !default; - -/// color||Color|0 -$--button-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--button-disabled-border-color: $--border-color-lighter !default; - -/// color||Color|0 -$--button-primary-border-color: $--color-primary !default; -/// color||Color|0 -$--button-primary-font-color: $--color-white !default; -/// color||Color|0 -$--button-primary-background-color: $--color-primary !default; -/// color||Color|0 -$--button-success-border-color: $--color-success !default; -/// color||Color|0 -$--button-success-font-color: $--color-white !default; -/// color||Color|0 -$--button-success-background-color: $--color-success !default; -/// color||Color|0 -$--button-warning-border-color: $--color-warning !default; -/// color||Color|0 -$--button-warning-font-color: $--color-white !default; -/// color||Color|0 -$--button-warning-background-color: $--color-warning !default; -/// color||Color|0 -$--button-danger-border-color: $--color-danger !default; -/// color||Color|0 -$--button-danger-font-color: $--color-white !default; -/// color||Color|0 -$--button-danger-background-color: $--color-danger !default; -/// color||Color|0 -$--button-info-border-color: $--color-info !default; -/// color||Color|0 -$--button-info-font-color: $--color-white !default; -/// color||Color|0 -$--button-info-background-color: $--color-info !default; - -$--button-hover-tint-percent: 20% !default; -$--button-active-shade-percent: 10% !default; - - -/* cascader --------------------------- */ -$--cascader-height: 200px !default; - -/* Switch --------------------------- */ -/// color||Color|0 -$--switch-on-color: $--color-primary !default; -/// color||Color|0 -$--switch-off-color: $--border-color-base !default; -/// fontSize||Font|1 -$--switch-font-size: $--font-size-base !default; -$--switch-core-border-radius: 10px !default; -// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义 -$--switch-width: 40px !default; -// height||Other|4 -$--switch-height: 20px !default; -// height||Other|4 -$--switch-button-size: 16px !default; - -/* Dialog --------------------------- */ -$--dialog-background-color: $--color-white !default; -$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default; -/// fontSize||Font|1 -$--dialog-title-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--dialog-content-font-size: 14px !default; -/// fontLineHeight||LineHeight|2 -$--dialog-font-line-height: $--font-line-height-primary !default; -/// padding||Spacing|3 -$--dialog-padding-primary: 20px !default; - -/* Table --------------------------- */ -/// color||Color|0 -$--table-border-color: $--border-color-lighter !default; -$--table-border: 1px solid $--table-border-color !default; -/// color||Color|0 -$--table-font-color: $--color-text-regular !default; -/// color||Color|0 -$--table-header-font-color: $--color-text-secondary !default; -/// color||Color|0 -$--table-row-hover-background-color: $--background-color-base !default; -$--table-current-row-background-color: $--color-primary-light-9 !default; -/// color||Color|0 -$--table-header-background-color: $--color-white !default; -$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default; - -/* Pagination --------------------------- */ -/// fontSize||Font|1 -$--pagination-font-size: 13px !default; -/// color||Color|0 -$--pagination-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-font-color: $--color-text-primary !default; -$--pagination-border-radius: 3px !default; -/// color||Color|0 -$--pagination-button-color: $--color-text-primary !default; -/// height||Other|4 -$--pagination-button-width: 35.5px !default; -/// height||Other|4 -$--pagination-button-height: 28px !default; -/// color||Color|0 -$--pagination-button-disabled-color: $--color-text-placeholder !default; -/// color||Color|0 -$--pagination-button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-hover-color: $--color-primary !default; - -/* Popup --------------------------- */ -/// color||Color|0 -$--popup-modal-background-color: $--color-black !default; -/// opacity||Other|1 -$--popup-modal-opacity: 0.5 !default; - -/* Popover --------------------------- */ -/// color||Color|0 -$--popover-background-color: $--color-white !default; -/// fontSize||Font|1 -$--popover-font-size: $--font-size-base !default; -/// color||Color|0 -$--popover-border-color: $--border-color-lighter !default; -$--popover-arrow-size: 6px !default; -/// padding||Spacing|3 -$--popover-padding: 12px !default; -$--popover-padding-large: 18px 20px !default; -/// fontSize||Font|1 -$--popover-title-font-size: 16px !default; -/// color||Color|0 -$--popover-title-font-color: $--color-text-primary !default; - -/* Tooltip --------------------------- */ -/// color|1|Color|0 -$--tooltip-fill: $--color-text-primary !default; -/// color|1|Color|0 -$--tooltip-color: $--color-white !default; -/// fontSize||Font|1 -$--tooltip-font-size: 12px !default; -/// color||Color|0 -$--tooltip-border-color: $--color-text-primary !default; -$--tooltip-arrow-size: 6px !default; -/// padding||Spacing|3 -$--tooltip-padding: 10px !default; - -/* Tag --------------------------- */ -/// color||Color|0 -$--tag-info-color: $--color-info !default; -/// color||Color|0 -$--tag-primary-color: $--color-primary !default; -/// color||Color|0 -$--tag-success-color: $--color-success !default; -/// color||Color|0 -$--tag-warning-color: $--color-warning !default; -/// color||Color|0 -$--tag-danger-color: $--color-danger !default; -/// fontSize||Font|1 -$--tag-font-size: 12px !default; -$--tag-border-radius: 4px !default; -$--tag-padding: 0 10px !default; - -/* Tree --------------------------- */ -/// color||Color|0 -$--tree-node-hover-background-color: $--background-color-base !default; -/// color||Color|0 -$--tree-font-color: $--color-text-regular !default; -/// color||Color|0 -$--tree-expand-icon-color: $--color-text-placeholder !default; - -/* Dropdown --------------------------- */ -$--dropdown-menu-box-shadow: $--box-shadow-light !default; -$--dropdown-menuItem-hover-fill: $--color-primary-light-9 !default; -$--dropdown-menuItem-hover-color: $--link-color !default; - -/* Badge --------------------------- */ -/// color||Color|0 -$--badge-background-color: $--color-danger !default; -$--badge-radius: 10px !default; -/// fontSize||Font|1 -$--badge-font-size: 12px !default; -/// padding||Spacing|3 -$--badge-padding: 6px !default; -/// height||Other|4 -$--badge-size: 18px !default; - -/* Card ---------------------------*/ -/// color||Color|0 -$--card-border-color: $--border-color-lighter !default; -$--card-border-radius: 4px !default; -/// padding||Spacing|3 -$--card-padding: 20px !default; - -/* Slider ---------------------------*/ -/// color||Color|0 -$--slider-main-background-color: $--color-primary !default; -/// color||Color|0 -$--slider-runway-background-color: $--border-color-light !default; -$--slider-button-hover-color: mix($--color-primary, black, 97%) !default; -$--slider-stop-background-color: $--color-white !default; -$--slider-disable-color: $--color-text-placeholder !default; -$--slider-margin: 16px 0 !default; -$--slider-border-radius: 3px !default; -/// height|1|Other|4 -$--slider-height: 6px !default; -/// height||Other|4 -$--slider-button-size: 16px !default; -$--slider-button-wrapper-size: 36px !default; -$--slider-button-wrapper-offset: -15px !default; - -/* Steps ---------------------------*/ -$--steps-border-color: $--disabled-border-base !default; -$--steps-border-radius: 4px !default; -$--steps-padding: 20px !default; - -/* Menu ---------------------------*/ -/// fontSize||Font|1 -$--menu-item-font-size: $--font-size-base !default; -/// color||Color|0 -$--menu-item-font-color: $--color-text-primary !default; -/// color||Color|0 -$--menu-background-color: $--color-menu-background !default; -$--menu-item-hover-fill: $--color-primary-light-9 !default; - -/* Rate ---------------------------*/ -$--rate-height: 20px !default; -/// fontSize||Font|1 -$--rate-font-size: $--font-size-base !default; -/// height||Other|3 -$--rate-icon-size: 18px !default; -/// margin||Spacing|2 -$--rate-icon-margin: 6px !default; -$--rate-icon-color: $--color-text-placeholder !default; - -/* DatePicker ---------------------------*/ -$--datepicker-font-color: $--color-text-regular !default; -/// color|1|Color|0 -$--datepicker-off-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--datepicker-header-font-color: $--color-text-regular !default; -$--datepicker-icon-color: $--color-text-primary !default; -$--datepicker-border-color: $--disabled-border-base !default; -$--datepicker-inner-border-color: #e4e4e4 !default; -/// color||Color|0 -$--datepicker-inrange-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-active-color: $--color-primary !default; -/// color||Color|0 -$--datepicker-hover-font-color: $--color-primary !default; -$--datepicker-cell-hover-color: #fff !default; - -/* Loading ---------------------------*/ -/// height||Other|4 -$--loading-spinner-size: 42px !default; -/// height||Other|4 -$--loading-fullscreen-spinner-size: 50px !default; - -/* Scrollbar ---------------------------*/ -$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default; -$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default; - -/* Carousel ---------------------------*/ -/// fontSize||Font|1 -$--carousel-arrow-font-size: 12px !default; -$--carousel-arrow-size: 36px !default; -$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default; -$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default; -/// width||Other|4 -$--carousel-indicator-width: 30px !default; -/// height||Other|4 -$--carousel-indicator-height: 2px !default; -$--carousel-indicator-padding-horizontal: 4px !default; -$--carousel-indicator-padding-vertical: 12px !default; -$--carousel-indicator-out-color: $--border-color-hover !default; - -/* Collapse ---------------------------*/ -/// color||Color|0 -$--collapse-border-color: $--border-color-lighter !default; -/// height||Other|4 -$--collapse-header-height: 48px !default; -/// color||Color|0 -$--collapse-header-background-color: $--color-white !default; -/// color||Color|0 -$--collapse-header-font-color: $--color-text-primary !default; -/// fontSize||Font|1 -$--collapse-header-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-background-color: $--color-white !default; -/// fontSize||Font|1 -$--collapse-content-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-font-color: $--color-text-primary !default; - -/* Transfer ---------------------------*/ -$--transfer-border-color: $--border-color-lighter !default; -$--transfer-border-radius: $--border-radius-base !default; -/// height||Other|4 -$--transfer-panel-width: 200px !default; -/// height||Other|4 -$--transfer-panel-header-height: 40px !default; -/// color||Color|0 -$--transfer-panel-header-background-color: $--background-color-base !default; -/// height||Other|4 -$--transfer-panel-footer-height: 40px !default; -/// height||Other|4 -$--transfer-panel-body-height: 246px !default; -/// height||Other|4 -$--transfer-item-height: 30px !default; -/// height||Other|4 -$--transfer-filter-height: 32px !default; - -/* Header - --------------------------*/ -$--header-padding: 0 20px !default; - -/* Footer ---------------------------*/ -$--footer-padding: 0 20px !default; - -/* Main ---------------------------*/ -$--main-padding: 20px !default; - -/* Timeline ---------------------------*/ -$--timeline-node-size-normal: 12px !default; -$--timeline-node-size-large: 14px !default; -$--timeline-node-color: $--border-color-light !default; - -/* Backtop ---------------------------*/ -/// color||Color|0 -$--backtop-background-color: $--color-white !default; -/// color||Color|0 -$--backtop-font-color: $--color-primary !default; -/// color||Color|0 -$--backtop-hover-background-color: $--border-color-extra-light !default; - -/* Link ---------------------------*/ -/// fontSize||Font|1 -$--link-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--link-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--link-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--link-default-active-color: $--color-primary !default; -/// color||Color|0 -$--link-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--link-primary-font-color: $--color-primary !default; -/// color||Color|0 -$--link-success-font-color: $--color-success !default; -/// color||Color|0 -$--link-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--link-danger-font-color: $--color-danger !default; -/// color||Color|0 -$--link-info-font-color: $--color-info !default; -/* Calendar ---------------------------*/ -/// border||Other|4 -$--calendar-border: $--table-border !default; -/// color||Other|4 -$--calendar-selected-background-color: #F2F8FE !default; -$--calendar-cell-width: 85px !default; - -/* Form --------------------------- */ -/// fontSize||Font|1 -$--form-label-font-size: $--font-size-base !default; - -/* Avatar ---------------------------*/ -/// color||Color|0 -$--avatar-font-color: #fff !default; -/// color||Color|0 -$--avatar-background-color: #C0C4CC !default; -/// fontSize||Font Size|1 -$--avatar-text-font-size: 14px !default; -/// fontSize||Font Size|1 -$--avatar-icon-font-size: 18px !default; -/// borderRadius||Border|2 -$--avatar-border-radius: $--border-radius-base !default; -/// size|1|Avatar Size|3 -$--avatar-large-size: 40px !default; -/// size|1|Avatar Size|3 -$--avatar-medium-size: 36px !default; -/// size|1|Avatar Size|3 -$--avatar-small-size: 28px !default; - -/* Break-point ---------------------------*/ -$--sm: 768px !default; -$--md: 992px !default; -$--lg: 1200px !default; -$--xl: 1920px !default; - -$--breakpoints: ( - 'xs' : (max-width: $--sm - 1), - 'sm' : (min-width: $--sm), - 'md' : (min-width: $--md), - 'lg' : (min-width: $--lg), - 'xl' : (min-width: $--xl) -); - -$--breakpoints-spec: ( - 'xs-only' : (max-width: $--sm - 1), - 'sm-and-up' : (min-width: $--sm), - 'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})", - 'sm-and-down': (max-width: $--md - 1), - 'md-and-up' : (min-width: $--md), - 'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})", - 'md-and-down': (max-width: $--lg - 1), - 'lg-and-up' : (min-width: $--lg), - 'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})", - 'lg-and-down': (max-width: $--xl - 1), - 'xl-only' : (min-width: $--xl), -); diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-orange.scss b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-orange.scss deleted file mode 100644 index 26da27c0..00000000 --- a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/element-variables-orange.scss +++ /dev/null @@ -1,1001 +0,0 @@ -/* Element Chalk Variables */ - -// Special comment for theme configurator -// type|skipAutoTranslation|Category|Order -// skipAutoTranslation 1 - -/* Transition --------------------------- */ -$--all-transition: all .3s cubic-bezier(.645,.045,.355,1) !default; -$--fade-transition: opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--fade-linear-transition: opacity 200ms linear !default; -$--md-fade-transition: transform 300ms cubic-bezier(0.23, 1, 0.32, 1), opacity 300ms cubic-bezier(0.23, 1, 0.32, 1) !default; -$--border-transition-base: border-color .2s cubic-bezier(.645,.045,.355,1) !default; -$--color-transition-base: color .2s cubic-bezier(.645,.045,.355,1) !default; - -/* Color --------------------------- */ -/// color|1|Brand Color|0 -$--color-primary: #FCA834 !default; -/// color|1|Background Color|4 -$--color-white: #FFFFFF !default; -/// color|1|Background Color|4 -$--color-black: #000000 !default; -$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */ -$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */ -$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */ -$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */ -$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */ -$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */ -$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */ -$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */ -$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */ -/// color|1|Functional Color|1 -$--color-success: #6DC741 !default; -/// color|1|Functional Color|1 -$--color-warning: #E6A23C !default; -/// color|1|Functional Color|1 -$--color-danger: #F56C6C !default; -/// color|1|Functional Color|1 -$--color-info: #909399 !default; - -$--color-success-light: mix($--color-white, $--color-success, 80%) !default; -$--color-warning-light: mix($--color-white, $--color-warning, 80%) !default; -$--color-danger-light: mix($--color-white, $--color-danger, 80%) !default; -$--color-info-light: mix($--color-white, $--color-info, 80%) !default; - -$--color-success-lighter: mix($--color-white, $--color-success, 90%) !default; -$--color-warning-lighter: mix($--color-white, $--color-warning, 90%) !default; -$--color-danger-lighter: mix($--color-white, $--color-danger, 90%) !default; -$--color-info-lighter: mix($--color-white, $--color-info, 90%) !default; -/// color|1|Font Color|2 -$--color-text-primary: #303133 !default; -/// color|1|Font Color|2 -$--color-text-regular: #606266 !default; -/// color|1|Font Color|2 -$--color-text-secondary: #909399 !default; -/// color|1|Font Color|2 -$--color-text-placeholder: #C0C4CC !default; -/// color|1|Border Color|3 -$--border-color-base: #DCDFE6 !default; -/// color|1|Border Color|3 -$--border-color-light: #E4E7ED !default; -/// color|1|Border Color|3 -$--border-color-lighter: #EBEEF5 !default; -/// color|1|Border Color|3 -$--border-color-extra-light: #F2F6FC !default; - -// Background -/// color|1|Background Color|4 -$--background-color-base: #F5F7FA !default; - -// color for left sidebar title -$--color-sidebar-title-text: #FFFFFF; -// color for left sidebar background -$--color-menu-background: #042345; -$--color-menu-item-active-text-color: #FFFFFF; -$--color-menu-item-active-background: $--color-primary; -$--color-submenu-background: #021F3B; -/* Link --------------------------- */ -$--link-color: $--color-primary-light-2 !default; -$--link-hover-color: $--color-primary !default; - -/* Border --------------------------- */ -$--border-width-base: 1px !default; -$--border-style-base: solid !default; -$--border-color-hover: $--color-text-placeholder !default; -$--border-base: $--border-width-base $--border-style-base $--border-color-base !default; -/// borderRadius|1|Radius|0 -$--border-radius-base: 4px !default; -/// borderRadius|1|Radius|0 -$--border-radius-small: 2px !default; -/// borderRadius|1|Radius|0 -$--border-radius-circle: 100% !default; -/// borderRadius|1|Radius|0 -$--border-radius-zero: 0 !default; - -// Box-shadow -/// boxShadow|1|Shadow|1 -$--box-shadow-base: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .04) !default; -// boxShadow|1|Shadow|1 -$--box-shadow-dark: 0 2px 4px rgba(0, 0, 0, .12), 0 0 6px rgba(0, 0, 0, .12) !default; -/// boxShadow|1|Shadow|1 -$--box-shadow-light: 0 2px 12px 0 rgba(0, 0, 0, 0.1) !default; - -/* Fill --------------------------- */ -$--fill-base: $--color-white !default; - -/* Typography --------------------------- */ -$--font-path: 'fonts' !default; -$--font-display: 'auto' !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-large: 20px !default; -/// fontSize|1|Font Size|0 -$--font-size-large: 18px !default; -/// fontSize|1|Font Size|0 -$--font-size-medium: 16px !default; -/// fontSize|1|Font Size|0 -$--font-size-base: 14px !default; -/// fontSize|1|Font Size|0 -$--font-size-small: 13px !default; -/// fontSize|1|Font Size|0 -$--font-size-extra-small: 12px !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-primary: 500 !default; -/// fontWeight|1|Font Weight|1 -$--font-weight-secondary: 100 !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-primary: 24px !default; -/// fontLineHeight|1|Line Height|2 -$--font-line-height-secondary: 16px !default; -$--font-color-disabled-base: #bbb !default; -/* Size --------------------------- */ -$--size-base: 14px !default; - -/* z-index --------------------------- */ -$--index-normal: 1 !default; -$--index-top: 1000 !default; -$--index-popper: 2000 !default; - -/* Disable base --------------------------- */ -$--disabled-fill-base: $--background-color-base !default; -$--disabled-color-base: $--color-text-placeholder !default; -$--disabled-border-base: $--border-color-light !default; - -/* Icon --------------------------- */ -$--icon-color: #666 !default; -$--icon-color-base: $--color-info !default; - -/* Checkbox --------------------------- */ -/// fontSize||Font|1 -$--checkbox-font-size: 14px !default; -/// fontWeight||Font|1 -$--checkbox-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--checkbox-font-color: $--color-text-regular !default; -$--checkbox-input-height: 14px !default; -$--checkbox-input-width: 14px !default; -/// borderRadius||Border|2 -$--checkbox-border-radius: $--border-radius-small !default; -/// color||Color|0 -$--checkbox-background-color: $--color-white !default; -$--checkbox-input-border: $--border-base !default; - -/// color||Color|0 -$--checkbox-disabled-border-color: $--border-color-base !default; -$--checkbox-disabled-input-fill: #edf2fc !default; -$--checkbox-disabled-icon-color: $--color-text-placeholder !default; - -$--checkbox-disabled-checked-input-fill: $--border-color-extra-light !default; -$--checkbox-disabled-checked-input-border-color: $--border-color-base !default; -$--checkbox-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--checkbox-checked-font-color: $--color-primary !default; -$--checkbox-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-checked-background-color: $--color-primary !default; -$--checkbox-checked-icon-color: $--fill-base !default; - -$--checkbox-input-border-color-hover: $--color-primary !default; -/// height||Other|4 -$--checkbox-bordered-height: 40px !default; -/// padding||Spacing|3 -$--checkbox-bordered-padding: 9px 20px 9px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-medium-padding: 7px 20px 7px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-small-padding: 5px 15px 5px 10px !default; -/// padding||Spacing|3 -$--checkbox-bordered-mini-padding: 3px 15px 3px 10px !default; -$--checkbox-bordered-medium-input-height: 14px !default; -$--checkbox-bordered-medium-input-width: 14px !default; -/// height||Other|4 -$--checkbox-bordered-medium-height: 36px !default; -$--checkbox-bordered-small-input-height: 12px !default; -$--checkbox-bordered-small-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-small-height: 32px !default; -$--checkbox-bordered-mini-input-height: 12px !default; -$--checkbox-bordered-mini-input-width: 12px !default; -/// height||Other|4 -$--checkbox-bordered-mini-height: 28px !default; - -/// color||Color|0 -$--checkbox-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--checkbox-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--checkbox-button-checked-border-color: $--color-primary !default; - - - -/* Radio --------------------------- */ -/// fontSize||Font|1 -$--radio-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--radio-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--radio-font-color: $--color-text-regular !default; -$--radio-input-height: 14px !default; -$--radio-input-width: 14px !default; -/// borderRadius||Border|2 -$--radio-input-border-radius: $--border-radius-circle !default; -/// color||Color|0 -$--radio-input-background-color: $--color-white !default; -$--radio-input-border: $--border-base !default; -/// color||Color|0 -$--radio-input-border-color: $--border-color-base !default; -/// color||Color|0 -$--radio-icon-color: $--color-white !default; - -$--radio-disabled-input-border-color: $--disabled-border-base !default; -$--radio-disabled-input-fill: $--disabled-fill-base !default; -$--radio-disabled-icon-color: $--disabled-fill-base !default; - -$--radio-disabled-checked-input-border-color: $--disabled-border-base !default; -$--radio-disabled-checked-input-fill: $--disabled-fill-base !default; -$--radio-disabled-checked-icon-color: $--color-text-placeholder !default; - -/// color||Color|0 -$--radio-checked-font-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-border-color: $--color-primary !default; -/// color||Color|0 -$--radio-checked-input-background-color: $--color-white !default; -/// color||Color|0 -$--radio-checked-icon-color: $--color-primary !default; - -$--radio-input-border-color-hover: $--color-primary !default; - -$--radio-bordered-height: 40px !default; -$--radio-bordered-padding: 12px 20px 0 10px !default; -$--radio-bordered-medium-padding: 10px 20px 0 10px !default; -$--radio-bordered-small-padding: 8px 15px 0 10px !default; -$--radio-bordered-mini-padding: 6px 15px 0 10px !default; -$--radio-bordered-medium-input-height: 14px !default; -$--radio-bordered-medium-input-width: 14px !default; -$--radio-bordered-medium-height: 36px !default; -$--radio-bordered-small-input-height: 12px !default; -$--radio-bordered-small-input-width: 12px !default; -$--radio-bordered-small-height: 32px !default; -$--radio-bordered-mini-input-height: 12px !default; -$--radio-bordered-mini-input-width: 12px !default; -$--radio-bordered-mini-height: 28px !default; - -/// fontSize||Font|1 -$--radio-button-font-size: $--font-size-base !default; -/// color||Color|0 -$--radio-button-checked-background-color: $--color-primary !default; -/// color||Color|0 -$--radio-button-checked-font-color: $--color-white !default; -/// color||Color|0 -$--radio-button-checked-border-color: $--color-primary !default; -$--radio-button-disabled-checked-fill: $--border-color-extra-light !default; - -/* Select --------------------------- */ -$--select-border-color-hover: $--border-color-hover !default; -$--select-disabled-border: $--disabled-border-base !default; -/// fontSize||Font|1 -$--select-font-size: $--font-size-base !default; -$--select-close-hover-color: $--color-text-secondary !default; - -$--select-input-color: $--color-text-placeholder !default; -$--select-multiple-input-color: #666 !default; -/// color||Color|0 -$--select-input-focus-border-color: $--color-primary !default; -/// fontSize||Font|1 -$--select-input-font-size: 14px !default; - -$--select-option-color: $--color-text-regular !default; -$--select-option-disabled-color: $--color-text-placeholder !default; -$--select-option-disabled-background: $--color-white !default; -/// height||Other|4 -$--select-option-height: 34px !default; -$--select-option-hover-background: $--background-color-base !default; -/// color||Color|0 -$--select-option-selected-font-color: $--color-primary !default; -$--select-option-selected-hover: $--background-color-base !default; - -$--select-group-color: $--color-info !default; -$--select-group-height: 30px !default; -$--select-group-font-size: 12px !default; - -$--select-dropdown-background: $--color-white !default; -$--select-dropdown-shadow: $--box-shadow-light !default; -$--select-dropdown-empty-color: #999 !default; -/// height||Other|4 -$--select-dropdown-max-height: 274px !default; -$--select-dropdown-padding: 6px 0 !default; -$--select-dropdown-empty-padding: 10px 0 !default; -$--select-dropdown-border: solid 1px $--border-color-light !default; - -/* Alert --------------------------- */ -$--alert-padding: 8px 16px !default; -/// borderRadius||Border|2 -$--alert-border-radius: $--border-radius-base !default; -/// fontSize||Font|1 -$--alert-title-font-size: 13px !default; -/// fontSize||Font|1 -$--alert-description-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-font-size: 12px !default; -/// fontSize||Font|1 -$--alert-close-customed-font-size: 13px !default; - -$--alert-success-color: $--color-success-lighter !default; -$--alert-info-color: $--color-info-lighter !default; -$--alert-warning-color: $--color-warning-lighter !default; -$--alert-danger-color: $--color-danger-lighter !default; - -/// height||Other|4 -$--alert-icon-size: 16px !default; -/// height||Other|4 -$--alert-icon-large-size: 28px !default; - -/* MessageBox --------------------------- */ -/// color||Color|0 -$--messagebox-title-color: $--color-text-primary !default; -$--msgbox-width: 420px !default; -$--msgbox-border-radius: 4px !default; -/// fontSize||Font|1 -$--messagebox-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--messagebox-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--messagebox-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--messagebox-error-font-size: 12px !default; -$--msgbox-padding-primary: 15px !default; -/// color||Color|0 -$--messagebox-success-color: $--color-success !default; -/// color||Color|0 -$--messagebox-info-color: $--color-info !default; -/// color||Color|0 -$--messagebox-warning-color: $--color-warning !default; -/// color||Color|0 -$--messagebox-danger-color: $--color-danger !default; - -/* Message --------------------------- */ -$--message-shadow: $--box-shadow-base !default; -$--message-min-width: 380px !default; -$--message-background-color: #edf2fc !default; -$--message-padding: 15px 15px 15px 20px !default; -/// color||Color|0 -$--message-close-icon-color: $--color-text-placeholder !default; -/// height||Other|4 -$--message-close-size: 16px !default; -/// color||Color|0 -$--message-close-hover-color: $--color-text-secondary !default; - -/// color||Color|0 -$--message-success-font-color: $--color-success !default; -/// color||Color|0 -$--message-info-font-color: $--color-info !default; -/// color||Color|0 -$--message-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--message-danger-font-color: $--color-danger !default; - -/* Notification --------------------------- */ -$--notification-width: 330px !default; -/// padding||Spacing|3 -$--notification-padding: 14px 26px 14px 13px !default; -$--notification-radius: 8px !default; -$--notification-shadow: $--box-shadow-light !default; -/// color||Color|0 -$--notification-border-color: $--border-color-lighter !default; -$--notification-icon-size: 24px !default; -$--notification-close-font-size: $--message-close-size !default; -$--notification-group-margin-left: 13px !default; -$--notification-group-margin-right: 8px !default; -/// fontSize||Font|1 -$--notification-content-font-size: $--font-size-base !default; -/// color||Color|0 -$--notification-content-color: $--color-text-regular !default; -/// fontSize||Font|1 -$--notification-title-font-size: 16px !default; -/// color||Color|0 -$--notification-title-color: $--color-text-primary !default; - -/// color||Color|0 -$--notification-close-color: $--color-text-secondary !default; -/// color||Color|0 -$--notification-close-hover-color: $--color-text-regular !default; - -/// color||Color|0 -$--notification-success-icon-color: $--color-success !default; -/// color||Color|0 -$--notification-info-icon-color: $--color-info !default; -/// color||Color|0 -$--notification-warning-icon-color: $--color-warning !default; -/// color||Color|0 -$--notification-danger-icon-color: $--color-danger !default; - -/* Input --------------------------- */ -$--input-font-size: $--font-size-base !default; -/// color||Color|0 -$--input-font-color: $--color-text-regular !default; -/// height||Other|4 -$--input-width: 140px !default; -/// height||Other|4 -$--input-height: 40px !default; -$--input-border: $--border-base !default; -$--input-border-color: $--border-color-base !default; -/// borderRadius||Border|2 -$--input-border-radius: $--border-radius-base !default; -$--input-border-color-hover: $--border-color-hover !default; -/// color||Color|0 -$--input-background-color: $--color-white !default; -$--input-fill-disabled: $--disabled-fill-base !default; -$--input-color-disabled: $--font-color-disabled-base !default; -/// color||Color|0 -$--input-icon-color: $--color-text-placeholder !default; -/// color||Color|0 -$--input-placeholder-color: $--color-text-placeholder !default; -$--input-max-width: 314px !default; - -$--input-hover-border: $--border-color-hover !default; -$--input-clear-hover-color: $--color-text-secondary !default; - -$--input-focus-border: $--color-primary !default; -$--input-focus-fill: $--color-white !default; - -$--input-disabled-fill: $--disabled-fill-base !default; -$--input-disabled-border: $--disabled-border-base !default; -$--input-disabled-color: $--disabled-color-base !default; -$--input-disabled-placeholder-color: $--color-text-placeholder !default; - -/// fontSize||Font|1 -$--input-medium-font-size: 14px !default; -/// height||Other|4 -$--input-medium-height: 36px !default; -/// fontSize||Font|1 -$--input-small-font-size: 13px !default; -/// height||Other|4 -$--input-small-height: 32px !default; -/// fontSize||Font|1 -$--input-mini-font-size: 12px !default; -/// height||Other|4 -$--input-mini-height: 28px !default; - -/* Cascader --------------------------- */ -/// color||Color|0 -$--cascader-menu-font-color: $--color-text-regular !default; -/// color||Color|0 -$--cascader-menu-selected-font-color: $--color-primary !default; -$--cascader-menu-fill: $--fill-base !default; -$--cascader-menu-font-size: $--font-size-base !default; -$--cascader-menu-radius: $--border-radius-base !default; -$--cascader-menu-border: solid 1px $--border-color-light !default; -$--cascader-menu-shadow: $--box-shadow-light !default; -$--cascader-node-background-hover: $--background-color-base !default; -$--cascader-node-color-disabled:$--color-text-placeholder !default; -$--cascader-color-empty:$--color-text-placeholder !default; -$--cascader-tag-background: #f0f2f5; - -/* Group --------------------------- */ -$--group-option-flex: 0 0 (1/5) * 100% !default; -$--group-option-offset-bottom: 12px !default; -$--group-option-fill-hover: rgba($--color-black, 0.06) !default; -$--group-title-color: $--color-black !default; -$--group-title-font-size: $--font-size-base !default; -$--group-title-width: 66px !default; - -/* Tab --------------------------- */ -$--tab-font-size: $--font-size-base !default; -$--tab-border-line: 1px solid #e4e4e4 !default; -$--tab-header-color-active: $--color-text-secondary !default; -$--tab-header-color-hover: $--color-text-regular !default; -$--tab-header-color: $--color-text-regular !default; -$--tab-header-fill-active: rgba($--color-black, 0.06) !default; -$--tab-header-fill-hover: rgba($--color-black, 0.06) !default; -$--tab-vertical-header-width: 90px !default; -$--tab-vertical-header-count-color: $--color-white !default; -$--tab-vertical-header-count-fill: $--color-text-secondary !default; - -/* Button --------------------------- */ -/// fontSize||Font|1 -$--button-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--button-font-weight: $--font-weight-primary !default; -/// borderRadius||Border|2 -$--button-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-padding-vertical: 12px !default; -/// padding||Spacing|3 -$--button-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-medium-font-size: $--font-size-base !default; -/// borderRadius||Border|2 -$--button-medium-border-radius: $--border-radius-base !default; -/// padding||Spacing|3 -$--button-medium-padding-vertical: 10px !default; -/// padding||Spacing|3 -$--button-medium-padding-horizontal: 20px !default; - -/// fontSize||Font|1 -$--button-small-font-size: 12px !default; -$--button-small-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-small-padding-vertical: 9px !default; -/// padding||Spacing|3 -$--button-small-padding-horizontal: 15px !default; -/// fontSize||Font|1 -$--button-mini-font-size: 12px !default; -$--button-mini-border-radius: #{$--border-radius-base - 1} !default; -/// padding||Spacing|3 -$--button-mini-padding-vertical: 7px !default; -/// padding||Spacing|3 -$--button-mini-padding-horizontal: 15px !default; - -/// color||Color|0 -$--button-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--button-default-background-color: $--color-white !default; -/// color||Color|0 -$--button-default-border-color: $--border-color-base !default; - -/// color||Color|0 -$--button-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--button-disabled-border-color: $--border-color-lighter !default; - -/// color||Color|0 -$--button-primary-border-color: $--color-primary !default; -/// color||Color|0 -$--button-primary-font-color: $--color-white !default; -/// color||Color|0 -$--button-primary-background-color: $--color-primary !default; -/// color||Color|0 -$--button-success-border-color: $--color-success !default; -/// color||Color|0 -$--button-success-font-color: $--color-white !default; -/// color||Color|0 -$--button-success-background-color: $--color-success !default; -/// color||Color|0 -$--button-warning-border-color: $--color-warning !default; -/// color||Color|0 -$--button-warning-font-color: $--color-white !default; -/// color||Color|0 -$--button-warning-background-color: $--color-warning !default; -/// color||Color|0 -$--button-danger-border-color: $--color-danger !default; -/// color||Color|0 -$--button-danger-font-color: $--color-white !default; -/// color||Color|0 -$--button-danger-background-color: $--color-danger !default; -/// color||Color|0 -$--button-info-border-color: $--color-info !default; -/// color||Color|0 -$--button-info-font-color: $--color-white !default; -/// color||Color|0 -$--button-info-background-color: $--color-info !default; - -$--button-hover-tint-percent: 20% !default; -$--button-active-shade-percent: 10% !default; - - -/* cascader --------------------------- */ -$--cascader-height: 200px !default; - -/* Switch --------------------------- */ -/// color||Color|0 -$--switch-on-color: $--color-primary !default; -/// color||Color|0 -$--switch-off-color: $--border-color-base !default; -/// fontSize||Font|1 -$--switch-font-size: $--font-size-base !default; -$--switch-core-border-radius: 10px !default; -// height||Other|4 TODO: width 代码写死的40px 所以下面这三个属性都没意义 -$--switch-width: 40px !default; -// height||Other|4 -$--switch-height: 20px !default; -// height||Other|4 -$--switch-button-size: 16px !default; - -/* Dialog --------------------------- */ -$--dialog-background-color: $--color-white !default; -$--dialog-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3) !default; -/// fontSize||Font|1 -$--dialog-title-font-size: $--font-size-large !default; -/// fontSize||Font|1 -$--dialog-content-font-size: 14px !default; -/// fontLineHeight||LineHeight|2 -$--dialog-font-line-height: $--font-line-height-primary !default; -/// padding||Spacing|3 -$--dialog-padding-primary: 20px !default; - -/* Table --------------------------- */ -/// color||Color|0 -$--table-border-color: $--border-color-lighter !default; -$--table-border: 1px solid $--table-border-color !default; -/// color||Color|0 -$--table-font-color: $--color-text-regular !default; -/// color||Color|0 -$--table-header-font-color: $--color-text-secondary !default; -/// color||Color|0 -$--table-row-hover-background-color: $--background-color-base !default; -$--table-current-row-background-color: rgba(255, 255, 255, .12) !default; -/// color||Color|0 -$--table-header-background-color: $--color-white !default; -$--table-fixed-box-shadow: 0 0 10px rgba(0, 0, 0, .12) !default; - -/* Pagination --------------------------- */ -/// fontSize||Font|1 -$--pagination-font-size: 13px !default; -/// color||Color|0 -$--pagination-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-font-color: $--color-text-primary !default; -$--pagination-border-radius: 3px !default; -/// color||Color|0 -$--pagination-button-color: $--color-text-primary !default; -/// height||Other|4 -$--pagination-button-width: 35.5px !default; -/// height||Other|4 -$--pagination-button-height: 28px !default; -/// color||Color|0 -$--pagination-button-disabled-color: $--color-text-placeholder !default; -/// color||Color|0 -$--pagination-button-disabled-background-color: $--color-white !default; -/// color||Color|0 -$--pagination-hover-color: $--color-primary !default; - -/* Popup --------------------------- */ -/// color||Color|0 -$--popup-modal-background-color: $--color-black !default; -/// opacity||Other|1 -$--popup-modal-opacity: 0.5 !default; - -/* Popover --------------------------- */ -/// color||Color|0 -$--popover-background-color: $--color-white !default; -/// fontSize||Font|1 -$--popover-font-size: $--font-size-base !default; -/// color||Color|0 -$--popover-border-color: $--border-color-lighter !default; -$--popover-arrow-size: 6px !default; -/// padding||Spacing|3 -$--popover-padding: 12px !default; -$--popover-padding-large: 18px 20px !default; -/// fontSize||Font|1 -$--popover-title-font-size: 16px !default; -/// color||Color|0 -$--popover-title-font-color: $--color-text-primary !default; - -/* Tooltip --------------------------- */ -/// color|1|Color|0 -$--tooltip-fill: $--color-text-primary !default; -/// color|1|Color|0 -$--tooltip-color: $--color-white !default; -/// fontSize||Font|1 -$--tooltip-font-size: 12px !default; -/// color||Color|0 -$--tooltip-border-color: $--color-text-primary !default; -$--tooltip-arrow-size: 6px !default; -/// padding||Spacing|3 -$--tooltip-padding: 10px !default; - -/* Tag --------------------------- */ -/// color||Color|0 -$--tag-info-color: $--color-info !default; -/// color||Color|0 -$--tag-primary-color: $--color-primary !default; -/// color||Color|0 -$--tag-success-color: $--color-success !default; -/// color||Color|0 -$--tag-warning-color: $--color-warning !default; -/// color||Color|0 -$--tag-danger-color: $--color-danger !default; -/// fontSize||Font|1 -$--tag-font-size: 12px !default; -$--tag-border-radius: 4px !default; -$--tag-padding: 0 10px !default; - -/* Tree --------------------------- */ -/// color||Color|0 -$--tree-node-hover-background-color: $--background-color-base !default; -/// color||Color|0 -$--tree-font-color: $--color-text-regular !default; -/// color||Color|0 -$--tree-expand-icon-color: $--color-text-placeholder !default; - -/* Dropdown --------------------------- */ -$--dropdown-menu-box-shadow: $--box-shadow-light !default; -$--dropdown-menuItem-hover-fill: $--color-primary !default; -$--dropdown-menuItem-hover-color: $--color-white !default; - -/* Badge --------------------------- */ -/// color||Color|0 -$--badge-background-color: $--color-danger !default; -$--badge-radius: 10px !default; -/// fontSize||Font|1 -$--badge-font-size: 12px !default; -/// padding||Spacing|3 -$--badge-padding: 6px !default; -/// height||Other|4 -$--badge-size: 18px !default; - -/* Card ---------------------------*/ -/// color||Color|0 -$--card-border-color: $--border-color-lighter !default; -$--card-border-radius: 4px !default; -/// padding||Spacing|3 -$--card-padding: 20px !default; - -/* Slider ---------------------------*/ -/// color||Color|0 -$--slider-main-background-color: $--color-primary !default; -/// color||Color|0 -$--slider-runway-background-color: $--border-color-light !default; -$--slider-button-hover-color: mix($--color-primary, black, 97%) !default; -$--slider-stop-background-color: $--color-white !default; -$--slider-disable-color: $--color-text-placeholder !default; -$--slider-margin: 16px 0 !default; -$--slider-border-radius: 3px !default; -/// height|1|Other|4 -$--slider-height: 6px !default; -/// height||Other|4 -$--slider-button-size: 16px !default; -$--slider-button-wrapper-size: 36px !default; -$--slider-button-wrapper-offset: -15px !default; - -/* Steps ---------------------------*/ -$--steps-border-color: $--disabled-border-base !default; -$--steps-border-radius: 4px !default; -$--steps-padding: 20px !default; - -/* Menu ---------------------------*/ -/// fontSize||Font|1 -$--menu-item-font-size: $--font-size-base !default; -/// color||Color|0 -$--menu-item-font-color: $--color-white !default; -/// color||Color|0 -$--menu-background-color: $--color-menu-background !default; -$--menu-item-hover-fill: $--color-menu-item-active-background !default; - -/* Rate ---------------------------*/ -$--rate-height: 20px !default; -/// fontSize||Font|1 -$--rate-font-size: $--font-size-base !default; -/// height||Other|3 -$--rate-icon-size: 18px !default; -/// margin||Spacing|2 -$--rate-icon-margin: 6px !default; -$--rate-icon-color: $--color-text-placeholder !default; - -/* DatePicker ---------------------------*/ -$--datepicker-font-color: $--color-text-regular !default; -/// color|1|Color|0 -$--datepicker-off-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--datepicker-header-font-color: $--color-text-regular !default; -$--datepicker-icon-color: $--color-text-primary !default; -$--datepicker-border-color: $--disabled-border-base !default; -$--datepicker-inner-border-color: #e4e4e4 !default; -/// color||Color|0 -$--datepicker-inrange-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-inrange-hover-background-color: $--border-color-extra-light !default; -/// color||Color|0 -$--datepicker-active-color: $--color-primary !default; -/// color||Color|0 -$--datepicker-hover-font-color: $--color-primary !default; -$--datepicker-cell-hover-color: #fff !default; - -/* Loading ---------------------------*/ -/// height||Other|4 -$--loading-spinner-size: 42px !default; -/// height||Other|4 -$--loading-fullscreen-spinner-size: 50px !default; - -/* Scrollbar ---------------------------*/ -$--scrollbar-background-color: rgba($--color-text-secondary, .3) !default; -$--scrollbar-hover-background-color: rgba($--color-text-secondary, .5) !default; - -/* Carousel ---------------------------*/ -/// fontSize||Font|1 -$--carousel-arrow-font-size: 12px !default; -$--carousel-arrow-size: 36px !default; -$--carousel-arrow-background: rgba(31, 45, 61, 0.11) !default; -$--carousel-arrow-hover-background: rgba(31, 45, 61, 0.23) !default; -/// width||Other|4 -$--carousel-indicator-width: 30px !default; -/// height||Other|4 -$--carousel-indicator-height: 2px !default; -$--carousel-indicator-padding-horizontal: 4px !default; -$--carousel-indicator-padding-vertical: 12px !default; -$--carousel-indicator-out-color: $--border-color-hover !default; - -/* Collapse ---------------------------*/ -/// color||Color|0 -$--collapse-border-color: $--border-color-lighter !default; -/// height||Other|4 -$--collapse-header-height: 48px !default; -/// color||Color|0 -$--collapse-header-background-color: $--color-white !default; -/// color||Color|0 -$--collapse-header-font-color: $--color-text-primary !default; -/// fontSize||Font|1 -$--collapse-header-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-background-color: $--color-white !default; -/// fontSize||Font|1 -$--collapse-content-font-size: 13px !default; -/// color||Color|0 -$--collapse-content-font-color: $--color-text-primary !default; - -/* Transfer ---------------------------*/ -$--transfer-border-color: $--border-color-lighter !default; -$--transfer-border-radius: $--border-radius-base !default; -/// height||Other|4 -$--transfer-panel-width: 200px !default; -/// height||Other|4 -$--transfer-panel-header-height: 40px !default; -/// color||Color|0 -$--transfer-panel-header-background-color: $--background-color-base !default; -/// height||Other|4 -$--transfer-panel-footer-height: 40px !default; -/// height||Other|4 -$--transfer-panel-body-height: 246px !default; -/// height||Other|4 -$--transfer-item-height: 30px !default; -/// height||Other|4 -$--transfer-filter-height: 32px !default; - -/* Header - --------------------------*/ -$--header-padding: 0 20px !default; - -/* Footer ---------------------------*/ -$--footer-padding: 0 20px !default; - -/* Main ---------------------------*/ -$--main-padding: 20px !default; - -/* Timeline ---------------------------*/ -$--timeline-node-size-normal: 12px !default; -$--timeline-node-size-large: 14px !default; -$--timeline-node-color: $--border-color-light !default; - -/* Backtop ---------------------------*/ -/// color||Color|0 -$--backtop-background-color: $--color-white !default; -/// color||Color|0 -$--backtop-font-color: $--color-primary !default; -/// color||Color|0 -$--backtop-hover-background-color: $--border-color-extra-light !default; - -/* Link ---------------------------*/ -/// fontSize||Font|1 -$--link-font-size: $--font-size-base !default; -/// fontWeight||Font|1 -$--link-font-weight: $--font-weight-primary !default; -/// color||Color|0 -$--link-default-font-color: $--color-text-regular !default; -/// color||Color|0 -$--link-default-active-color: $--color-primary !default; -/// color||Color|0 -$--link-disabled-font-color: $--color-text-placeholder !default; -/// color||Color|0 -$--link-primary-font-color: $--color-primary !default; -/// color||Color|0 -$--link-success-font-color: $--color-success !default; -/// color||Color|0 -$--link-warning-font-color: $--color-warning !default; -/// color||Color|0 -$--link-danger-font-color: $--color-danger !default; -/// color||Color|0 -$--link-info-font-color: $--color-info !default; -/* Calendar ---------------------------*/ -/// border||Other|4 -$--calendar-border: $--table-border !default; -/// color||Other|4 -$--calendar-selected-background-color: #F2F8FE !default; -$--calendar-cell-width: 85px !default; - -/* Form --------------------------- */ -/// fontSize||Font|1 -$--form-label-font-size: $--font-size-base !default; - -/* Avatar ---------------------------*/ -/// color||Color|0 -$--avatar-font-color: #fff !default; -/// color||Color|0 -$--avatar-background-color: #C0C4CC !default; -/// fontSize||Font Size|1 -$--avatar-text-font-size: 14px !default; -/// fontSize||Font Size|1 -$--avatar-icon-font-size: 18px !default; -/// borderRadius||Border|2 -$--avatar-border-radius: $--border-radius-base !default; -/// size|1|Avatar Size|3 -$--avatar-large-size: 40px !default; -/// size|1|Avatar Size|3 -$--avatar-medium-size: 36px !default; -/// size|1|Avatar Size|3 -$--avatar-small-size: 28px !default; - -/* Break-point ---------------------------*/ -$--sm: 768px !default; -$--md: 992px !default; -$--lg: 1200px !default; -$--xl: 1920px !default; - -$--breakpoints: ( - 'xs' : (max-width: $--sm - 1), - 'sm' : (min-width: $--sm), - 'md' : (min-width: $--md), - 'lg' : (min-width: $--lg), - 'xl' : (min-width: $--xl) -); - -$--breakpoints-spec: ( - 'xs-only' : (max-width: $--sm - 1), - 'sm-and-up' : (min-width: $--sm), - 'sm-only': "(min-width: #{$--sm}) and (max-width: #{$--md - 1})", - 'sm-and-down': (max-width: $--md - 1), - 'md-and-up' : (min-width: $--md), - 'md-only': "(min-width: #{$--md}) and (max-width: #{$--lg - 1})", - 'md-and-down': (max-width: $--lg - 1), - 'lg-and-up' : (min-width: $--lg), - 'lg-only': "(min-width: #{$--lg}) and (max-width: #{$--xl - 1})", - 'lg-and-down': (max-width: $--xl - 1), - 'xl-only' : (min-width: $--xl), -); diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/default-header.jpg b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/default-header.jpg deleted file mode 100644 index 222d18daf17197a6cfe48c403c79532ef0e97337..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14882 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 diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/default.jpg b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/default.jpg deleted file mode 100644 index aa0237bb9afb81a6080db11e085fc90632084a9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20200 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%0DhU#n?ioy`d|OqI_>#0 diff --git a/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/login.png b/orange-demo-single-pg/orange-demo-single-pg-web/src/assets/img/login.png deleted file mode 100644 index 87130950f1e18b6c5fc4938ab356693fc847daba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728962 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 z 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Á_Jaf#O*Lgh3^=H*S`Lrt`)2ieuQ1ku9IWYsJJD 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%0DCDks3JEJGjr!X~}X3Hl6!4N&KDa5g@R2P@40 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

Wml6w{ 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�p0AVGf=jE9Gr=!U+Hmvl4Huh7U>=Ipe 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 UWGB8wvH$=807*qoM6N<$g8N{K-v9sr diff --git a/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg14.png b/orange-demo-single-pg/orange-demo-single-pg-service/application-webadmin/src/main/resources/images/jigsaw/original/bg14.png deleted file mode 100644 index e29e7a3c1b0b733e150df993877b3ca34d245b30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59228 zcmcG#cT`hfw=Nuzj`R)!p@&Wap$bAEp<^haNr%vT6;OI_Qk5>fgx;0j5fG(UkzS;V z2q=ht{N8rXci(f*c>lS3j3jF(b3XG~b3SXWot>3fq?R%X5hD=*03cCSQPKebu*C1$ zIRw~u&vyL4fV&q$cNHTq0Dze4uLl+&JC_~+AW(PEGxRpp)R4Aza}lz%akD}TJ#}%v zvjzYjK6>hIY3+pe23n!*99(7DPdj?pfetpZ>;_Ox5lweRw7r8$fG1ivKuga$z{y(5 zhW(Ko@ZnSGI{+87wu{x6K^M3c7?wJ0u42hKt(rC zG!QBzE@%xFg90U_guvpWVp389K!^xfQdmS%7%VCX7MB(ik%mBk|2Ww1qIufbO6w>g z{t@f$OqSi=+uL1QSlG|cPsmSH$j#GE7%U|vB`g9FhCl@GECjv$UA--z3c7l6{1ZV5 z?Pcxh;O_0<<_i1^(bCGz$6J>Dj_KdK;Nt!-SXZxqr0FhU!cQ&Tg~381e|71fhMJoH zyQz!IzpTBy;l6iK{=xTu1oqPNcSj5BpuOCDJgw1iU$m<|%%h@c2m5GaIldUg^Ejwi%3Zdia~5G z1<@j65J4#$30pz1wG~(b0)^N@Y$gB3>&{=v&D!U$Wc=m-cjel+S>Iv&E1}X-mX?-i zsF=8*6$BzCC@LyuC1`0SVkKw`v4Mz#(Y9g|qL6>0J@$0C8$6cI{~h%&RyKEtQr1#X zaS5oTAQ~)gBPfBsLzJ?$g$RnGr9`2YqE@1|5KDI8f5laFb9VF8bhEk3t|&Xu##-9e z&C|v5PC^bYmUd`icUQZ=1bv5o*9#Q~ue<8`|6_>gqCNi6a&`dzO?T3k)_=)emfiZV zI-_ma|M9lN|B$`^jOX8B{p`_qp#Mwp|8C~xX6x-|>4{dbyUX-{qA%h98-FiL-~XNc ze^&edx9tCsTx)wvS3C6G3@Xh2SAT^6nrr@E8sY!5YX4RBe=0}ePSbzY)axIafLYr8 zD<^Vb7z7T6!4$>8q7aCJf|!VesHlXbl$eOpT^k`T_V-xM4*%r=fl4Xe&9EYh3gVKI z2nZMkhlzNTNh!FJ6aofOkdhFGN{B1Mz+gp)gt!t^^xr+;Vv>q~ z8Nw9qSSZ{@6IW6ak%B2GDM>2b%@a!h?tu`M5J8CCb^2}!5rZfyDS;J46eXb&FcAeX zL_!Jr?;ij2#35-TDh`&E5EGP=u(lKggKeY)B}J{R1+Ao@Hlm_nQCksf^nZ$FjRu3o z!C)~#h>flF9TwVB(9%)@EoftDYik8XOIh7j^S@#JO>2LbjPU=it-o3Rw-xc9LcLpN z|7!kgeZM>T*A)WV^-k2Dck92{x%>_Q@VQM@NkQ*vuJ^4`laNs=b5zZa414#N_kP_H z=eD+JG>Pfl-C;U`paL%85Nby#eSsrH8PLyCz8Li=)Lr8T6pm`7eo+vkBnPF2Fap5d zSdlE4cBg}E&kvpFvgZ;?N5=u~SIi!bg}ND6pU+7sWG;QLTAnR-|7`nHdmZ1%z;?Xi#rRTn zbWfh@I+yr9VaEyq0YYUHo`>RuZf;$=A+3&p)M_^cU3OIRlm!H;uq_`VtiaIUW7|a! zdQM(79*UT;2n!WZ;tb*`vMI1*QU7^4ctO}wMd09;Ld~86OTj6O5#dVJAg6R(tJCF# z%O_@>Zwxt(Y{@GO!%7Sv!y<`V&iJUe+K0&ig2roXec0x3RJI1_NCAgDBqEuJD;a>) zR;Fm&CL`uT{Ssxg(qC^hJnA@81Pn#PKs0(xq(^JmaJ=}@aJ4fUDqIDOAOUVcEbb`f zjK2Jz`lvT6(2X#okfKs*CPi(u_I(UIo==Te+%m4nSg%E1ofjh?ilLp;iK|O<-15W` z$^WcuH4arPnr|r$b7Y<8nQF95Qlo&OTw~2aBy+gDk6qaTLjsMa^$tV7B8N2GaV2Lkv)6`h@ zujx~L*spZ&^n#LlLZMKfA}ck_C{n(%$SO1P+WeEI^+X(ukQNT6Lht4YP}_o90O?lx z2okk)5DY^isR*E{G@Q@O#k{cPJ0#e`1(45kHTipVKt2$lHi-8r<115Bec)DE&~+p< zh&N==J6kEezAr7OZ?fc z_K6!n*;}n1zJsaL%O{RT!ySHTy*|9=o=`I=W}{}nSC%Mgb=Cq{#Z`&iBhRz1aD)rU zTlW$1HNVVc4Hka|uc@*f(1(Y%w^G-<)~=Y&SRqUyYa)8fSaD6v`Ob>(fNbZnOVa^4 zAEY*rW>UMLY^x{)QFGsYP+XLE5bWbFb?9D%OQO`I+=;YV1&c2of((w zjg=DN>M9|8G@G1L$fnYlX9Lh1<0aCxeO{l|ci+8u8+`vhdgnc4%(gOM`LvS$(( zD3Eww605~%T%(RRdLg+)*|*{v+74kNs zvq0`k8a_id^lrc;abr{XaCDs*%aroiGg*q$V;Ou$=>Q-q-Adm;J%)Dhx%eXG%w7{` zE9Zvvpn#)1zB~=SB)SM&j~1gHlT%!#gJKJP^E+8!$VMEeTpoZT3b*6kcOnZhN+cXm zHWM=e!jowHTm?fIODo4T!iI$P;|gETP&bVU7~2=uqdfI*KqRh9KhlC zE*gOKuMn7N49a9~Z@NTOGI~WyL;o!%n$g;JPA)?0rdq{x!trr`oQ|UE^LB(dOId$6 zg`_h!znCk`m5RwOSIk7wRp zL%FIK2q5iGDkYkdo^jn4bB?MqP{;%7SygR)dYgE@LnsD?6cr3H5)H&p76nE2x`@88 z>IOoy#2H1RRuss@B|V~J8!q5%{Di!&8Vl3;)^eSGagFeqHGiyf{UR> zaWYyV@2~Njz2!lK`viNIV%irl0MI7T_Ix+2qQ3NfVUPQk!>|!mNl_+kag4^vgT=T? z6Y?ALTYqJ?x zLuM226-sNXoc~hxlT-@$B`&E})NV=`TNN&kq6i-0>QpP1eIe@e`iPe^x|82+zbS{2 zD?$kKKr@-oUYg-tq>nrTPH9XHL+2`i*K1yj)kH)~QC51h)t$30YNIQ&$EN&Z{U<#x zm6c(KD2)HY*GDFKU)I)@+%z9Oc*XG1%0Nt)Jwb#e0iq*`)zhwDD47Jb+pC`gS=&7Z!a~85h0VjG+EymPX&G%@F<|VfrW(7e$s%hF;K}F7uum?awKLYlfQA)vXa;;w?Y{X5Cv(HohD)q*va%R2MMEx-e|Yyg6=79Is%Uf#&Yb3G+Ww< zJbD~o#}Fu1E1MX$b6^B=@6fkYM;l+Ol_QQWV&OPFc=%#vNj8G0u_Bg=&v|~SrleaZ z2l=u7o=-9^msJI$+A+KIvb$hNbUi~F;&DylmCZJOj1@>p-XaF|3Mil2FYUdBTgFCP zBXnJ}_V#>O!gXiWhZpW2Qak=pNW@tub#u6%oflX-{5+$;aCx$Xlmgwlu3FDf0AQd| zu3#~r*^KIv-lAY)G?*W8K9crND!=xnPTd=MeO$`7#G3WTEMci!u7tzTXg$uTm95wJ@b^6HjRR ztR`eO#Rl(Jp&ADfDxGG2vk+0dAu#;2lH%9sM7d@4nV`N??3wh*;v%ICn%MXYZw&9+ zB*AMe8(wlel*g#mMdQ7hFR|+s+7R`$H}^Tl#^l$%I7z- z=|2@~H4J8h`$KU>;syz|#=HrT6wc3KCu@wmNWG7yoS#4mN zAPOc*E`CMvs&)*~qEx2GNg>~aXUSEl!cB?fidXhmLREll_t{$QhX(L%+Y4+$Da>Bs zO%?o{Es_Vb@GZfILKaW;xxcZqW8lO9wiaznK>)9O_2YUnpFjORs(j6F)Q~7z(3#@kzYJE|_Is^2xJQ&}T5RjNR{d&@ursZeFB3Vu!_k|51_S{iIqxJ7#DG z3(Gv@J+B|GGIK*)E*V=tadBDn3%ZCBY5yQ-Fk`7sDW0C@dVGQhItNx$#wJ96%~U+^ z7~Aq8JL;^W*$ZauHmMyghp#Ibgiet9Y>1!Z#v{YBX%Tso@@=}90&z7LmYdXuu%BxH z1HxE{YUOy~AvXQ#7Z%W)y*t2%AGvX}832aL$8lV^m_eLodZ$S0QSr>gJ+dFP5!v1xsV!W%=D1e2I- zn%Jv*hzmhP@v{t;y30_b#xLb7^*RFbk=4`zmEi={jC?QU(^Nt++(@SBO#!0$u`;3@ zHt)g|*Cb}yKFo{Id=!-E0fTeD@|Df6bVR1I@@?**^(qkc#mAo%e|$rDEVnm1+M~3+ zaFeZ_W6if3Y^Bp|2m+Hg5Is-E8(Hdg?J*Pd&bBd@dzv?eSrFH{S4@Rez*U`(b` zOxUQPMRLC|uECm}aVlHtBh|*xvtt?%!*uU9^@CxK4>*vChLKwF{?}V`1<&eogX>UOiupxUj9XDW&Kjmy zRy$Q`YIe-0qJ~IAp`550e?oT(3@y#mK1H4T zWu8MiEkc1qn{G%$zD)al{@w42(2hC_1+74>7ioIc1?SBwA71#fCaWYT#cX56PN@?q zd{yrYAG6k&)0RHj21T8XD{05aL{$W{1y%Nm@Us$p!&pxaqBwsI#>r+ zeIeGermp(q<{yI3risYVC?=iU9F2Dw!cGDj_P)100kiKp6hcoaYZd06NVDO+kHy_* zkfT{Y38!h@LwA&kC2OIwK=E01{wtuBs`xwt{;kR?#n&rD^txNBVzWBpiPzV-qw7U8Uj54vt zCebUKFzad08@5TI10Pu^c|G6I4=HoM;Ttx4*Efo{afI`P7a_@63c>dR+mcXXP=E>ooOHY}{AE?_ zxsa?I;$*^VJzQTO#rMTTjeT;=13x7+Oh3_OUtb%i$q1rbJ3wo{=<7_?fhVOH-+X-C zyjB~itDQJ$UjgEHZ_AlqB#vE!MUAUld~>6k?JD|i2fcQxR`}|DHdKrN4ycxGU34>} zTNfUjkq-D-L~Bi~GKo#=H5&j7KsBPu2W!S&-Ep!>%{8Iqo83i=&Wka;RHem{ zu7|U#WL5i>jMQ@_32HdjE)grOY9v8=Hh#|RhSl+9v{~=> zg?cg0XvY?#1JIsM&>^Vn%pT8|&Z&Dpd+%diwc-5Ua5Ie1=QvJ!6vm02B}Qo(r020^ zQF@lIOkfuW{e?`2iM77aQmnYoEhba}+@~-_B{Z3A-FRc17{d!{8XCJHbBV;2-&Zv< zX7C^h>nN`QA&UMY{qz2e1fl-j zXs=Qll<7fpbx(}ZMH;&*{r95;iyzS=TMDx~i_EG`*;>PvBg$1Ha$9;IF!zL1#$uOJ zSK4k3AI+@{5h%Nwm-CW?VJ)sp{VOksU)Z!S=Yf;Ie6Rh`G%R@Br@FTC^kw&bIB_PUy#lWVUrr4&hk8gIJfXlvLBUD#an$?$CnD;7$53T5 zJAATNW3C=G>8nc)%g*>1f`X#A^sbc!y?Kb9_DDyPtX21R6qKUoOs>3}p&)r^jDB{j z(@`nQl5f?vuPM^mgx-`06JJVk^v#@`|G_$P0g8Ftm5OmRuJ!;4KbNSE`eWA@7GvVL zNYqhlC?N9=74ZbRuJ!!Jw`GKa^z77$KDt-myq!LtuQQ;PsQgjw6PY$0DhFX&D*|G1 zv#HF6duH##@ZHE&jQ46GuGt?`=!qgmy^=RcyQ5SujL$J1nAuGqX_i-U%6*)mk7r{Q z+<~*>Z^FqGtP@Vcao1`MYw4lSe#s4rZomr#4uXg<^fWl>Z=cu9_s=b?mI6@0FN2!W zc3`$mjU9N@(t6uN1;)wCWvcJ*v71m@Y*ktIT3moXh&#XP=G#qt7$CCJ(KYDFwu(9Q z9gpvJdb^qu0!Ooz+AGD3WF(Hxw!i5Uv?dL&YRvRgb5y|M%*_u2l5!Jn#bM3m-kSh* z;>|V$xIQmqEmO}4=V+NO#-w8l8gDe3!IZJwYs495nbwWEM0t!l`;uu`E?Li(^UE{c zCfa#(w!Zh?bE9(WW~4}D`kc%76u7#p^!%PuNU(h`=uc)470TSYGI#f7CafdOWycDo zH(u12C(Wvt_Y6hzqTmM?O1(j_(>TsYsUn;yV?;Cb=Gy_-?sZ7!q2m(5Id`yC0OFL; zZ`!CW>o!=1p?QI!$*XStlaudF_|1rf3Al;<1l=nq`kg^@(>XL=S1tY%|2rLmm)*kU z85OvlWcXOmdVFt zwq9wCocoDQq+OsB7YB;t6Fk?c)|gQB^|-B`6$pvP;zbQeYK7oMT=QjZG40mxGIpgY z06L%e7k6x68{B#ul4@9EH*I%o#VF;M7F8C`syl-8wRC0{3AHxQIYh#fydlilus6# z$9Td^t-cjQk2bzU7qMYWgvI2Jg;TALt(ee?VZWA#a|)*uJtQ4AS|u(12(yu2l_Coh z`QllE!UY(53yzUR$laq_N_?U9`jJwcP_d4~GY~9<+ilQ+ry9rgB_=uAgT5|-(6Zhy z-p!juc~88oqC?F%m8pE)tU3kTAh4%wB*)d=JmQf(UB1B6$=8lc58sqo7Cg*2DLD51 z+{g2@uxsm8%7N7zxx~UpPh7zW1hcPEQ{xvEzO>!XS1C>kisB@cEBemrTM>s0iwZi% z0(Rr*jyC64_?jIHqt);k7-h~Nr?bq5mny_+;rgl0wl2y`0o3o|D>Y?sCT@scRx+WY z&l34!DrQvtKtqA|k_*wPH0X4)TAQgqYxX3OkgJO?CFaLY1p2Lrh)M5a&{ueh)jRW$ zijQyFKWAtEWTGl08wsEUzyxgTac6t9XMTX0YM~pak=vF0*v~#Ga4W-S8YY!xwG{b> z-S63KtXvlc7|(xUWTpv|AzAzwbsBfT_44A%( zVxWW8P3}T6ZIotm4c=hCnrvRj7AN16(>)B!)JAOKot`MXtS}U={pk3@*}QhUBBE+o z`q8XmH5>w2}|`P8w+6hk@|R~4UHA?F8L_OkLJr$vT#rL2jL@Y|oi%_LsG z^3AZBDo`Z{M6zp)wJOLcc0|0_F6gpqOM{TJ#8WwvCg#!_#_ixxG#O8@@x?5EGeTQ_ z7i_rZgxr|n#1%d5AN1o9!9*V0mOv36eZ@ab!R5Lm1(-Q{WBQgTpAg-zyy8EKA`s{( zn(2ZF#VR&&w(pm|a8tyy20rGhYlCf!g=q#C4A(W~UK_@1UGc@_EA=JOJ@0zj5@B0gUZ>oxt3r7L;X03iFVI}yML;gaRVQ}^fus@#y zxog()F$6ZKcr~#8f|Dc?m_0l;JCdcLX?#*gdb!di`-L`H9|%`JlMZ0Zj+kYem=wyi zmDi2(k?N5Q_6_iOOB(3*KJ0@9*!0A6pvLyS_3e!AdAD5^EINZ0mt4kiS?e)BtWt*) z2ttbapt!a1=D#8`35zorwck39C{n?~6qlI$jw}bUdPO)o+TZ->jjbI)`Xsz)gnTBf}@QU5>= z4o!L}Q%*$-D>!?$JF66~me}`3hmW1zJZ#4XNZ_79OJ?^|&^dO3h9bf-(PMf&1jE^y z^U1tMx6wsF6Dv7TT=ck&90(05iL#*{a5&j*D&E@ZQ;;xc_rdYyx*F85DN6;GaF#`B zj=d73dHv^pHYM2DX73nKw<@m1fS)mA3pEuK; z*4f&|nz1isz*Wm^O@thlv5;6D2jlQ$dUGRIKt zt2@`6gNgbTMx|DPztW zH}M1M(l0G@{G1K|UqH-CpppTu3v|ykW_0mn25M~e${*eAz;GF z6B-AUB9&nYJvTunH}cX|efoj70t#^x_MuJq{<(vvFk$X{Hm=tZB-CqWZ@U%(4en~x z)$_>TS0#_4e^j-?^wR2}JRx3;?}5=NYGExe^E#xj_`vS)yn}Z5L1dV4kl%ZpW4C6Kf*JrmZdeRKGK(``Tof^N|Z?&c0a(5&WIvIj$&A19FbfN zOJ_4Po>fMV0>lCjf7hh>^Pv|{zSRm3RW_Ioz2#TtWn#Lu~DR@++U-+f>V&UwXW z5CbfRQUG8>B3uOF3^enD4SNz3o#}A?7oVln1SiRm1xLt$52Pu9Dn-fDu8)O3er&7i z`kA*9Kj)E(*1c}Id}7ZX>72z_LYlhxeo@?c&v|dz+lE8KqH3UE&+c*X?dX>si@seE zXvGxklLV`d4wwiQYjxHMZ{BQ7*^6-|Poo{hs>rq#RM*ba+rRR6^0odTb4z)roQlnR zbbgfhAXcV^wYtE{+UtqB+k`P!jai3AgdochYhc`AahwBaq=LzZ6nqPn+i*9fan4mX z$9a4>@LFy^o+>uSm-88B>|9wCW4U+mX4t>OKV$Tk;g4ubo|aeF){hz{Ik=C6{Cva> zU4Alv(j6K@`m`!=O5oyiF}``=Ro{woz^4Lj)kJ&V=WgP`&TNEAd2xj1oSnBGf_OW1 zboOT^NqnK(Vk`J=0=?PgsscHFru5bTapEb*`vC8$jlNeWB?z^idyTt!q))O~bwpK= zAXSM4frp=RPMO;p55`W6qd#w{=u6e6lh;u$%WGd2=a{fVj zu(1S~Wn>{bivf8QV0S5ky}g^&GUV`^zfKnLfp+jD>l;T8XjhYwmqC? z+ucU_uXaZr{%o8dJ~q4T=yPaMwO#ex`UtQQyyWHyau|FZSLLaxpdsj1U5c;#jAd4n zkeCLk02TMae|2?BDNeji0e#=T<*G^`}xy3AI&CR4L-uYnaFbl3MTH0+c<(^ zr+XJlBX!zV#`lCJI_|eNq&80lG|u3gDh(a<6cxt~&O17t+A6rv$x18)LE9#chm-9y zVFmg%PVa(Myu5T-a6pvUC5+|N1s{CL`FdIs+`uK>)9^f^4kj8W6a96{N8fA%cb5nI zB4%uPx6_N4i+4YDwLxH1id+tpA23qY)D)Ia2`Vu1Fwf3L)rZs%e zH&xtq)=`B5BN@`j)$ieRBt~Pa3L?FDWhu#c#;kO<_PIaRe(gP$3n{!H7G?DF_*^2{^X_xpUu$l7R|-0$z#3#@s;zn*zD@UG-P z7s3IRg^TYNX?fT1*Rf6`a9zN`v*x#jb?HOo%d}aUDnz7&Urz0jtB(l6Oq9hp+ z-SVCkg>R3=I064AJz>Y?hKy@@mSlz%A(lM+2Fk?-RY`Orp((io+ZWP05RA^iF0 zff`2@EvJNybd4wCK+keZVMR7<)2iQ5+wC7IGM*3-*UT=P1Sd_tP-C0p)`kmW!bWwY zKa(qvvp=*`WIm?h)r_m981{gZu&);eKLstN-q&@He|kheMg**Mm$Tdy@_>#?`rkLC z&5?V~I1_cyFv5)F_#w3D%2-|XmM@O7RKV_weGhY#XTX%*SRmQ*+SATI8{@~X|7;%Z z)pfYl=1A!3X6t9;J+FfIA)YX_%S}wbvVC?Kv0!jKhcM42>j~(8Z2oels<7atc_OiP zT)@Nk@qt!HUz-!2BRW}OLy6bXPrj%|ef&P4vjvm)LY(yJE9mqN&f0$tQTAzxop5d` zMfxqZKIw?Vwqa*_l%|N23Un}jh7)tyaWPJ3@Jhx~*Xp((C|ZQRh`~++Eub5I=aEX( z-tD0fuE?Rvw+hTicil-C{z>bF8XV>#DR!1{KJX93t*C5tcN1_0ni+VAuIp$|w1~a) zdTL;f)EZWcXo%pbk?f!QsL#w2ZV=4emm7$SPuNhi4byhB=6)RRblozWZqPqRTyg>JE)9Wu3jS9$1NhOu#?5nGqnO74E&w=XQNjIXyDrM_rTYb< zLOHJf$dlEXx**jLLeq6}%)d8pS7#Rd@8?xyThd?URi3tIeNA%b58Kf|Fh_l0DSbmU z*+nGU4lgv)_Eb&y{R&p*|3w1nG{#8|i4|aS)K>0ROVwy`CJQ@uS1q_`0wv?LPKK>s zZ|)o(16y;%ydl$x7QSlArOZKif&w32skO#*#=W#^_(I897*evx;8R#(8ClI&nr$QWho4Q ze`VYnH|zAMpvxfC23iQoSVhdX0XA)!PRNau9CP(?n}u>Qd~i*~yTb_)ryoBGo}at> zOdd2D7<_!ar+g~+Yj@%5bC)^DXe9~zSkxOpmD%Flz>990ns(~`fE){(NT__kdU(2e z(0%55W%sD-_vgoL1}oE?Pg4r=imZ6gGyMdK2=z;e0*+rJ0;Fdx+AD-S*}5(fg<6m4 z!HxXc(nqxg;ZnZoANnSp4B`;_gIX#V6mh+c8W>O(NJVhTQD|UiX{oAe6pIQKww|9J zck@XN`&_F-OP50`yr?OwBt4?!A{8s7gzqrVtj@!K=wi6q(}mm3X6n0A9KH#RB)34+ zle{$6LlOtY;J#P}O8gNU?yj_ktrb@5&=odb(T9p`)wbfeGNKze)ZEm(iN2bf=Q~OR z`u@_p+x?**d6jL6Q@=V#%)Ik7nlQwF0H?`Yhuh5UVBnfq>9GD&A4!%_D@$~aOoqy(*5_HWbcl*rm z@Q0D#;fJHAc=nck$%RJaz0-<}DYf?Vmhq7N6P;+{`i#qviE1&Dk}Tono}VjKHzN~Q zL7l(9qk5Jy(i2wrO!)_LGhZ5C!@HzWGzU3&C^28hUi!l24^{8L%O?K!1Ox@%;@ftA zrWR-JO${v5uZdQD!x;+XYGtJ~Mh4tZY$Zu4Ec-62%g%%Xo{E>-87w@Pw4DoksvH0XAG;}z@PY60vJAFi>W zrvP2GJtO@?@P`FsueJ>n(}-d6$K)}rKX{0p8%Ig~f;hhD} zw$CgMu?{x&wtQRfObYvm7$pY_TxIOk5?3wb$vvulL`WqAR($J^01e4jhAmjB41F5# zqY_GaC+`QgH$3q^drgkH=<24p5&y;4E?6jx+vfud()uyQ%TEbqDZ&@$4?8pXse4E2 z#`eksPL)pA%msJ9ZSMH@2s%8EoMm%+|1&Z<5+n0nb~*tjgNbm!a?r*T?7EcMC7s?b z6x6)hX!WtEfNAqxunS!`~865wL<3}+DOvg-nUZY|A^GdX^xSSt3lSFl=Ht~zGG z@uiq|G!BZfOv_97_>=J^FM|?8A0sLSfO)Bd$AGumSka#yT3S+C`aNB}>y2daWxxV| zWX6$^rIL2Yw5r*Azb2zEw*GJ5`>jcubo(pssZaF!R&@x{c?rGbU9_}^j!u7Y|u6#R*OPC3k7ApvngsT zWdiE zb}ZzuY9fv2btK1|g}*CvJN2|bQ(Do6YA z#nW_jHSE1zD4Mwq$z9qXjXhFKId|=?m5{P((8Ldc>G3Qvz5(RKJ~sD1ogaK@z;NFu zo(kC#XJt}qH3bS2N~I9U!f=`{Fpp!j{M)ypY*TgN`CrSm!$x{R{3SsfBUcX@o)Fz; zeHw1=7p3#gj#R-G`N~^OnVXzl<7Z5+nEheA$AuFj?Wh|*6f3y3orR>jD%OnoQQ+j+ z#ab1V)b70Z$Mn>5>~JN%YKQVD;=N^D{4N&SVw6SwC0@w!IW}_jv+?qMZiqtsvF5}8 zY3$WWZTI!A=i=q-o=+J?qX8TJ@u@XeF^7B)OHB&zQ2@oFOZ4khOl_4nK0&X))};Bm z)he35)>rSVPx;A`vgEywzgjbZjB;Q8!v&AdN`P1ZqRjkcj+G81(ZJ>PzcWiP2>AMb3AGzEvfxU9)Z11Ph$LuWc-)k!HX5&xX z^Tfk7^?Me4dAV}TboFLseU4W^ETaZQ!_q5;N71MCqN1d(+pnn4%IRB}&z~M;)Mh2g z!$TXrmO64I*Ly`L#(w(SCi0|NYOF1@v-1T#VPySSmHz7Rtd?Y}{Bzqk7+DC`et%Uv!JGB?f3DUK;r^y>_IVFKNBd!kJbo?Y`Dbcycvx?S1tN)$^ssp$LDcT~F)f z0?!Ry)tqnZgX}EiQNl-TYC+@Hl}@w0WBr!L=l;@fCTwkQWC=qUa1z3sNwV=Yl1oUW z(&ko&23Eezr5zs<%XAR=vb3|(73QXzf@qxAoABh*^4vAn^uR;5Zt0e}d%|UxyAJX>6sg0~;ZG5MLNAq%iAVSYu1# zh#H%w8DTQl-f`0Ek<41R&tAn1&sy-sMq0OnV^puDVLT=;tjuvv@jG7SEBB-$;S#4^?id#~@@?*33i$gbWtPk;Y)1>QOrKc{HTiT4ZE z)}G(bs;H*TF%J!v8U{jB7!Rj`g^m<17aWfjS+F65PbH>2o-p!SH?&k`RpsCZ+d#$)4A*s(c(AXmh7=$1G*Wn)I*L!^5_DCX zu!#A9d{owB&Luu+z22Q-gdAK~Sm#p-7?b;O;5>vfN;Bn3rhXDK%fva^lK(m8;hbAb zzVZH5ZkjC|J6k21CNf#jXVNoqgUDG-FjHEEm~xq4#bFlnas0zClqSi{`>S{ISW`vM zIbQSx90q&Y{r>o8F8axY;vof6A_RXu|un@Q2m`M1)FTGJzg$`4d3 zp)g(RNc4lQ=#*zaAq&uH7)s=4HXpTr+x)l>OCynwn?C8Q9RH3e*NCq7@b;H;LwvSP z5l5eV(Z7iN4S%AQxMQ3 z%yg=d#T5I7&o#yXgRl4eyG6OC+AOZSnjppWz5R+8#zRXS5F)rN%W!1CeX5ZQd*!e< z?08U?z-E2*b=EA-{KV8~Imz2gooz-R5@{wExX7*-PpR=t3mGHat}kfKqQ9EV?ImpF zFbXdxR8b>OIU+26wn8^=S^8GjTHCUj*1##IZ1|P{Naq}w9wdLFFrCz_S8Rjrs{w#V zCz3jmJ}F_)!OsFifzZ?5{@EgL$R-~*%rtU8Y^@rvEP zXo?$Sq802Bi}?N~Mr5$PHDem1Oh++ghk|hHry8G^Z5n!-1!vthIWlnLdMqZjs)5@3 zOxq;rDBDr7dxWc4^6b+Z(;Dhzf?QYZ%-MK);$ceiW}k(rv+bNsHaLW zW?>8@=W!Y1UqGT}$`kJ(Z&LZFB_Fz;$eNVQQBH+?lCUSpN@Z=cFe8+eIl6z}y2J$Q zu!V6XUZ>^$$}^w5$_|;pj)5+p17FPDe3gTDEYKfDX#8m)9S@n_=c4SGGX%R#nwluY zZvD!3b6)AHilr3IjP&keW0dM#wLky%>!)p78Xj!fm3ajurrM6P#R1T~yO`LHTAvRI zR~E>XaKwqo&6p>{vjTPxsQxP2)Z}8Zo)j*j?B?Ztw@+X=$C98H5&Ot9P5t+ipxKWS zfPV6XDZya>?`#-FV_v$6mve9YZB_-`U7={R;MdCxh^>(x?GL5bYG9`z%V&Ah1UZ}=XSM+IE07`GC;UJN z*Gl+3iuWt{etQmGH$O&eg%WW+t>ODWGc73P9+jlq@mm zOGx7?sju(T928h4-MkmE$6DE#KzePx0L}u`LL;~Ep<$f5$a z_-3&9_Dh$F=i)mLNY2ezXXxx8Rr!)k6C@lqK+bHuCZl_T#+!gW)#U7T-`-@ZNnsy} zEucdI!C*q-WKq6R0@sW^Um)M+W6$7S{Rj6?6RZGuCR# z@Z6*AU&JDa1uyB2jqRn8x&+X}BxB_wx##24opKaG-|~ab4vS0aUpG2d|52n*Hk!!| zeI6rK$C35S$ExNiO_M+P>*?>jy5~Djs<@_ljg{$~7Q z@1viVTC?^L~kstb|~isEg37TFVD!Ab$S7{XO!6!sJI&K1bNjOxjmARhns}gap%Xo$-cIET^%(ccE!5eB+c=q zgs;g_CAg(tOUm<><#Y?k_a|$vOt*c1z8~FwL{WJuB#G*4$c+z1if*QKf6I7+a>thX z9%Z4);{MEsPnu1(kPPVfIr;0YyTX}<}@w*QKc@sw7Jx?DJZ@r^rT18%m0luR&tr$v<`4aaGiK z9AZPj6^Z^X28RbhcnhAQVzCW@y1(vI>5q>eJlI@*`0810mI2ppg1FrAmoJ-s zNQ0KIG9PoxWdoVHSsK6MVNnvKXhXD#r66}0GP1f7+LMjpBny@{w4Rq_p%${eck~DU z?t`ZwV&;~t6i7kGiSdg01+)^G{_^Im?adH z97fs3V0X(Q5`+$#H#%Ht*;#(W)kqSQTC$R0G7=~B_z>AZi}oAnfRsq9D9ox!0M$$p z&JVcQLrRndrS&+lxj5E&L}s5!hygV1Dj}mNV;8g zR3g_Gy4;$PiK0Xe?g}8v?}F~e!`P43uZ=S>I=BSjduixNt4MEIG9kFc7>@AUI~8=9 z(dZ|ufrR5TQK?8xdh^j+5AQr^npR8BIrrNwkoRWo>x zmWX`8=OxxFJbPmx5AUYOkM~!%kJ7;*SNlwJ?KiqxBX;G3pd0}V#K-ncw%x}f&vC?`_;ZEHkK8$4@Mws%*KeS8%6@wO5VsNizz}0 zqU3Il+f|(^^aSN?yb_V9Dd5&od0Sb(sB2&xBo|2b z%t*L_gYu)(l53$*x34iLWoG8g`z;H`CdZ`^fJ7%|M%`XT7O^Aj?uID;zb#o!>%cnoT`t`?DX?&kubCV3nO^}3ThXG&>X4i7sk*f zo`h+8#*-%9SguGtPbmrUvQ+Qm~{ z7uFRWS-1_afS;WeRhcJ#qsyzdN9vGje1-76i15CfVljR}LLdWe@72`85SBL{XV@W1 z5^kUT&hJ0`;M4b?pO=&(Ay@2xS!f)6okZ{7?rz_mH~T9tmh2X)jq$Tl93&3eP$d&p z?F`2euaLZ|R=qq3s;XPfYn0x%dRK8PVmtDR39%Mx0h5+2NrbK1uJ_b3bwE}v<_c=r z*@%QG-F}>o?wEdB9~QM!QH-}1)!{-n=lc5U^3(G_{b5P%YF6}W>wQ(k2$ppYAK}F+ zp$KS$U?0<;`bkXQ9LvRZ63KMsu9Y+u9ULoMK57ZuzYX3dtk!h{(P?dzd_su9NwQ{8 zy-BAZ)S^{seEllFHryBY@FYS`ap?d&A{^tWimIkUNRwFm1vO=+yX3t+CG6A z4;sf%gv7XDTR%7TA}8a-2#BXbRr8|;LheKP#H(vTRL$2r0%x_7CL2gZb)cPgW~gE+MlK2nZ*u#Ro&7qJWK- z+IFwbEqvm94t83uRX0i*i%SsbqeUe#CP$0tuw&D)oq^Dt0W!73pgM>a1yr+UYpGjg zc_*FRhc$2jVYLcOs+pwrS+7rZyIcS8quuFMzH{_@|Ngt4u~;BcFUn(2CVM`WO?XH%O2wW-dAmhU%Z^P)l3e|X3dQ;h}t!bo(oGP|J47y% z<6scbUkj6oI(*MaDU{B-oYs)z#u)!&He24k^TyT1nGUB$6>1)K!RygniP5wB>nn4MJ%SS3S> z`KORtR?Dyb_Whsz{OtWFeTr^81st>_1)y!C_wLPa-CCvn6_+b^OSNJE?=Bs{SdF