zhuguifei
2025-04-28 442928123f63ee497d766f9a7a14f0a6ee067e25
从http://zhuguifei@192.168.19.200:1111/r/lb-boot-master.git迁移

原仓库最后提交:2024-09-05 49db69
已添加3,287个文件
1185595 ■■■■■ 文件已修改
lb-boot/.gitattributes 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/.gitignore 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/LICENSE 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/README.md 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/20220506数据库备份/lb-boot.sql 14899 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/20220506数据库备份/nacos.sql 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/Dockerfile 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/jeecgboot-mysql-5.7.sql 7697 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/jeecgboot-oracle11g.sql 113327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/jeecgboot-sqlserver2017.sql 126999 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/lb-boot.sql 9176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/tables_nacos.sql 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/tables_xxl_job.sql 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/增量SQL/2.4.6升级到3.0增量脚本sql 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/db/增量SQL/版本升级说明.txt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/docker-compose-server.yml 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/docker-compose.yml 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/pro/tp_project.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/aweekly.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/complexFillWithTable.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/depart_users_weekly.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/summaryWeekly.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/weekly.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/weekly2.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/export-template/weekly/weeklyEva.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/bpm/api/IBpmBaseExtAPI.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/bpm/api/factory/BpmBaseExtAPIFallbackFactory.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/bpm/api/fallback/BpmBaseExtAPIFallback.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/online/api/IOnlineBaseExtAPI.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/online/api/factory/OnlineBaseExtAPIFallbackFactory.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/online/api/fallback/OnlineBaseExtAPIFallback.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java 514 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysBaseAPIFallbackFactory.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/config/FeignConfig.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/pom.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/bpm/api/IBpmBaseExtAPI.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/online/api/IOnlineBaseExtAPI.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java 335 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-api/pom.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/pom.xml 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileUploadDTO.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/OnlineAuthDTO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusMessageDTO.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusTemplateMessageDTO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/CustomMessage.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateDTO.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateMessageDTO.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/DictAspect.java 390 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/UrlMatchEnum.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/AutoLog.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/Dict.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/OnlineAuth.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/PermissionData.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java 363 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonSendStatus.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/DataBaseConstant.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VXESocketConst.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/ModuleType.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/doc/vo/DeptPathPermissionVo.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/doc/vo/PathPermissionVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/JeecgElasticsearchTemplate.java 538 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/QueryStringBuilder.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBoot401Exception.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootException.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/handler/IFillRuleHandler.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/JeecgService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/impl/JeecgServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/MatchTypeEnum.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryCondition.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java 1114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryRuleEnum.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/ComboModel.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModel.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModelMany.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictQuery.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DynamicDataSourceModel.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/RoleVO.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysCategoryModel.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysDepartModel.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysPermissionDataRuleModel.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysUserCacheInfo.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/UserVO.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserType.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DataUtil.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java 1318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsEnum.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsHelper.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FillRuleUtil.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HTMLUtils.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HolidayUtils.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IPUtils.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ImportExcelUtil.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MD5Util.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MinioUtil.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MyClassLoader.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PasswordUtil.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PathMatcherUtil.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PmsUtil.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ReflectHelper.java 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestDesformUtil.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestUtil.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SysAnnmentTypeEnum.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/UUIDGenerator.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/YouBianCodeUtil.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DataSourceCachePool.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java 336 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/FreemarkerParseFactory.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/EncryptedString.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/FileTypeFilter.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/StrAttackFilter.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java 668 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/SecurityTools.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/MyKeyPair.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityReq.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityResp.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignReq.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignResp.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/ObjectParseUtil.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/QueryRuleEnum.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/QueryRuleVo.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiConfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/CorsFilterCondition.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeeccgBaseConfig.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgCloudCondition.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/RestTemplateConfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/StaticConfig.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebSocketConfig.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/JeecgTenantParser.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisInterceptor.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/TenantContext.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/MinioConfig.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/OssConfiguration.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/JwtToken.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/SignUtil.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/thirdapp/ThirdAppConfig.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/thirdapp/ThirdAppTypeConfig.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/thirdapp/ThirdAppTypeItemVo.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/BaseCommonMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/BaseCommonService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/resources/static/pca.json 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/pom.xml 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/annotation/RabbitComponent.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/base/BaseMap.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/config/CommonConfig.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/config/mqtoken/TransmitUserTokenFilter.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/config/mqtoken/UserTokenContext.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/constant/CacheConstant.java 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/constant/GlobalConstants.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/client/JeecgRedisClient.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/config/RedisConfig.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/listener/JeecgRedisListerer.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/receiver/RedisReceiver.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/writer/JeecgRedisCacheWriter.java 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/RedisUtil.java 618 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/SpringContextHolder.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/StringUtils.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-base/pom.xml 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-db/Dockerfile 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-db/lb-boot.sql 14818 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-db/lb-doc.sql 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-db/nacos.sql 313 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/pom.xml 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/Constant.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActBusiness.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActNode.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActZprocess.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActivitiConstant.java 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/Assignee.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/BaseAuditStatisticsEntity.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/BaseTaskEntity.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/Department.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/FlowCondition.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/Role.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/ActDoAndApplyVo.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/BaseVO.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/DeleteBatchVO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/HistoricProcessInsVo.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/HistoricTaskVo.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/ProcessInsVo.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/ProcessNodeVo.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/TaskVo.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/config/ActivitiConfig.java 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/config/CustomProcessDiagramCanvas.java 1338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/config/CustomProcessDiagramGenerator.java 1055 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/exception/CustomException.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/exception/ExceptionCode.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/utils/DictEnum.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/utils/DictModelConstant.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/utils/StringUtils.java 417 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActBusinessController.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActProcessInsController.java 263 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActTaskController.java 619 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActivitiModelController.java 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActivitiProcessController.java 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ReModelController.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ReProcdefController.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ServiceController.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/manage/CustomGroupEntityManager.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/manage/CustomUserEntityManager.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActBusinessMapper.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActNodeMapper.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActZprocessMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ReModelMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ReProcdefMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActBusinessMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActNodeMapper.xml 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActZprocessMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ReModelMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ReProcdefMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/model/converter/ActivitiConverter.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/model/entity/ReModelEntity.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/model/entity/ReProcdefEntity.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActBusinessService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActNodeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActZprocessService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/ReModelService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/ReProcdefService.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ActBusinessServiceImpl.java 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ActNodeServiceImpl.java 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ActZprocessServiceImpl.java 481 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ReModelServiceImpl.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ReProcdefServiceImpl.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/controller/ApplyLeaveController.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/entity/ApplyLeave.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/ContactResultListener.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/CustomEventListener.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/ProblemResultListener.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/ProcessResultListener.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/ApplyLeaveMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/ApplyProcessMapper.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/xml/mysql/ApplyLeaveMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/xml/mysql/ApplyProcessMapper.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/xml/oracle/ApplyProcessMapper.xml 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/ApplyProcessService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/IApplyLeaveService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/impl/ApplyLeaveServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/impl/ApplyProcessServiceImpl.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/controller/ApplyFormController.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/entity/ApplyForm.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/mapper/ApplyFormMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/mapper/xml/ApplyFormMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/service/IApplyFormService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/service/impl/ApplyFormServiceImpl.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/controller/ApprovalController.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/controller/ApprovalTaskController.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/dto/ApprovalOpinionDTO.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/dto/CurrTaskNodeInfoDTO.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/dto/DynamicFormConf.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/ApprovalOpinionVO.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/ApprovalTaskQueryVo.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/ApprovalVO.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/HistoryTaskVO.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/TaskCountDataVO.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/TaskVO.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/ApprovalService.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/ApprovalTaskService.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/impl/ApprovalServiceImpl.java 766 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/impl/ApprovalTaskServiceImpl.java 708 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/system/controller/SystemController.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/processes/会议室预约申请bak20200914.bpmn20.xml 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/processes/投稿bak20200915.bpmn20.xml 1080 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/processes/报修bak20200914.bpmn20.xml 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/processes/物品领用bak20200914.bpmn20.xml 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/processes/财务预算bak20200914.bpmn20.xml 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/processes/采购验收bak20200914.bpmn20.xml 803 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-activiti/src/main/resources/static/stencilset.json 2677 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/JeecgDemoCloudApplication.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/provider/JcloudDemoProvider.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/service/JcloudDemoService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/service/impl/JcloudDemoServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/area.json 13551 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/area_mini.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/area_options.json 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_0.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_1.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_2.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_3.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_31.json 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/getCntrNoCountInfo.json 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/getTubiao.json 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/graphreport_chart.json 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/permission.json 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/permission_no_page.json 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/role.json 608 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/service.json 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/sysdatalog.json 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/task_process.json 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/user.json 2388 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/user_info.json 407 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/userinfo.json 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_activity.json 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_projects.json 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_radar.json 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_teams.json 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java 408 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/entity/MockEntity.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/json/ddjh.json 155907 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/json/ddjh_s8.json 1550 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/json/dlglong.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VXESocket.java 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/BigScreenTemplatController.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderTabMainController.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderCustomer.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderMain.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderTicket.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JoaDemo.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgDemoMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderCustomerMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderMainMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderTicketMapper.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JoaDemoMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgDemoMapper.xml 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgOrderCustomerMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgOrderMainMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgOrderTicketMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JoaDemoMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgDemoService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderCustomerService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderMainService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderTicketService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJoaDemoService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgDemoServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderCustomerServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderMainServiceImpl.java 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderTicketServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JoaDemoServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/vo/JeecgOrderMainPage.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/xxljob/TestJobHandler.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/controller/DlMockController.java 407 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/entity/MockEntity.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/json/ddjh.json 155907 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/json/ddjh_s8.json 1550 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/json/dlglong.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/easyui.css 3360 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/jquery-ui.css 1225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/main_design1.css 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/room.css 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_comm.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_comm1.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_down.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_down1.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/index.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/index1.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/screenbg_design1.jpg 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/war_room_main.jpg 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/big_design1.js 836 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/china.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/echarts-wordcloud.js 16548 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/echarts.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/geoCoord.js 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/jquery.easyui.min.js 14780 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/jquery.min.js 5759 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/resize.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/room.js 1268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/css/style.css 1524 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/arrow.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/bg_img03.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/bg_img04.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/border_bg01.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/box_title.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/chart_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/chart_icon_on.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/close.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/close_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/data_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/data_icon_on.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/fangda.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/index_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/jian.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/line-blue.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/line_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/line_img.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/menu_btn.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/menu_on.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/next.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/people_iocn.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/plus.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/popUP_bg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/prev.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/select_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/select_icon_on.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/selsct_time.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/settings_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/settings_icon_on.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/teacher_icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/title_bg01.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/title_border.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/title_line.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/weather_img01.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雨转大雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雪转大雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/冻雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/多云.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大暴雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大暴雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雨转暴雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雪转暴雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雨转中雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雪转中雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/强沙尘暴.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/扬沙.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/晴.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/暴雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/暴雨转大暴雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/暴雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/沙尘暴.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/浮尘.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/特大暴雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/阴.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/阵雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/阵雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雨加雪.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雷阵雨.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雷阵雨加冰雹.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雾.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/霾.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/base.js 1897 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/china.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/echarts.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/jquery-3.3.1.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/extend/layer.ext.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/laydate.js 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/need/laydate.css 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/danlan/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/danlan/laydate.css 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/default/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/default/laydate.css 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layer.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layim/layim.css 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layim/layim.js 630 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layim/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/icon-ext.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/icon_ext.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/loading-0.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/loading-1.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/loading-2.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/textbg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_ico0.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading0.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading1.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading2.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading3.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_title0.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/layer.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/layer.ext.css 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/moon/default.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/moon/style.css 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/pop_base.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/rem.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/templates/bigscreen/template1/index.ftl 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-demo/src/main/resources/templates/bigscreen/template2/index.ftl 677 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/initDB.txt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/api/JeecgHelloApi.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/api/fallback/JeecgHelloFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/entity/DeskFile.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/entity/JeecgHelloEntity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/vo/DeskFileTree.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/vo/JeecgHelloPage.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/controller/DeskFileController.java 466 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/controller/JeecgHelloController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/mapper/DeskFileMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/mapper/JeecgHelloMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/mapper/xml/DeskFileMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/IDeskFileService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/IJeecgHelloService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/impl/DeskFileServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/impl/JeecgHelloServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/src/main/java/org/jeecg/JeecgDeskCloudApplication.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/src/main/resources/bootstrap.yml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-desk/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/Dockerfile 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/doc/布署手册.docx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/doc/文控管理系统概要设计说明书.docx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/doc/文控系统操作手册.docx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/doc/需求.md 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/pom.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/JeecgSystemClient.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/LbDocApi.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/fallback/JeecgSystemClientFallback.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/fallback/LbDocFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/constant/Constant.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/constant/FileType.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchDeleteFileDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchDeleteRecoveryFileDTO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchDownloadFileDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchMoveFileDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/CopyFileDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/CreateOfficeFileDTO.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DeleteFileDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DeleteRecoveryFileDTO.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DocTreeDTO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DownloadFileDTO.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/EditOfficeFileDTO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/MoveFileDTO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/PreviewDTO.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/PreviewOfficeFileDTO.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/RenameFileDTO.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/RestoreFileDTO.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/UnzipFileDTO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/UpdateFileDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/UploadFileDTO.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DeptPathPermission.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DocFile.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DocFilePath.java 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DocOperationHis.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/Favorite.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/FileModel.java 230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/Image.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/LbDocEntity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/PathPermission.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/Range.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/RecoveryFile.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/UploadTask.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/UploadTaskDetail.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/UserStorageFlow.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/enums/ResultCodeEnum.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/enums/UploadFileStatusEnum.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/CopyException.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/NotLoginException.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/QiwenException.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/UFOPException.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/WriteException.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/CharsetUtils.java 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/ConfigManager.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/DocumentManager.java 414 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/FileUtility.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/MD5.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/MimeUtils.java 506 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/UFOPUtils.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/CompareFileVo.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/CopyFile.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/DeleteFile.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/DocTree.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/DownloadFile.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/FileDetailVO.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/ImageOperation.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/LbDocPage.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/PathPermissionVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/Previewer.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/QiwenFile.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/RecoveryFileListVo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/ThumbImage.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/UploadFile.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/UploadFileResult.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/UploadFileVo.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/VideoOperation.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/WriteFile.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/pom.xml 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/AsyncTaskComp.java 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Copier.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DeleteException.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Deleter.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DocFileDealComp.java 429 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DocOperationHisComp.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DownloadException.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Downloader.java 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/ExtractCallback.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/FileConstant.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/FileOperation.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageCopier.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageDeleter.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageDownloader.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStoragePreviewer.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageUploader.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageWriter.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/PathFileUtil.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/PathPermissionComp.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/QiwenMultipartFile.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/RedisLock.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/UfopConfig.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/UploadException.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Uploader.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Writer.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DeptPathPermissionController.java 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DocFileController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DocFilePathController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DocOperationHisController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/FavoriteController.java 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/FileTransferController.java 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/LbDocController.java 966 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/OfficeController.java 300 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/PathPermissionController.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/RecoveryFileController.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/UserStorageFlowController.java 247 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/handler/JobHandler.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DeptPathPermissionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DocFileMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DocFilePathMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DocOperationHisMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/FavoriteMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/ImageMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/LbDocMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/PathPermissionMapper.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/RecoveryFileMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/UploadTaskDetailMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/UploadTaskMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/UserStorageFlowMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DeptPathPermissionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DocFileMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DocFilePathMapper.xml 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DocOperationHisMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/FavoriteMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/PathPermissionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/RecoveryFileMapper.xml 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/UploadTaskDetailMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/UploadTaskMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/UserStorageFlowMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDeptPathPermissionService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDocFilePathService.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDocFileService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDocOperationHisService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IFavoriteService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IFiletransferService.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/ILbDocService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IPathPermissionService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IRecoveryFileService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IUploadTaskDetailService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IUploadTaskService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IUserStorageFlowService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DeptPathPermissionServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DocFilePathServiceImpl.java 358 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DocFileServiceImpl.java 318 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DocOperationHisServiceImpl.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/FavoriteServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/FiletransferService.java 501 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/LbDocServiceImpl.java 410 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/PathPermissionServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/RecoveryFileServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/UploadTaskDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/UploadTaskServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/UserStorageFlowServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/threadpool/AsyncThreadPoolAutoConfiguration.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/threadpool/AsyncThreadPoolProperties.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/threadpool/BaseAsyncUncaughtExceptionHandler.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/java/org/jeecg/JeecgDocCloudApplication.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/java/test/FileTest.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/application.yml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/logback-spring.xml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/settings.properties 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/Excel.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/PowerPoint.pptx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/Word.docx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/ppt.pptx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/xlsx.xlsx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-doc/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-api/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/api/JeecgHelloApi.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/api/fallback/JeecgHelloFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/entity/JeecgHelloEntity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/entity/LibFirmware.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/vo/JeecgHelloPage.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/controller/JeecgHelloController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/controller/LibFirmwareController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/mapper/JeecgHelloMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/mapper/LibFirmwareMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/mapper/xml/LibFirmwareMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/IJeecgHelloService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/ILibFirmwareService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/impl/JeecgHelloServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/impl/LibFirmwareServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-start/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-start/src/main/java/org/jeecg/JeecgLibraryCloudApplication.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/lb-boot-module-library-start/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-library/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/JeecgHelloApi.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/JeecgSystemClient.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/fallback/JeecgHelloFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/fallback/JeecgSystemClientFallback.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/dto/LimsInsUseStatDto.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/dto/LimsInstrumentTypeDto.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/dto/LimsUsageRecordDto.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/DepartIdModel.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/JeecgHelloEntity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsAppointment.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsAppointmentAudit.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsAppointmentOption.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInspection.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInspectionDetail.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInspectionItem.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInstrument.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInstrumentType.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsRepairRecord.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsUsageRecord.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/SysUser.java 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/WxAccessToken.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsItemTargetDTO.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingBatchDTO.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingCategoryDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingItemDTO.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingTypeDTO.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsBatchDetail.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsBatchResult.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsBatchSample.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsItemTarget.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsProdModel.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsProdType.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingBatch.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingCategory.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingItem.java 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingOutline.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingProduct.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingStandCond.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingStandard.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingType.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsBatchDetailVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsBatchResultVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsBatchSampleVo.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsTestingBatchVo.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsTestingTypeVo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/OutlineTreeVo.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/validate/AddGroup.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/validate/EditGroup.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/DuplicateCheckVo.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/JeecgHelloPage.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsAppointmentAuditVo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsAppointmentVo.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInsUseStatVo.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInspectionItemVo.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInspectionRecordVo.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInstrumentTypeVo.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInstrumentVo.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/pom.xml 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/config/WxConfig.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/config/WxProperties.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/JeecgHelloController.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsAppointmentAuditController.java 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsAppointmentController.java 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsAppointmentOptionController.java 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInspectionController.java 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInspectionDetailController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInspectionItemController.java 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInstrumentController.java 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInstrumentTypeController.java 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsRepairRecordController.java 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsStatController.java 676 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsUsageRecordController.java 360 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/WxPushController.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/handler/JobHandler.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/JeecgHelloMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsAppointmentAuditMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsAppointmentMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsAppointmentOptionMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInspectionDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInspectionItemMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInspectionMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInstrumentMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInstrumentTypeMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsRepairRecordMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsUsageRecordMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsAppointmentAuditMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsAppointmentMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsAppointmentOptionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInspectionDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInspectionItemMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInspectionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInstrumentMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInstrumentTypeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsRepairRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsUsageRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/IJeecgHelloService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsAppointmentAuditService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsAppointmentOptionService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsAppointmentService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInspectionDetailService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInspectionItemService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInspectionService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInstrumentService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInstrumentTypeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsRepairRecordService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsUsageRecordService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/IWxService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/JeecgHelloServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsAppointmentAuditServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsAppointmentOptionServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsAppointmentServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInspectionDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInspectionItemServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInspectionServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInstrumentServiceImpl.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInstrumentTypeServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsRepairRecordServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsUsageRecordServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/WxServiceImpl.java 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsBatchDetailController.java 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsBatchResultController.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsBatchSampleController.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsItemTargetController.java 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsMiniController.java 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsProdModelController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsProdTypeController.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingBatchController.java 548 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingCategoryController.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingItemController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingOutlineController.java 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingProductController.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingStandCondController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingStandardController.java 453 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingTypeController.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsBatchDetailMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsBatchResultMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsBatchSampleMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsItemTargetMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsProdModelMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsProdTypeMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingBatchMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingCategoryMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingItemMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingOutlineMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingProductMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingStandCondMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingStandardMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingTypeMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsBatchDetailMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsBatchResultMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsBatchSampleMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsItemTargetMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsProdModelMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsProdTypeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingBatchMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingCategoryMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingItemMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingOutlineMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingProductMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingStandCondMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingStandardMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingTypeMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsBatchDetailService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsBatchResultService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsBatchSampleService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsItemTargetService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsProdModelService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsProdTypeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingBatchService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingCategoryService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingItemService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingOutlineService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingProductService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingStandCondService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingStandardService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingTypeService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsBatchDetailServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsBatchResultServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsBatchSampleServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsItemTargetServiceImpl.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsProdModelServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsProdTypeServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingBatchServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingCategoryServiceImpl.java 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingItemServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingOutlineServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingProductServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingStandCondServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingStandardServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingTypeServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/main/java/org/jeecg/JeecgLimsCloudApplication.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/main/resources/application.yml 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/main/resources/logback-spring.xml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/test/java/Test.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lims/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/api/JeecgHelloApi.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/api/fallback/JeecgHelloFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/entity/JeecgHelloEntity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/vo/JeecgHelloPage.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/controller/JeecgHelloController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/mapper/JeecgHelloMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/service/IJeecgHelloService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/service/impl/JeecgHelloServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-start/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-start/src/main/java/org/jeecg/JeecgLisCloudApplication.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/lb-boot-module-lis-start/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-lis/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/pom.xml 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/LbProjectCloudApplication.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/controller/BoardController.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/mapper/BoardMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/mapper/xml/BoardMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/model/ProjectModel.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/service/IBoardService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/service/impl/BoardService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/controller/BonSaleRecordController.java 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/controller/customer/BonProjectController.java 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/controller/customer/BonSalesRecordController.java 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/entity/BonProject.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/entity/BonSaleRecord.java 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/entity/BonSalesRecord.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/BonProjectMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/BonSaleRecordMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/BonSalesRecordMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/xml/BonProjectMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/xml/BonSaleRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/xml/BonSalesRecordMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/IBonProjectService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/IBonSaleRecordService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/IBonSalesRecordService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/impl/BonProjectServiceImpl.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/impl/BonSaleRecordServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/impl/BonSalesRecordServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/util/Constant.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusAllocationController.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusPaymentController.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusPaymentItemController.java 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusQuotaParamController.java 237 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusAllocation.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusPayment.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusPaymentItem.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusQuotaParam.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusAllocationMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusPaymentItemMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusPaymentMapper.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusQuotaParamMapper.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusAllocationMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusPaymentItemMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusPaymentMapper.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusQuotaParamMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusAllocationService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusPaymentItemService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusPaymentService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusQuotaParamService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusAllocationServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusPaymentItemServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusPaymentServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusQuotaParamServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/excel/ExcelService.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/excel/ExcelUtils.java 385 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/SystemClient.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/WeeklyClient.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/model/SysDepart.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/model/SysUser.java 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/model/WekRecord.java 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/controller/ProProjectGroupController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/entity/ProProjectGroup.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/mapper/ProProjectGroupMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/mapper/xml/ProProjectGroupMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/service/IProProjectGroupService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/service/impl/ProProjectGroupServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/handler/JobHandler.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/controller/PaSoftBookController.java 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/controller/PaSoftBookFileController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/entity/PaSoftbook.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/entity/PaSoftbookFile.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/PaSoftBookFileMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/PaSoftBookMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/xml/PaSoftBookFileMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/xml/PaSoftBookMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/IPaSoftBookFileService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/IPaSoftBookService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/impl/PaSoftBookFileService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/impl/PaSoftBookService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/BulletinBoardController.java 966 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProMilepostController.java 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProPmoController.java 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProProjectController.java 1046 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProSummaryController.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProTemplateController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProMilepost.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProProject.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProProjectLink.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProProjectLinkTree.java 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProSummary.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProTemplate.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProjectTreeVo.java 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProMilepostMapper.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProProjectLinkMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProProjectMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProSummaryMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProTemplateMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProMilepostMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProProjectLinkMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProProjectMapper.xml 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProSummaryMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProTemplateMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProMilepostService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProProjectLinkService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProProjectService.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProSummaryService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProTemplateService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProMilepostServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProProjectLinkService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProProjectService.java 333 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProSummaryServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProTemplateService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/vo/ProjectVo.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-project/src/test/java/ProjectTest.java 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/.gitattributes 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/Dockerfile 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/pom.xml 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/JeecgOneGUI.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/JeecgOneToMainUtil.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/init/SystemInitListener.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/init/TomcatFactoryConfig.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/api/client/SystenFeignApi.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/api/controller/SystemAPIController.java 645 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/cas/util/CASServiceUtil.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/cas/util/XmlUtils.java 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/controller/HrmBoardController.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/controller/HrmRoomController.java 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/controller/HrmRoomSeatController.java 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/entity/HrmRoom.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/entity/HrmRoomSeat.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/HrmRoomMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/HrmRoomSeatMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/xml/HrmRoomMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/xml/HrmRoomSeatMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/IHrmRoomSeatService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/IHrmRoomService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/impl/HrmRoomSeatServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/impl/HrmRoomServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/vo/HrmRoomVo.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessage.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessageTemplate.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageTemplateMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/controller/ActuatorRedisController.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/domain/RedisInfo.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/exception/RedisConnectException.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/RedisService.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/MailHealthIndicator.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/RedisServiceImpl.java 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/aop/LogRecordAspect.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/controller/NgAlainController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/controller/OSSFileController.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/entity/OSSFile.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/mapper/OSSFileMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/service/IOSSFileService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/service/impl/OSSFileServiceImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/entity/QuartzJob.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/AsyncJob.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/SampleJob.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/SampleParamJob.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/QuartzJobMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/xml/QuartzJobMapper.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/impl/QuartzJobServiceImpl.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java 386 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/DuplicateCheckController.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java 616 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MockVue3Controller.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java 493 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java 249 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java 480 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCheckRuleController.java 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataLogController.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java 220 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java 787 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartOrgController.java 179 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartRoleController.java 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartTeamController.java 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java 586 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictItemController.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysFeedbackController.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysFillRuleController.java 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysGatewayRouteController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysLogController.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java 884 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java 417 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUploadController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java 1614 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java 389 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysAnnouncement.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysAnnouncementSend.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysCategory.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysCheckRule.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataLog.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataSource.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepart.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartPermission.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartRole.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartRolePermission.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartRoleUser.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartTeam.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartTeamUser.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDict.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDictItem.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysFeedback.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysFillRule.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysGatewayRoute.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysLog.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPermission.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPermissionDataRule.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPosition.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRole.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRolePermission.java 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysTenant.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysThirdAccount.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserAgent.java 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserRole.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCategoryMapper.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCheckRuleMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataLogMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataSourceMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartPermissionMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartRoleMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartRolePermissionMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartRoleUserMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartTeamMapper.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartTeamUserMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictItemMapper.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysFeedbackMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysFillRuleMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysGatewayRouteMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionDataRuleMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPositionMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleMapper.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRolePermissionMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysTenantMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysThirdAccountMapper.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserAgentMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementMapper.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysCategoryMapper.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysCheckRuleMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDataLogMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDataSourceMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartPermissionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartRoleMapper.xml 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartRolePermissionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartRoleUserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartTeamMapper.xml 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartTeamUserMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictItemMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysFeedbackMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysFillRuleMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysGatewayRouteMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysLogMapper.xml 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionDataRuleMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPositionMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysTenantMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysThirdAccountMapper.xml 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserAgentMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/AnnouncementSendModel.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartIdModel.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartOrgVo.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartUserModel.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DuplicateCheckVo.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDictTree.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysLoginModel.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysPermissionTree.java 394 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysUserSysDepartModel.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/ThirdLoginModel.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeModel.java 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeSelectModel.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/rule/CategoryCodeRule.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrderNumberRule.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrgCodeRule.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementSendService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCheckRuleService.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataLogService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataSourceService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartPermissionService.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRolePermissionService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleUserService.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartTeamService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartTeamUserService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictItemService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictService.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysFeedbackService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysFillRuleService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysGatewayRouteService.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysLogService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRolePermissionService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRoleService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysTenantService.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysThirdAccountService.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserAgentService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/IThirdAppService.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ImportFileServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementSendServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java 1176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysCheckRuleServiceImpl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataLogServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataSourceServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartPermissionServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRolePermissionServiceImpl.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleServiceImpl.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleUserServiceImpl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java 606 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartTeamServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartTeamUserServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictItemServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java 382 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysFeedbackServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysFillRuleServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysGatewayRouteServiceImpl.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPositionServiceImpl.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRolePermissionServiceImpl.java 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRoleServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysThirdAccountServiceImpl.java 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserAgentServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java 565 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java 866 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java 878 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/FindsDepartsChildrenUtil.java 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/PermissionDataUtil.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java 140 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/SecurityUtil.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/XSSUtils.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartTeamVo.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartUsersVO.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartVo.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDictPage.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserDepVo.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserOnlineVO.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserRoleVO.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/thirdapp/JdtDepartmentTreeVo.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/thirdapp/JwDepartmentTreeVo.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/thirdapp/SyncInfoVo.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/application-dev.yml 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/application-prod.yml 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/application-test.yml 320 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/application.yml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/banner.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/blob.ftl 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/init/initValue.ftl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/init/initValueSub.ftl 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/utils.ftl 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/validatorRulesTemplate/core.ftl 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/validatorRulesTemplate/main.ftl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/validatorRulesTemplate/sub.ftl 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 426 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal__Style#Drawer.vuei 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei 575 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 523 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 445 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/[1-n]List.vuei 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Modal.vuei 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 506 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei 558 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/subTables/[1-n]SubTable.vuei 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 280 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 397 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei 581 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 351 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei 519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal__Style#Drawer.vuei 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/controller/${entityPackage}/${entityName}Controller.javai 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/entity/${entityPackage}/${entityName}.javai 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/mapper/${entityPackage}/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/mapper/${entityPackage}/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/service/${entityPackage}/I${entityName}Service.javai 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/service/${entityPackage}/impl/${entityName}ServiceImpl.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue/${entityPackage}/${entityName}List.vuei 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue/${entityPackage}/modules/${entityName}Modal.vuei 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue/${entityPackage}/modules/${entityName}Modal__Style#Drawer.vuei 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/[1-n]List.vuei 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Modal.vuei 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/jeecg_config.properties 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/jeecg/jeecg_database.properties 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/logback-spring.xml 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/demo1.html 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/LICENSE 177 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/build/pdf.js 8021 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/build/pdf.worker.js 39372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78ms-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78ms-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/83pv-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90ms-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90ms-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90msp-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90msp-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90pv-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90pv-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-3.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-4.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-5.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-6.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-3.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-4.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-5.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-3.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-4.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-5.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-6.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-0.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-1.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-UCS2.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5pc-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5pc-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS1-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS1-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS2-V.bcmap 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETHK-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETHK-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETen-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETen-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETenms-B5-H.bcmap 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETenms-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-H.bcmap 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK2K-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK2K-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBKp-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBKp-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBTpc-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBTpc-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBpc-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBpc-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdla-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdla-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdlb-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdlb-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKgccs-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKgccs-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm314-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm314-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm471-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm471-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKscs-B5-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKscs-B5-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Hankaku.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Hiragana.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-Johab-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-Johab-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-HW-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-HW-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCpc-EUC-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCpc-EUC-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Katakana.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/LICENSE 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/NWP-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/NWP-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/RKSJ-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/RKSJ-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Roman.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-HW-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-HW-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISPro-UCS2-HW-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISPro-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISPro-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX0213-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX0213-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX02132004-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX02132004-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UCS2-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UCS2-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF16-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF16-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF32-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF32-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF8-H.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF8-V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/V.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/WP-Symbol.bcmap 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/compatibility.js 577 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/compressed.tracemonkey-pldi-09.pdf 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/debugger.js 620 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-check.svg 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-comment.svg 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-help.svg 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-insert.svg 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-key.svg 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-newparagraph.svg 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-noicon.svg 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-note.svg 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-paragraph.svg 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/grab.cur 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/grabbing.cur 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/loading-icon.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/loading-small.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/loading-small@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-documentProperties.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-documentProperties@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-firstPage.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-firstPage@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-handTool.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-handTool@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-lastPage.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-lastPage@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCcw.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCcw@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCw.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCw@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/shadow.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/texture.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-bookmark.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-bookmark@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-download.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-download@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-menuArrows.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-menuArrows@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-openFile.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-openFile@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-presentationMode.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-presentationMode@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-print.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-print@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-search.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-search@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewAttachments.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewAttachments@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline-rtl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline-rtl@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewThumbnail.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewThumbnail@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomIn.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomIn@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomOut.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomOut@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/l10n.js 1033 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/locale/locale.properties 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/locale/zh-CN/viewer.properties 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/viewer.css 1999 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/viewer.html 418 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/viewer.js 7614 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/static/view/userlist.html 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/templates/announcement/showContent.ftl 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/templates/demo3.ftl 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/templates/pdfPreviewIframe.ftl 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/main/resources/templates/thirdLogin.ftl 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/test/java/org/jeecg/SampleTest.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/test/java/org/jeecg/modules/online/desform/test/DesformApiTest.java 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/test/java/org/jeecg/modules/online/desform/test/OnlineApiTest.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-system/src/test/java/org/jeecg/modules/system/test/SysUserTest.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/api/JeecgHelloApi.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/api/fallback/JeecgHelloFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/JeecgHelloEntity.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/ProProject.java 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/ProProjectLink.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/WekEvaluate.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/WekRecord.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/WekUserRelation.java 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/ProjectClient.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/SystemClient.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/model/SysDepart.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/model/SysDepartTreeModel.java 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/model/SysUser.java 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/JeecgHelloPage.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/ProjectTreeVo.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekEvaluateBean.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekProject.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekResultBean.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekTypeBean.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekWeekBean.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/JeecgHelloController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/WekEvaluateController.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/WekRecordController.java 948 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/WekUserRelationController.java 268 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/JeecgHelloMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/WekEvaluateMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/WekRecordMapper.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/WekUserRelationMapper.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/xml/WekEvaluateMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/xml/WekRecordMapper.xml 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/xml/WekUserRelationMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IJeecgHelloService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IWekEvaluateService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IWekRecordService.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IWekUserRelationService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/JeecgHelloServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/WekEvaluateServiceImpl.java 1514 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/WekRecordServiceImpl.java 1653 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/WekUserRelationServiceImpl.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/pom.xml 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/src/main/java/org/jeecg/JeecgWeeklyCloudApplication.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/src/main/resources/application.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/src/test/java/WeeklyTest.java 846 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-module-weekly/pom.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/pom.xml 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-job/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/pom.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java 370 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-boot-starter/pom.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/docker-compose.yml 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/Dockerfile 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/README.md 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/pom.xml 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/JeecgGatewayApplication.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/GatewayRoutersConfiguration.java 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/RateLimiterConfiguration.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/RouterDataType.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/FallbackController.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/GlobalAccessTokenFilter.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/SentinelFilterContextConfig.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/HystrixFallbackHandler.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/MySwaggerResourceProvider.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/SentinelBlockRequestHandler.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/SwaggerResourceController.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteService.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/GatewayRouteVo.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/MyRouteDefinition.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/application.yml 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/keyStore/7228817__shlanbao.cn.pfx 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/keyStore/pfx-password.txt 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/logback-spring.xml 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-monitor/pom.xml 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/JeecgMonitorApplication.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/config/SecuritySecureConfig.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-monitor/src/main/resources/application.yml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-nacos/Dockerfile 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-nacos/pom.xml 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-nacos/src/main/java/com/alibaba/nacos/JeecgNacosApplication.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-nacos/src/main/resources/application.yml 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-sentinel/README.md 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-sentinel/pom.xml 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-sentinel/src/main/java/com/alibaba/csp/sentinel/dashboard/JeecgSentinelDashboardApplication.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-sentinel/src/main/resources/application.properties 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/Dockerfile 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/pom.xml 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/constant/CloudConstant.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/ebus/DemoBusEvent.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/controller/JeecgTestFeignController.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/feign/JeecgTestClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/feign/JeecgTestClientDyn.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/feign/fallback/JeecgTestClientFallback.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/lock/DemoLockTest.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloReceiver1.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloReceiver2.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloReceiver3.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloTimeReceiver.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/xxljob/DemoJobHandler.java 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/resources/application-dev.yml 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/resources/application.yml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/resources/logback-spring.xml 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/Dockerfile 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/README.md 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/pom.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/IndexController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobApiController.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobCodeController.java 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobGroupController.java 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobInfoController.java 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobLogController.java 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/UserController.java 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java 1666 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java 218 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java 413 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/LoginService.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/XxlJobService.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java 372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/application.yml 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/i18n/message_en.properties 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/i18n/message_zh_CN.properties 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/i18n/message_zh_TC.properties 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/logback.xml 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg 2230 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js 1653 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js 841 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg 2671 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/moment/moment.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/dist/js/adminlte.min.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/favicon.ico 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/common.1.js 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/index.js 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/jobcode.index.1.js 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/jobgroup.index.1.js 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/jobinfo.index.1.js 682 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/joblog.detail.1.js 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/joblog.index.1.js 391 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/login.1.js 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/user.index.1.js 328 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js 434 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/lib/codemirror.css 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/lib/codemirror.js 9698 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/clike/clike.js 879 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js 899 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/php/php.js 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js 398 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/python/python.js 409 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/shell/shell.js 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/cronGen/cronGen.js 1079 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/cronGen/cronGen_en.js 1079 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/echarts/echarts.common.min.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/jquery/jquery.cookie.js 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/jquery/jquery.validate.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/layer.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/icon-ext.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/icon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/layer.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-0.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-1.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-2.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/common/common.exception.ftl 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/common/common.macro.ftl 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/help.ftl 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/index.ftl 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/jobcode/jobcode.index.ftl 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/jobgroup/jobgroup.index.ftl 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/jobinfo/jobinfo.index.ftl 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/joblog/joblog.detail.ftl 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/joblog/joblog.index.ftl 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/login.ftl 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/user/user.index.ftl 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/lb-cloud-module/pom.xml 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/pom.xml 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/新建模块 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.dockerignore 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.editorconfig 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.env 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.env.development 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.env.production 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.env.test 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.eslintignore 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.gitattributes 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.gitignore 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/.prettierrc 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/Dockerfile 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/LICENSE 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/README.md 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/babel.config.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/idea.config.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/package.json 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/avatar2.jpg 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/cdn/babel-polyfill/polyfill_7_2_5.js 6953 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/cdn/font-icon/font_2316098_umqusozousr.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/codemirror/css/tomorrow-night.css 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/color.less 7720 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/goright.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/index.html 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/mavonEditor/css/github-markdown.css 711 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/mavonEditor/css/katex.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/mavonEditor/css/tomorrow-night.css 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/mavonEditor/js/highlight.min.js 1315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/mavonEditor/js/katex.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/mavonEditor/js/lang.hljs.js 322 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/bg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/breadcrumbs.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/checker-bg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/blue/message_catch.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/business_rule.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/error_catch.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/error_throw.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/manual.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/message_catch.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/message_throw.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/receive.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/script.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/send.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/service.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/signal_catch.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/signal_throw.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/timer.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/images/deployer/user.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/index.html 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/ActivitiRest.js 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/ActivityImpl.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/Color.js 603 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/LineBreakMeasurer.js 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/Polyline.js 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/ProcessDiagramCanvas.js 2172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/ProcessDiagramGenerator.js 1087 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/jquery/jquery.asyncqueue.js 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/jquery/jquery.js 9266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/jquery/jquery.progressbar.js 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/jstools.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/raphael.2.1.1.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/raphael.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/raphael_uncompressed.js 5815 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/js/textlayout.js 441 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/diagram-viewer/style.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/app-cfg.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/app.js 431 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-assignment-controller.js 450 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-condition-expression-controller.js 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-custom-controllers.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-default-controllers.js 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-event-listeners-controller.js 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-execution-listeners-controller.js 326 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-fields-controller.js 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-form-properties-controller.js 276 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-in-parameters-controller.js 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-message-definitions-controller.js 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-message-scope-controller.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-multiinstance-controller.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-out-parameters-controller.js 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-sequenceflow-order-controller.js 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-signal-definitions-controller.js 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-signal-scope-controller.js 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties-task-listeners-controller.js 325 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties.js 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/assignment-candidateGroup.html 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/assignment-display-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/assignment-popup-popup.html 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/assignment-popup.html 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/assignment-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/boolean-property-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/condition-expression-display-template.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/condition-expression-popup.html 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/condition-expression-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/default-value-display-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/event-listeners-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/event-listeners-popup.html 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/event-listeners-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/execution-listeners-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/execution-listeners-popup.html 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/execution-listeners-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/feedback-popup.html 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/fields-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/fields-popup.html 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/fields-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/form-properties-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/form-properties-popup.html 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/form-properties-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/in-parameters-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/in-parameters-popup.html 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/in-parameters-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/message-definitions-display-template.html 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/message-definitions-popup.html 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/message-definitions-write-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/message-property-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/multiinstance-property-write-template.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/out-parameters-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/out-parameters-popup.html 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/out-parameters-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/sequenceflow-order-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/sequenceflow-order-popup.html 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/sequenceflow-order-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/signal-definitions-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/signal-definitions-popup.html 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/signal-definitions-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/signal-property-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/string-property-write-mode-template.html 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/subprocess-reference-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/subprocess-reference-popup.html 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/subprocess-reference-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/task-listeners-display-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/task-listeners-popup.html 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/task-listeners-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/text-popup.html 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/properties/text-property-write-template.html 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/toolbar-custom-actions.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/toolbar-default-actions.js 431 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/toolbar.js 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/configuration/url-config.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/css/editor-ext.css 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/css/style-common.css 1519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/css/style-editor.css 639 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/css/style.css 477 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor-config.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor-controller.js 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor-utils.js 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor.html 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/css/editor.css 202 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/i18n/translation_de.js 383 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/i18n/translation_en_us.js 423 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/i18n/translation_signavio_de.js 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/i18n/translation_signavio_en_us.js 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/oryx.debug.js 24510 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/editor/oryx.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/eventbus.js 133 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.eot 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.svg 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.ttf 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.woff 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.eot 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.svg 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.ttf 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.woff 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/header-controller.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/i18n/en.json 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/i18n/en.json_bak 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/bpmn-error.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/bpmn-warning.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/datadefinition.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/delete.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/loading.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/logo-2x.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/nw-handle-dark.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/se-handle-dark.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/shapemenu_highlight.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/images/wrench.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js.map 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-dragdrop.min-1.0.3.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-dragdrop_1.0.7/angular-dragdrop.min.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-mocks_1.2.13/angular-mocks.js 2136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-resource_1.2.13/angular-resource.js 596 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js.map 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-route_1.2.13/angular-route.js 921 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-route_1.2.13/angular-route.min.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-route_1.2.13/angular-route.min.js.map 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.js 625 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-strap_2.0.5/angular-strap.min.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate-loader-static-files/.bower.json 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate-storage-cookie/.bower.json 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate_2.4.2/angular-translate.js 960 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular_1.2.13/angular-animate.min.js 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/angular_1.2.13/angular.min.js 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js 1026 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.min.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css 5785 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/js/bootstrap.js 1951 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/js/bootstrap.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/.bower.json 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/.gitignore 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/CHANGES 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/CONTRIBUTORS.md 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/LICENSE 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/README.md 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-sham.js 444 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-sham.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-sham.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-shim.js 1314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-shim.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-shim.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/package.json 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-kill.js 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-matchers.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/index.html 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/index.min.html 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine-html.js 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.css 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.js 2477 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/json2.js 478 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-array.js 1223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-date.js 152 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-function.js 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-number.js 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-object.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-string.js 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/jquery-ui-1.10.3.custom.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/jquery.autogrow-textarea.js 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/jquery_1.11.0/jquery.js 9789 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/jquery_1.11.0/jquery.min.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/jquery_1.11.0/jquery.min.map 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/json3_3.2.6/LICENSE 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/json3_3.2.6/lib/json3.js 861 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/json3_3.2.6/lib/json3.min.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/momentjs_2.5.1/momentjs.min.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/mousetrap-1.4.5.min.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/ng-grid-2.0.7-min.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/ng-grid-2.0.7.min.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/pagination/tm.pagination.js 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/path_parser.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/prototype-1.5.1.js 3273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/libs/ui-utils.min-0.0.4.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/partials/root-stencil-item-template.html 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/partials/stencil-item-template.html 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/plugins.xml 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/popups/icon-template.html 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/popups/save-model.html 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/popups/select-shape.html 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/popups/unsaved-changes.html 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/select-shape-controller.js 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencil-controller.js 1435 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/task.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/error.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/message.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/diagram.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/editor-app/toolbar-controller.js 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/modeler.html 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/static/stencilset.json 2677 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/tinymce/langs/zh_CN.js 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/tinymce/skins/lightgray/content.min.css 554 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/tinymce/skins/lightgray/skin.min.css 2159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/public/v2.js 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/App.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/GroupRequest.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/activiti/activiti.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/api.js 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/index.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/lims.js 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/login.js 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/manage.js 222 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/pro.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/api/week.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/audio/wave.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/background.svg 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/checkcode.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/company_logo.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/daiban.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/cloud.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/f01.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/f03.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/computer.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/disk_shortcut_hover.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/docm.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/docx.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/folder.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/pdf.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/icon/xls.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/light.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/loginbg3.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/panel_tools.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/righttop.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/rlist.gif 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/desk/win.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/duban.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/dir.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_7z.svg 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_avi.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_c#.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_c++.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_c.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_chm.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_css.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_csv.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_dmg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_excel.svg 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_exe.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_flac.svg 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_gif.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_go.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_html.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_img.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_jar.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_java.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_js.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_json.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_jsp.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_kotlin.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_less.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_lua.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_markdown.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_music.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_nginx.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_oa.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_objective_c.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_open.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_pdf.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_php.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_powershell.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_ppt.svg 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_properties.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_python.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_r.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_rar.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_rtf.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_rust.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_sass.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_scss.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_shell.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_sql.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_stylus.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_svg.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_swift.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_tar.svg 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_txt.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_typescript.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_unknown.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_vue.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_word.svg 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_xml.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_yaml.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/file_zip.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/files.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/files1.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/less/mixins.less 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/file/less/varibles.less 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/guaz.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/less/JAreaLinkage.less 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/less/TableExpand.less 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/less/codemirror_idea.css 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/less/common.less 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/less/index.less 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/login-bg.svg 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/login-box-bg.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/logo.svg 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/nodata.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pdf4.jpg 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_da.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_db.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_dy.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_lcb.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_ld.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_right.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_sl.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_tx.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/icon_yb.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/img/img1.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/leader.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/pro/person.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/weekly/icon_down.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/weekly/icon_top.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/weekly/wr_logo.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/workcoe.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/assets/zaiban.png 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/cas/sso.js 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/AvatarList/Item.vue 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/AvatarList/List.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/AvatarList/index.js 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/AvatarList/index.less 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ChartCard.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/CountDown/CountDown.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/CountDown/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/Ellipsis/Ellipsis.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/Ellipsis/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/JVxeCells/JVxeFileCell.vue 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/JVxeCells/JVxeImageCell.vue 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/JVxeCells/JVxePopupCell.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/JVxeCells/JVxeRadioCell.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/JVxeCells/JVxeSelectDictSearchCell.js 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/JVxeCells/install.js 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/NumberInfo/NumberInfo.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/NumberInfo/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/NumberInfo/index.less 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/README.md 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/Trend/Trend.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/Trend/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/Trend/index.less 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/clone-org/index.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/contextmenu/index.vue 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/contextmenu/menus.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/tree-org/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/tree-org/node.js 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/tree-org/scale-view.vue 572 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/tree-org/tree-org.vue 599 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/components/zm-draggable/index.vue 469 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/directives/drag/index.js 232 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/directives/focus/index.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/index.js 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/plugin/core/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/styles/index.less 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/svg/collapse.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/svg/expand.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/svg/fullscreen.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/svg/unfullscreen.svg 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/utils/dom.js 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/utils/fns.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/utils/log.js 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/utils/polyfill.js 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/ZmTreeOrg/utils/utils.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/_util/Area.js 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/_util/StringUtil.js 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/_util/util.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/AreaChartTy.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/Bar.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/BarAndLine.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/BarHorizontal.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/BarMultid.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/DashChartDemo.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/IndexBar.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/LineChartMultid.vue 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/Liquid.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/MiniArea.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/MiniBar.vue 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/MiniProgress.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/Pie.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/README.md 367 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/Radar.vue 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/RankList.vue 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/StackBar.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/TransferBar.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/Trend.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/chart.less 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/chart/mixins/ChartMixins.js 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/dict/JDictSelectTag.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/dict/JDictSelectUtil.js 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/dict/JMultiSelectTag.vue 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/dict/JSearchSelectTag.vue 236 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/dict/README.md 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/dict/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/index.less 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JAreaLinkage.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JCategorySelect.vue 243 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JCheckbox.vue 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JCodeEditor.vue 483 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JCron.vue 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JDate.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/EasyCron.vue 317 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/InputCron.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/format-date.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/const.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/day.vue 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/hour.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/minute.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/mixin.js 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/mixin.less 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/month.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/second.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/week.vue 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/tabs/year.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEasyCron/validator.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEditableTable.vue 3472 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEditor.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JEllipsis.vue 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JFormContainer.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JImageUpload.vue 239 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JImportModal.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JInput.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JMarkdownEditor/default-options.js 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JMarkdownEditor/index.vue 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JModal/JModal.vue 262 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JModal/JPrompt.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JModal/index.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JPopup.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JSelectMultiple.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JSlider.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JSuperQuery.vue 684 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JSwitch.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JTime.vue 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JTreeDict.vue 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JTreeSelect.vue 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JTreeTable.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JUpload.vue 459 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/JVxeDetailsModal.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/JVxePagination.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/JVxeSubPopover.vue 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/JVxeTable.js 1575 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/JVxeToolbar.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeCheckboxCell.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeDateCell.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeDepartSelectCell.vue 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeDragSortCell.vue 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeInputCell.vue 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeNormalCell.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeProgressCell.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeSelectCell.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeSlotCell.js 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeTagsCell.js 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeTextareaCell.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeTimeCell.vue 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeUploadCell.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeUserSelectCell.vue 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/components/cells/ReloadEffect.js 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/index.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/install.js 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/jvxeTypes.js 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/less/j-vxe-table.less 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/less/reload-effect.less 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/less/size/tiny.less 332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/mixins/JVxeCellMixins.js 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/mixins/vxe.web.socket.mixins.js 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/utils/cellUtils.js 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/JVxeTable/utils/vxeUtils.js 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/README.md 512 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/README_JEditableTable.md 577 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/README_JPopup.md 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/index.js 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/minipop/JFilePop.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/minipop/JInputPop.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/modal/JCronModal.vue 928 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecg/modal/JPopupOnlReport.vue 445 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue 399 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectBizComponent/JSelectBizQueryItem.js 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectBizComponent/README.md 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectBizComponent/index.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectDepart.vue 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectMultiDepUser.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectMultiProject.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectMultiUser.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectPosition.vue 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectRole.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/JSelectUserByDep.vue 145 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/README.md 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/modal/JSelectDepartModal.vue 310 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/modal/JSelectUserByDepModal.vue 356 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/modal/SelectUserListModal.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/thirdApp/JThirdAppButton.vue 214 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/jeecgbiz/thirdApp/JThirdAppDropdown.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/BasicLayout.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/BlankLayout.vue 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/IframeFReportView.vue 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/IframePageView.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/PageView.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/RouteView.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/TabLayout.vue 430 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/UserLayout.vue 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/layouts/index.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/lazy_antd.js 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/menu/Contextmenu.vue 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/menu/SideMenu.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/menu/index.js 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/page/GlobalFooter.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/page/GlobalHeader.vue 227 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/page/GlobalLayout.vue 696 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/page/PageHeader.vue 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/page/PageLayout.vue 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/page/SHeaderNotice.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/setting/SettingDrawer.vue 323 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/setting/SettingItem.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/table/README.md 292 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/table/StandardTable.vue 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/table/index.js 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/Breadcrumb.vue 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/DepartSelect.vue 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/DetailList.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/DynamicNotice.vue 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/FooterToolBar.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/HeadInfo.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/HeaderNotice.vue 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/Logo.vue 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/ShowAnnouncement.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/TwoStepCaptcha.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/UserMenu.vue 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/UserPassword.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/components/tools/setting.js 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/config/index.js 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/config/router.config.js 400 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/defaultSettings.js 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/icons.js 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/main.js 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/DisabledAuthFilterMixin.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/JEditableTableMixin.js 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/JEditableTableModelMixin.js 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/JVxeTableMixin.js 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/JVxeTableModelMixin.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/JeecgListMixin.js 458 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/OnlineCommonUtil.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/mixins/WebsocketMixin.js 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/permission.js 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/plugins/element.js 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/router/README.md 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/router/index.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/getters.js 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/index.js 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/modules/app.js 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/modules/enhance.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/modules/fileList.js 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/modules/online.js 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/modules/permission.js 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/modules/user.js 219 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/store/mutation-types.js 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/JEditableTableUtil.js 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/LunarFullCalendarUtil.js 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/auth.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/authFilter.js 277 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/axios.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/browser.js 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/commonUploadFile.js 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/desform/CustomExpression.js 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/device.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/encryption/aesEncrypt.js 6003 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/encryption/signMd5Utils.js 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/filter.js 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/hasPermission.js 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/libs/globalFunction/common.js 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/libs/globalFunction/file.js 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/libs/globalFunction/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/libs/map.js 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/mixin.js 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/permissions.js 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/portal/constant.js 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/props-util.js 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/request.js 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/rules.js 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/storage.js 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/util.js 767 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/validate.js 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/utils/vueBus.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/Home.vue 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/center/Index.vue 286 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/center/page/App.vue 106 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/center/page/Article.vue 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/center/page/Project.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/center/page/index.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/AvatarModal.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/BaseSetting.vue 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/Binding.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/Custom.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/Index.vue 207 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/Notification.vue 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/account/settings/Security.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ActivitiFileList.vue 453 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ActivitiFileModel.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ActivitiList.vue 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ActivitiModel.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ActivitiModelModal.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ModelList.vue 353 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/ProcessModelList.vue 750 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/applyHome.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/applyList.vue 620 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/doneManage.vue 259 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/form/demoForm.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/historicDetail.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/mixins/activitiApproveMixin.js 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/mixins/activitiMixin.js 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/processFinishManage.vue 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/processInsManage.vue 314 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/activiti/todoManage.vue 563 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/BonProjectList.vue 382 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/BonSalesRecordList.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/index.vue 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/modules/BonProjectForm.vue 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/modules/BonProjectModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/modules/BonProjectModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/modules/BonSalesRecordForm.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/modules/BonSalesRecordModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/2-customer/modules/BonSalesRecordModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/BonSaleRecordList.vue 412 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/modules/BonSaleRecordForm.vue 156 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/modules/BonSaleRecordModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bon/modules/BonSaleRecordModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/BonusPaymentGx.vue 625 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/BonusPaymentKh.vue 619 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/BonusPaymentList.vue 387 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/BonusPaymentSc.vue 638 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/BonusPaymentXm.vue 587 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/BonusPaymentModal.vue 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/DeGxModal.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/DeKhModal.vue 221 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/DeScModal.vue 405 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/DeXmModal.vue 296 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/FpGxModal.vue 440 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/FpKhModal.vue 441 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/FpScModal.vue 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/FpXmModal.vue 439 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/HsGxModal.vue 348 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/HsKhModal.vue 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/HsScModal.vue 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/HsXmModal.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/KpModal.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/bonus/modules/PaymentProjectModal.vue 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/Analysis.vue 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/IndexBdc.vue 519 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/IndexChart.vue 2016 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/IndexTask.vue 372 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/Monitor.vue 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/Workplace.vue 360 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/dashboard/module/Gantt.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/desktop/Home.vue 639 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/desktop/module/CustomModal.vue 614 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/desktop/module/EditableCell.vue 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/desktop/module/RecentModal.vue 563 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/desktop/module/UploadModal.vue 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/DeptPathRoleUserList.vue 270 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/DocOperationHisList.vue 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/File.vue 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/OnlyOffice.vue 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/PathRoleUserList.vue 269 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/RoleUserFlow.vue 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/audioPreview/BoxMask.vue 830 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/audioPreview/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/codePreview/BoxMask.vue 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/codePreview/fold.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/codePreview/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/codePreview/mode.js 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/codePreview/theme.js 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/contextMenu/Box.vue 782 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/contextMenu/index.js 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/imgPreview/BoxMask.vue 593 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/imgPreview/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/markdownPreview/BoxMask.vue 393 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/markdownPreview/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/selectFile/Box.vue 528 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/selectFile/index.js 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/uploadFile/Box.vue 599 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/uploadFile/index.js 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/videoPreview/BoxMask.vue 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/videoPreview/VideoPlayer.vue 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/box/videoPreview/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/addFile/Dialog.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/addFile/index.js 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/addFolder/Dialog.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/addFolder/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/compareFile/Dialog.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/compareFile/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/copyFile/Dialog.vue 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/copyFile/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/deleteFile/Dialog.vue 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/deleteFile/index.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/moveFile/Dialog.vue 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/moveFile/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/renameFile/Dialog.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/renameFile/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/restoreFile/Dialog.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/restoreFile/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/saveShareFile/Dialog.vue 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/saveShareFile/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/shareFile/Dialog.vue 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/shareFile/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/showFileDetail/Dialog.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/showFileDetail/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/unzipFile/Dialog.vue 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/dialog/unzipFile/index.js 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/components/fileOperationPlugins.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/DocOperationHisForm.vue 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/DocOperationHisModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/DocOperationHisModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/FileGrid.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/FileList.vue 411 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/FileSide.vue 450 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/FileTable.vue 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/document/modules/OperationMenu.vue 438 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/BasicForm.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/advancedForm/AdvancedForm.vue 206 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/advancedForm/RepositoryForm.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/advancedForm/TaskForm.vue 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/stepForm/Step1.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/stepForm/Step2.vue 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/stepForm/Step3.vue 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/form/stepForm/StepForm.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/CardList.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/PermissionList.vue 272 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/RoleList.vue 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/StandardList.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/TableInnerEditList.vue 288 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/TableList.vue 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/UserList.vue 264 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/modules/RoleModal.vue 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/list/search/SearchLayout.vue 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/profile/advanced/Advanced.vue 342 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/examples/profile/basic/Index.vue 255 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/exception/403.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/exception/404.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/exception/500.vue 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/exception/ExceptionPage.vue 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/exception/type.js 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/CompanyOrgTree.vue 307 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/DepartOrgTree.vue 713 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/DepartSeatPlan.vue 639 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/HrmRoomList.vue 242 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/HrmRoomUserList.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/HrmUserList.vue 557 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/home.vue 726 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/CompanyLeftDrawer.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/CompanyRightDrawer.vue 321 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/DepartInfoList.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/DepartPostCheckList.vue 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/HrmRoomForm.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/HrmRoomModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/HrmRoomUserForm.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/HrmRoomUserModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/RoomBlock.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/RoomSeatModal.vue 354 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/hrm/modules/seat.less 149 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/ImagCropper.vue 613 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/ImagPreview.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/ImgDragSort.vue 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/ImgTurnPage.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/InterfaceTest.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVXETableDemo.vue 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/JVxeDemo1.vue 304 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/JVxeDemo2.vue 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/JVxeDemo3.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/demo/JSBCDemo.vue 234 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/demo/PopupSubTable.vue 278 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/demo/SocketReload.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/ErpTemplate.vue 308 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Index.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template1.vue 330 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template2.vue 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template3.vue 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template4.vue 347 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template5.vue 224 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgDemoList.vue 371 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgEditableTableExample.vue 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgOrderMainList.vue 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgOrderMainListForJEditableTable.vue 217 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgOrderMainListForJVxeTable.vue 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgPdfView.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/JeecgTreeTable.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/PrintDemo.vue 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/RowspanTable.vue 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/SelectDemo.vue 667 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/SplitPanel.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/TableExpandeSub.vue 266 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/TableTotal.vue 164 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/ThirdAppMessageTest.vue 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/helloworld.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/helloworld2.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JEditableTable/DefaultTable.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JEditableTable/ReadOnlyTable.vue 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JEditableTable/ThreeLinkage.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JeecgDemoModal.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JeecgDemoTabsModal.vue 285 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JeecgOrderMainModal.vue 293 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JeecgOrderModalForJEditableTable.vue 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/JeecgOrderModalForJVexTable.vue 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/PdfPreviewModal.vue 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/SplitPanelA.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/SplitPanelB.vue 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/SplitPanelModal.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/SuperQueryModal.vue 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/modules/VueCronModal.vue 729 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/report/Analysis.vue 698 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/report/ArchivesStatisticst.vue 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/report/ViserChartDemo.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/tablist/JeecgOrderCustomerList.vue 166 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/tablist/JeecgOrderDMainList.vue 284 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/tablist/JeecgOrderTicketList.vue 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/tablist/form/JeecgOrderCustomerModal.vue 245 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/tablist/form/JeecgOrderDMainModal.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/jeecg/tablist/form/JeecgOrderTicketModal.vue 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/IndexLcb.vue 476 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/LCB.vue 418 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/PMO.vue 362 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/ProjectDetail.vue 2274 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/YLB.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/modules/LCBModal.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/modules/TimeLine.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/kb/modules/indexGantt.vue 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsAppointmentList.vue 235 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsAppointmentOptionList.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsInspectionDetailList.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsInspectionItemList.vue 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsInspectionList.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsInstrumentList.vue 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsInstrumentTypeList.vue 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsRepairRecordList.vue 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/LimsUsageRecordList.vue 331 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/limsStatPage.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsAppointmentForm.vue 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsAppointmentModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsAppointmentModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsAppointmentOptionForm.vue 121 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsAppointmentOptionModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsAppointmentOptionModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionDetailForm.vue 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionDetailModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionDetailModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionForm.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionItemForm.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionItemModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionItemModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInspectionModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInstrumentForm.vue 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInstrumentModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInstrumentModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInstrumentTypeForm.vue 117 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInstrumentTypeModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsInstrumentTypeModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsRepairRecordForm.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsRepairRecordModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsRepairRecordModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsUsageRecordForm.vue 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsUsageRecordModal.Style#Drawer.vue 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/modules/LimsUsageRecordModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/stat/EquUseStat.vue 498 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/stat/RepairStat.vue 436 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/stat/SpotStat.vue 436 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/lims/stat/UserUseStat.vue 471 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsBatchDetailList.vue 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsBatchResultList.vue 346 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsBatchSampleList.vue 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsItemTargetIdent.vue 547 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsItemTargetList.vue 315 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsProdTypeList.vue 275 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsTestingBatchList.vue 382 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsTestingOutlineList.vue 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsTestingProductList.vue 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/LimsTestingStandardList.vue 377 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/OutlineMaintainPage.vue 469 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/ProductModelList.vue 197 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/StandMaintainPage.vue 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/components/CondTag.vue 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/components/EdiStrtableCell.vue 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/components/EditableCell.vue 96 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsBatchDetailForm.vue 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsBatchDetailModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsBatchResultForm.vue 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsBatchResultModal.vue 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsBatchSampleForm.vue 129 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsBatchSampleModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsItemTargetForm.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsItemTargetModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsItemTargetTechForm.vue 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsItemTargetTechModal.vue 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsProdModelForm.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsProdModelModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsProdTypeForm.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsProdTypeModal.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingBatchForm.vue 212 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingBatchModal.vue 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingBatchModal2.vue 271 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingCategoryForm.vue 199 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingCategoryModal.vue 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingItemForm.vue 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingOutlineForm.vue 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingOutlineModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingProductForm.vue 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingProductModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingStandardForm.vue 198 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingStandardModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/LimsTestingTypeForm.vue 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/modules/SelectOutlineModal.vue 463 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/report/BatchDetailReport.vue 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/limsTest/report/InspectResultReport.vue 54 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/message/SysMessageList.vue 238 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/message/SysMessageTemplateList.vue 253 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/message/modules/SysMessageModal.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/message/modules/SysMessageTemplateModal.vue 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/message/modules/SysMessageTestModal.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/DiskMonitoring.vue 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/HttpTrace.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/JvmInfo.vue 169 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/RedisInfo.vue 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/RedisTerminal.vue 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/SystemInfo.vue 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/monitor/TomcatInfo.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/modules/oss/OSSFileList.vue 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/patent/PaSoftBookList.vue 431 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/patent/modules/PaSoftbookModal.vue 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/patent/modules/PaUploadFileModal.vue 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/BoardInfo.vue 481 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/MilestoneInfo.vue 248 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/ProProjectGroupList.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/ProjectList.vue 693 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/TemplateList.vue 244 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/LinkListComponent.vue 327 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/MilestoneModal.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProGroupSelectModal.vue 215 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProProjectGroupForm.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProProjectGroupModal.vue 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal.vue 345 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal1.vue 146 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal2.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal3.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal4.vue 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal5.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal6.vue 108 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/ProjectModal7.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/UploadTemplateModal.vue 151 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/modules/linkModal.vue 396 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/overView.vue 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/pro/report/ProjectListReport.vue 210 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/result/Error.vue 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/result/Result.vue 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/result/Success.vue 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/AddressList.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DataLogList.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DepartList.vue 623 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DepartList2.vue 260 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DepartListSync.vue 680 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DepartTeamUserList.vue 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DepartUserList.vue 229 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DictDeleteList.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DictItemList.vue 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/DictList.vue 208 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/LogList.vue 231 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/NewPermissionList.vue 228 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/PermissionDataRuleList.vue 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/PermissionList.vue 195 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/QuartzJobList.vue 289 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/RoleList.vue 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/RoleUserList.vue 544 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysAnnouncementList.vue 332 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysCategoryList.vue 338 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysCheckRuleList.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysDataSourceList.vue 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysFeedbackList.vue 226 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysFillRuleList.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysGatewayRouteList.vue 111 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysGatewayRouteList2.vue 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysPositionList.vue 184 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/SysUserOnlineList.vue 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/TenantList.vue 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/UserAnnouncementList.vue 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/UserList.vue 392 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/AddressListLeft.vue 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/AddressListRight.vue 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DataLogCompareModal.vue 163 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DataLogModal.vue 153 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DepartAuthModal.vue 192 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DepartDataruleModal.vue 116 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DepartModal.vue 225 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DepartWindow.vue 186 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptBaseInfo.vue 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptRoleAuthModal.vue 213 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptRoleDataruleModal.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptRoleInfo.vue 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptRoleUserModal.vue 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptTeamInfo.vue 203 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DeptUserInfo.vue 368 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DictItemModal.vue 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/DictModal.vue 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/GateWayRouteModal.vue 303 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/PasswordModal.vue 142 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/PermissionDataRuleModal.vue 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/PermissionModal.vue 369 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/QuartzJobModal.vue 141 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/RoleDataruleModal.vue 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/RoleModal.vue 139 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SelectUserListModal.vue 290 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SelectUserModal.vue 299 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysAnnouncementModal.vue 359 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysCategoryModal.vue 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysCheckRuleModal.vue 352 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysCheckRuleTestModal.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysDataSourceModal.vue 287 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysDepartRoleModal.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysDepartTeamModal.vue 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysFeedbackForm.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysFeedbackModal.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysFillRuleModal.vue 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysPositionModal.vue 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/SysUserAgentModal.vue 181 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/TenantForm.vue 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/TenantModal.vue 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/UserModal.vue 633 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/UserRecycleBinModal.vue 193 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/UserRoleModal.vue 200 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/icon/Icon.less 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/system/modules/icon/Icons.vue 123 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/Login.vue 297 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/LoginAccount.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/LoginPhone.vue 172 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/LoginSelectDepartment.vue 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/LoginSelectTenant.vue 209 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/alteration/Alteration.vue 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/alteration/Step2.vue 182 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/alteration/Step3.vue 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/alteration/Step4.vue 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/oauth2/OAuth2Login.vue 130 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/register/Register.vue 394 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/register/RegisterResult.vue 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/third/JeecgThirdLoginMixin.js 211 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/user/third/ThirdLogin.vue 118 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/Weekly.vue 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/WeeklySubmitView.vue 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightAllProjectWeekly.vue 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightDepartUserWeekly.vue 254 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightExportWeekly.vue 312 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightJuniorBatchWeekly.vue 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightJuniorWeekly.vue 258 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightOwnWeekly.vue 246 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightPersonalWeekly.vue 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightProjectWeekly.vue 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightStatisticsPro.vue 306 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightStatisticsUser.vue 404 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightStatisticsWeekly.vue 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/RightWriteWeekly.vue 261 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/StatisticsBar.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/StatisticsPie.vue 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/WeeklyDetailModal.vue 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/WeeklyLeft.vue 552 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/WeeklyListCompent.vue 2010 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/WeeklyListProjectCompent.vue 468 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/views/week/modules/WeeklyRight.vue 122 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/src/vuebus/event-bus.js 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-ui/vue.config.js 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lb-boot/.gitattributes
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
*.js linguist-language=Java
*.css linguist-language=Java
*.html linguist-language=Java
*.vue linguist-language=Java
lb-boot/.gitignore
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,4 @@
/target/
/.idea/
*.iml
rebel.xml
lb-boot/LICENSE
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2019 jeecg-boot
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
lb-boot/README.md
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
Jeecg-Boot ä½Žä»£ç å¼€å‘平台
===============
当前最新版本: 3.0(发布日期:2021-11-01)
## åŽç«¯æŠ€æœ¯æž¶æž„
- åŸºç¡€æ¡†æž¶ï¼šSpring Boot 2.3.5.RELEASE
- æŒä¹…层框架:Mybatis-plus 3.4.3.1
- å®‰å…¨æ¡†æž¶ï¼šApache Shiro 1.7.0,Jwt 3.11.0
- æ•°æ®åº“连接池:阿里巴巴Druid 1.1.22
- ç¼“存框架:redis
- æ—¥å¿—打印:logback
- å…¶ä»–:fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。
## å¼€å‘环境
- è¯­è¨€ï¼šJava 8
- IDE(JAVA): Eclipse安装lombok插件 æˆ–者 IDEA
- ä¾èµ–管理:Maven
- æ•°æ®åº“:MySQL5.7+  &  Oracle 11g & SqlServer & postgresql & å›½äº§ç­‰æ›´å¤šæ•°æ®åº“
- ç¼“存:Redis
## æŠ€æœ¯æ–‡æ¡£
- åœ¨çº¿æ¼”示 ï¼š  [http://boot.jeecg.com](http://boot.jeecg.com)
- åœ¨çº¿æ–‡æ¡£ï¼š  [http://doc.jeecg.com](http://doc.jeecg.com)
- å¸¸è§é—®é¢˜ï¼š  [http://jeecg.com/doc/qa](http://jeecg.com/doc/qa)
- QQ交流群 ï¼š â‘¤860162132、④774126647(满)、③816531124(满)、②769925425(满)、①284271917(满)
## ä¸“项文档
#### ä¸€ã€æŸ¥è¯¢è¿‡æ»¤å™¨ç”¨æ³•
```
QueryWrapper<?> queryWrapper = QueryGenerator.initQueryWrapper(?, req.getParameterMap());
```
代码示例:
```
    @GetMapping(value = "/list")
    public Result<IPage<JeecgDemo>> list(JeecgDemo jeecgDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
            HttpServletRequest req) {
        Result<IPage<JeecgDemo>> result = new Result<IPage<JeecgDemo>>();
        //调用QueryGenerator的initQueryWrapper
        QueryWrapper<JeecgDemo> queryWrapper = QueryGenerator.initQueryWrapper(jeecgDemo, req.getParameterMap());
        Page<JeecgDemo> page = new Page<JeecgDemo>(pageNo, pageSize);
        IPage<JeecgDemo> pageList = jeecgDemoService.page(page, queryWrapper);
        result.setSuccess(true);
        result.setResult(pageList);
        return result;
    }
```
- æŸ¥è¯¢è§„则 (本规则不适用于高级查询,高级查询有自己对应的查询类型可以选择 )
| æŸ¥è¯¢æ¨¡å¼           | ç”¨æ³•    | è¯´æ˜Ž                         |
|---------- |-------------------------------------------------------|------------------|
| æ¨¡ç³ŠæŸ¥è¯¢     | æ”¯æŒå·¦å³æ¨¡ç³Šå’Œå…¨æ¨¡ç³Š  éœ€è¦åœ¨æŸ¥è¯¢è¾“入框内前或后带\*或是前后全部带\* |    |
| å–非查询     | åœ¨æŸ¥è¯¢è¾“入框前面输入! åˆ™æŸ¥è¯¢è¯¥å­—段不等于输入值的数据(数值类型不支持此种查询,可以将数值字段定义为字符串类型的) |    |
| \>  \>= < <=     | åŒå–非查询 åœ¨è¾“入框前面输入对应特殊字符即表示走对应规则查询 |    |
| in查询     | è‹¥ä¼ å…¥çš„æ•°æ®å¸¦,(逗号) åˆ™è¡¨ç¤ºè¯¥æŸ¥è¯¢ä¸ºin查询 |    |
| å¤šé€‰å­—段模糊查询     | ä¸Šè¿°4 æœ‰ä¸€ä¸ªç‰¹ä¾‹ï¼Œè‹¥æŸä¸€æŸ¥è¯¢å­—段前后都带逗号 åˆ™ä¼šå°†å…¶è§†ä¸ºèµ°è¿™ç§æŸ¥è¯¢æ–¹å¼ ,该查询方式是将查询条件以逗号分割再遍历数组 å°†æ¯ä¸ªå…ƒç´ ä½œlike查询 ç”¨or拼接,例如 çŽ°åœ¨name传入值 ,a,b,c, é‚£ä¹ˆç»“æžœsql就是 name like '%a%' or name like '%b%' or name like '%c%' |    |
#### äºŒã€AutoPoi(EXCEL工具类-EasyPOI衍变升级重构版本)
  [在线文档](https://github.com/zhangdaiscott/autopoi)
#### ä¸‰ã€ä»£ç ç”Ÿæˆå™¨
> åŠŸèƒ½è¯´æ˜Žï¼š   ä¸€é”®ç”Ÿæˆçš„代码(包括:controller、service、dao、mapper、entity、vue)
 - æ¨¡æ¿ä½ç½®ï¼š src/main/resources/jeecg/code-template
 - æŠ€æœ¯æ–‡æ¡£ï¼š http://doc.jeecg.com/2043916
#### å››ã€ç¼–码排重使用示例
重复校验效果:
![输入图片说明](https://static.oschina.net/uploads/img/201904/19191836_eGkQ.png "在这里输入图片标题")
1.引入排重接口,代码如下:
```
import { duplicateCheck } from '@/api/api'
  ```
2.找到编码必填校验规则的前端代码,代码如下:
```
<a-input placeholder="请输入编码" v-decorator="['code', validatorRules.code ]"/>
code: {
            rules: [
              { required: true, message: '请输入编码!' },
              {validator: this.validateCode}
            ]
          },
  ```
3.找到rules里validator对应的方法在哪里,然后使用第一步中引入的排重校验接口.
  ä»¥ç”¨æˆ·online表单编码为示例,其中四个必传的参数有:
```
  {tableName:表名,fieldName:字段名,fieldVal:字段值,dataId:表的主键},
  ```
 å…·ä½“使用代码如下:
```
    validateCode(rule, value, callback){
        let pattern = /^[a-z|A-Z][a-z|A-Z|\d|_|-]{0,}$/;
        if(!pattern.test(value)){
          callback('编码必须以字母开头,可包含数字、下划线、横杠');
        } else {
          var params = {
            tableName: "onl_cgreport_head",
            fieldName: "code",
            fieldVal: value,
            dataId: this.model.id
          };
          duplicateCheck(params).then((res)=>{
            if(res.success){
             callback();
            }else{
              callback(res.message);
            }
          })
        }
      },
```
## docker镜像用法
  æ–‡æ¡£ï¼š http://doc.jeecg.com/2043889
 ```
注意: å¦‚果本地安装了mysql和redis,启动容器前先停掉本地服务,不然会端口冲突。
       net stop redis
       net stop mysql
 # 1.配置host
    # jeecgboot
    127.0.0.1   jeecg-boot-redis
    127.0.0.1   jeecg-boot-mysql
    127.0.0.1   jeecg-boot-system
# 2.修改项目配置文件 application.yml
    active: dev
# 3.修改application-dev.yml文件的数据库和redis链接
    ä¿®æ”¹æ•°æ®åº“连接和redis连接,将连接改成host方式
# 4.先进JAVA项目jeecg-boot根路径 maven打包
    mvn clean package
# 5.构建镜像__容器组(当你改变本地代码,也可重新构建镜像)
    docker-compose build
# 6.启动镜像__容器组(也可取代运行中的镜像)
    docker-compose up -d
# 7.访问后台项目(注意要开启swagger)
    http://localhost:8080/jeecg-boot/doc.html
```
lb-boot/db/20220506Êý¾Ý¿â±¸·Ý/lb-boot.sql
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
lb-boot/db/20220506Êý¾Ý¿â±¸·Ý/nacos.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,311 @@
/*
 Navicat Premium Data Transfer
 Source Server         : æœ¬åœ°
 Source Server Type    : MySQL
 Source Server Version : 80028
 Source Host           : localhost:3306
 Source Schema         : nacos
 Target Server Type    : MySQL
 Target Server Version : 80028
 File Encoding         : 65001
 Date: 06/05/2022 09:00:12
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for config_info
-- ----------------------------
DROP TABLE IF EXISTS `config_info`;
CREATE TABLE `config_info` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='config_info';
-- ----------------------------
-- Records of config_info
-- ----------------------------
BEGIN;
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`) VALUES (1, 'jeecg-dev.yaml', 'DEFAULT_GROUP', 'spring:\n  datasource:\n    druid:\n      stat-view-servlet:\n        enabled: true\n        loginUsername: admin\n        loginPassword: 123456\n        allow:\n      web-stat-filter:\n        enabled: true\n    dynamic:\n      druid: # å…¨å±€druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)\n        # è¿žæŽ¥æ± çš„配置信息\n        # åˆå§‹åŒ–大小,最小,最大\n        initial-size: 5\n        min-idle: 5\n        maxActive: 20\n        # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´\n        maxWait: 60000\n        # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n        timeBetweenEvictionRunsMillis: 60000\n        # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒\n        minEvictableIdleTimeMillis: 300000\n        validationQuery: SELECT 1 FROM DUAL\n        testWhileIdle: true\n        testOnBorrow: false\n        testOnReturn: false\n        # æ‰“å¼€PSCache,并且指定每个连接上PSCache的大小\n        poolPreparedStatements: true\n        maxPoolPreparedStatementPerConnectionSize: 20\n        # é…ç½®ç›‘控统计拦截的filters,去掉后监控界面sql无法统计,\'wall\'用于防火墙\n        filters: stat,wall,slf4j\n        # é€šè¿‡connectProperties属性来打开mergeSql功能;慢SQL记录\n        connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n\n      datasource:\n        master:\n          url: jdbc:mysql://lb-boot-mysql:3306/lb-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\n          username: root\n          password: root\n          driver-class-name: com.mysql.cj.jdbc.Driver\n          # å¤šæ•°æ®æºé…ç½®\n          #multi-datasource1:\n          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\n          #username: root\n          #password: root\n          #driver-class-name: com.mysql.cj.jdbc.Driver\n  #redis é…ç½®\n  redis:\n    database: 0\n    host: lb-boot-redis\n    lettuce:\n      pool:\n        max-active: 8   #最大连接数据库连接数,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n        max-idle: 8     #最大等待连接中的数量,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。\n        min-idle: 0     #最小等待连接中的数量,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n      shutdown-timeout: 100ms\n    password:\n    port: 6379\n  #rabbitmq配置\n  rabbitmq:\n    host: 127.0.0.1\n    username: guest\n    password: guest\n    port: 5672\n    publisher-confirms: true\n    publisher-returns: true\n    virtual-host: /\n    listener:\n      simple:\n        acknowledge-mode: manual\n        #消费者的最小数量\n        concurrency: 1\n        #消费者的最大数量\n        max-concurrency: 1\n        #是否支持重试\n        retry:\n          enabled: true\n#jeecg专用配置\nminidao :\n  base-package: org.jeecg.modules.jmreport.*\njeecg :\n  # ç­¾åå¯†é’¥ä¸²(前后端要一致,正式发布请自行修改)\n  signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a\n  # æœ¬åœ°ï¼šlocal\\Minio:minio\\阿里云:alioss\n  uploadType: local\n  path :\n    #文件上传根目录 è®¾ç½®\n    upload: D://opt//upFiles\n    #webapp文件路径\n    webapp: D://opt//webapp\n  shiro:\n    excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**\n  #阿里云oss存储配置\n  oss:\n    endpoint: oss-cn-beijing.aliyuncs.com\n    accessKey: ??\n    secretKey: ??\n    bucketName: jeecgdev\n    staticDomain: ??\n  # ElasticSearch 6设置\n  elasticsearch:\n    cluster-name: jeecg-ES\n    cluster-nodes: 127.0.0.1:9200\n    check-enabled: false\n  # è¡¨å•设计器配置\n  desform:\n    # ä¸»é¢˜é¢œè‰²ï¼ˆä»…支持 16进制颜色代码)\n    theme-color: \"#1890ff\"\n    # æ–‡ä»¶ã€å›¾ç‰‡ä¸Šä¼ æ–¹å¼ï¼Œå¯é€‰é¡¹ï¼šqiniu(七牛云)、system(跟随系统配置)\n    upload-type: system\n    map:\n      # é…ç½®ç™¾åº¦åœ°å›¾çš„AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home\n      baidu: ??\n  # åœ¨çº¿é¢„览文件服务器地址配置\n  file-view-domain: 127.0.0.1:8012\n  # minio文件上传\n  minio:\n    minio_url: http://minio.jeecg.com\n    minio_name: ??\n    minio_pass: ??\n    bucketName: otatest\n  #大屏报表参数设置\n  jmreport:\n    mode: dev\n    #是否需要校验token\n    is_verify_token: false\n    #必须校验方法\n    verify_methods: remove,delete,save,add,update\n  #Wps在线文档\n  wps:\n    domain: https://wwo.wps.cn/office/\n    appid: ??\n    appsecret: ??\n  #xxl-job配置\n  xxljob:\n    enabled: false\n    adminAddresses: http://lb-boot-xxljob:9080/xxl-job-admin\n    appname: ${spring.application.name}\n    accessToken: \'\'\n    logPath: logs/jeecg/job/jobhandler/\n    logRetentionDays: 30\n   #自定义路由配置 yml nacos database\n  route:\n    config:\n      data-id: jeecg-gateway-router\n      group: DEFAULT_GROUP\n      data-type: database\n  #分布式锁配置\n  redisson:\n    address: lb-boot-redis:6379\n    password:\n    type: STANDALONE\n    enabled: true\n#Mybatis输出sql日志\nlogging:\n  level:\n    org.jeecg.modules.system.mapper : info\n#cas单点登录\ncas:\n  prefixUrl: http://localhost:8888/cas\n#swagger\nknife4j:\n  #开启生产环境屏蔽\n  production: false\n  basic:\n    enable: false\n    username: jeecg\n    password: jeecg1314\n\n#第三方登录\njustauth:\n  enabled: true\n  type:\n    GITHUB:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/github/callback\n    WECHAT_ENTERPRISE:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/wechat_enterprise/callback\n      agent-id: 1000002\n    DINGTALK:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/dingtalk/callback\n  cache:\n    type: default\n    prefix: \'demo::\'\n    timeout: 1h\n#第三方APP对接\nthird-app:\n  enabled: false\n  type:\n    #企业微信\n    WECHAT_ENTERPRISE:\n      enabled: false\n      #CORP_ID\n      client-id: ??\n      #SECRET\n      client-secret: ??\n      agent-id: ??\n      #自建应用秘钥(新版企微需要配置)\n      # agent-app-secret: ??\n    #钉钉\n    DINGTALK:\n      enabled: false\n      # appKey\n      client-id: ??\n      # appSecret\n      client-secret: ??\n      agent-id: ??', '5e6a666311eeed333a6e41d18b5a6b76', '2021-03-03 13:01:11', '2022-03-31 06:35:26', NULL, '127.0.0.1', '', '', '', '', '', 'yaml', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`) VALUES (2, 'jeecg.yaml', 'DEFAULT_GROUP', 'server:\n  tomcat:\n    max-swallow-size: -1\n  error:\n    include-exception: true\n    include-stacktrace: ALWAYS\n    include-message: ALWAYS\n  compression:\n    enabled: true\n    min-response-size: 1024\n    mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*\nmanagement:\n  health:\n    mail:\n      enabled: false\n  endpoints:\n    web:\n      exposure:\n        include: \"*\" #暴露所有节点\n    health:\n      sensitive: true #关闭过滤敏感信息\n  endpoint:\n    health:\n      show-details: ALWAYS  #显示详细信息\nspring:\n  servlet:\n    multipart:\n      max-file-size: 10MB\n      max-request-size: 10MB\n  mail:\n    host: smtp.163.com\n    username: jeecgos@163.com\n    password: ??\n    properties:\n      mail:\n        smtp:\n          auth: true\n          starttls:\n            enable: true\n            required: true\n  ## quartz定时任务,采用数据库方式\n  quartz:\n    job-store-type: jdbc\n    initialize-schema: embedded\n    #设置自动启动,默认为 true\n    auto-startup: false\n    #启动时更新己存在的Job\n    overwrite-existing-jobs: true\n    properties:\n      org:\n        quartz:\n          scheduler:\n            instanceName: MyScheduler\n            instanceId: AUTO\n          jobStore:\n            class: org.quartz.impl.jdbcjobstore.JobStoreTX\n            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate\n            tablePrefix: QRTZ_\n            isClustered: true\n            misfireThreshold: 60000\n            clusterCheckinInterval: 10000\n          threadPool:\n            class: org.quartz.simpl.SimpleThreadPool\n            threadCount: 10\n            threadPriority: 5\n            threadsInheritContextClassLoaderOfInitializingThread: true\n  #json æ—¶é—´æˆ³ç»Ÿä¸€è½¬æ¢\n  jackson:\n    date-format:   yyyy-MM-dd HH:mm:ss\n    time-zone:   GMT+8\n  aop:\n    proxy-target-class: true\n  activiti:\n    check-process-definitions: false\n    #启用作业执行器\n    async-executor-activate: false\n    #启用异步执行器\n    job-executor-activate: false\n  jpa:\n    open-in-view: false\n  #配置freemarker\n  freemarker:\n    # è®¾ç½®æ¨¡æ¿åŽç¼€å\n    suffix: .ftl\n    # è®¾ç½®æ–‡æ¡£ç±»åž‹\n    content-type: text/html\n    # è®¾ç½®é¡µé¢ç¼–码格式\n    charset: UTF-8\n    # è®¾ç½®é¡µé¢ç¼“å­˜\n    cache: false\n    prefer-file-system-access: false\n    # è®¾ç½®ftl文件路径\n    template-loader-path:\n      - classpath:/templates\n  # è®¾ç½®é™æ€æ–‡ä»¶è·¯å¾„,js,css等\n  mvc:\n    static-path-pattern: /**\n  resource:\n    static-locations: classpath:/static/,classpath:/public/\n  autoconfigure:\n    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure\n#mybatis plus è®¾ç½®\nmybatis-plus:\n  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml\n  global-config:\n    # å…³é—­MP3.0自带的banner\n    banner: false\n    db-config:\n      #主键类型  0:\"数据库ID自增\",1:\"该类型为未设置主键类型\", 2:\"用户输入ID\",3:\"全局唯一ID (数字类型唯一ID)\", 4:\"全局唯一ID UUID\",5:\"字符串全局唯一ID (idWorker çš„字符串表示)\";\n      id-type: ASSIGN_ID\n      # é»˜è®¤æ•°æ®åº“表下划线命名\n      table-underline: true\n  configuration:\n    # è¿™ä¸ªé…ç½®ä¼šå°†æ‰§è¡Œçš„sql打印出来,在开发或测试的时候可以用\n    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\n    # è¿”回类型为Map,显示null对应的字段\n    call-setters-on-nulls: true', '411f9c73fc519225add2f7c992279f6f', '2021-03-03 13:01:42', '2021-06-28 07:13:40', NULL, '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', '');
INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `app_name`, `tenant_id`, `c_desc`, `c_use`, `effect`, `type`, `c_schema`) VALUES (3, 'jeecg-gateway-router.json', 'DEFAULT_GROUP', '[{\r\n  \"id\": \"jeecg-system\",\r\n  \"order\": 0,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/sys/**\",\r\n      \"_genkey_1\": \"/eoa/**\",\r\n      \"_genkey_2\": \"/joa/**\",\r\n      \"_genkey_3\": \"/jmreport/**\",\r\n      \"_genkey_4\": \"/bigscreen/**\",\r\n      \"_genkey_5\": \"/desform/**\",\r\n      \"_genkey_6\": \"/online/**\",\r\n      \"_genkey_8\": \"/act/**\",\r\n      \"_genkey_9\": \"/plug-in/**\",\r\n      \"_genkey_10\": \"/generic/**\",\r\n      \"_genkey_11\": \"/v1/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb://jeecg-system\"\r\n}, {\r\n  \"id\": \"jeecg-demo\",\r\n  \"order\": 1,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/mock/**\",\r\n      \"_genkey_1\": \"/test/**\",\r\n      \"_genkey_2\": \"/bigscreen/template1/**\",\r\n      \"_genkey_3\": \"/bigscreen/template2/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb://jeecg-demo\"\r\n}, {\r\n  \"id\": \"jeecg-system-websocket\",\r\n  \"order\": 2,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/websocket/**\",\r\n      \"_genkey_1\": \"/eoaSocket/**\",\r\n      \"_genkey_2\": \"/newsWebsocket/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb:ws://jeecg-system\"\r\n}, {\r\n  \"id\": \"jeecg-demo-websocket\",\r\n  \"order\": 3,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/vxeSocket/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb:ws://jeecg-demo\"\r\n}]', '82f4033ef6a51ce2ab6ce505be1b729a', '2021-03-03 13:02:14', '2021-03-03 13:02:14', NULL, '172.17.0.1', '', '', NULL, NULL, NULL, 'json', NULL);
COMMIT;
-- ----------------------------
-- Table structure for config_info_aggr
-- ----------------------------
DROP TABLE IF EXISTS `config_info_aggr`;
CREATE TABLE `config_info_aggr` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='增加租户字段';
-- ----------------------------
-- Records of config_info_aggr
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for config_info_beta
-- ----------------------------
DROP TABLE IF EXISTS `config_info_beta`;
CREATE TABLE `config_info_beta` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='config_info_beta';
-- ----------------------------
-- Records of config_info_beta
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for config_info_tag
-- ----------------------------
DROP TABLE IF EXISTS `config_info_tag`;
CREATE TABLE `config_info_tag` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='config_info_tag';
-- ----------------------------
-- Records of config_info_tag
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for config_tags_relation
-- ----------------------------
DROP TABLE IF EXISTS `config_tags_relation`;
CREATE TABLE `config_tags_relation` (
  `id` bigint NOT NULL COMMENT 'id',
  `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`) USING BTREE,
  UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`) USING BTREE,
  KEY `idx_tenant_id` (`tenant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='config_tag_relation';
-- ----------------------------
-- Records of config_tags_relation
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for group_capacity
-- ----------------------------
DROP TABLE IF EXISTS `group_capacity`;
CREATE TABLE `group_capacity` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_group_id` (`group_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='集群、各Group容量信息表';
-- ----------------------------
-- Records of group_capacity
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for his_config_info
-- ----------------------------
DROP TABLE IF EXISTS `his_config_info`;
CREATE TABLE `his_config_info` (
  `id` bigint unsigned NOT NULL,
  `nid` bigint unsigned NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin,
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`) USING BTREE,
  KEY `idx_gmt_create` (`gmt_create`) USING BTREE,
  KEY `idx_gmt_modified` (`gmt_modified`) USING BTREE,
  KEY `idx_did` (`data_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='多租户改造';
-- ----------------------------
-- Records of his_config_info
-- ----------------------------
BEGIN;
INSERT INTO `his_config_info` (`id`, `nid`, `data_id`, `group_id`, `app_name`, `content`, `md5`, `gmt_create`, `gmt_modified`, `src_user`, `src_ip`, `op_type`, `tenant_id`) VALUES (1, 3, 'jeecg-dev.yaml', 'DEFAULT_GROUP', '', 'spring:\n  datasource:\n    druid:\n      stat-view-servlet:\n        enabled: true\n        loginUsername: admin\n        loginPassword: 123456\n        allow:\n      web-stat-filter:\n        enabled: true\n    dynamic:\n      druid: # å…¨å±€druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)\n        # è¿žæŽ¥æ± çš„配置信息\n        # åˆå§‹åŒ–大小,最小,最大\n        initial-size: 5\n        min-idle: 5\n        maxActive: 20\n        # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´\n        maxWait: 60000\n        # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n        timeBetweenEvictionRunsMillis: 60000\n        # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒\n        minEvictableIdleTimeMillis: 300000\n        validationQuery: SELECT 1 FROM DUAL\n        testWhileIdle: true\n        testOnBorrow: false\n        testOnReturn: false\n        # æ‰“å¼€PSCache,并且指定每个连接上PSCache的大小\n        poolPreparedStatements: true\n        maxPoolPreparedStatementPerConnectionSize: 20\n        # é…ç½®ç›‘控统计拦截的filters,去掉后监控界面sql无法统计,\'wall\'用于防火墙\n        filters: stat,wall,slf4j\n        # é€šè¿‡connectProperties属性来打开mergeSql功能;慢SQL记录\n        connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n\n      datasource:\n        master:\n          url: jdbc:mysql://lb-boot-mysql:3306/lb-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\n          username: root\n          password: root\n          driver-class-name: com.mysql.cj.jdbc.Driver\n          # å¤šæ•°æ®æºé…ç½®\n          #multi-datasource1:\n          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\n          #username: root\n          #password: root\n          #driver-class-name: com.mysql.cj.jdbc.Driver\n  #redis é…ç½®\n  redis:\n    database: 0\n    host: lb-boot-redis\n    lettuce:\n      pool:\n        max-active: 8   #最大连接数据库连接数,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n        max-idle: 8     #最大等待连接中的数量,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。\n        min-idle: 0     #最小等待连接中的数量,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n      shutdown-timeout: 100ms\n    password:\n    port: 6379\n  #rabbitmq配置\n  rabbitmq:\n    host: 127.0.0.1\n    username: guest\n    password: guest\n    port: 5672\n    publisher-confirms: true\n    publisher-returns: true\n    virtual-host: /\n    listener:\n      simple:\n        acknowledge-mode: manual\n        #消费者的最小数量\n        concurrency: 1\n        #消费者的最大数量\n        max-concurrency: 1\n        #是否支持重试\n        retry:\n          enabled: true\n#jeecg专用配置\nminidao :\n  base-package: org.jeecg.modules.jmreport.*\njeecg :\n  # ç­¾åå¯†é’¥ä¸²(前后端要一致,正式发布请自行修改)\n  signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a\n  # æœ¬åœ°ï¼šlocal\\Minio:minio\\阿里云:alioss\n  uploadType: local\n  path :\n    #文件上传根目录 è®¾ç½®\n    upload: /opt/upFiles\n    #webapp文件路径\n    webapp: /opt/webapp\n  shiro:\n    excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**\n  #阿里云oss存储配置\n  oss:\n    endpoint: oss-cn-beijing.aliyuncs.com\n    accessKey: ??\n    secretKey: ??\n    bucketName: jeecgdev\n    staticDomain: ??\n  # ElasticSearch 6设置\n  elasticsearch:\n    cluster-name: jeecg-ES\n    cluster-nodes: 127.0.0.1:9200\n    check-enabled: false\n  # è¡¨å•设计器配置\n  desform:\n    # ä¸»é¢˜é¢œè‰²ï¼ˆä»…支持 16进制颜色代码)\n    theme-color: \"#1890ff\"\n    # æ–‡ä»¶ã€å›¾ç‰‡ä¸Šä¼ æ–¹å¼ï¼Œå¯é€‰é¡¹ï¼šqiniu(七牛云)、system(跟随系统配置)\n    upload-type: system\n    map:\n      # é…ç½®ç™¾åº¦åœ°å›¾çš„AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home\n      baidu: ??\n  # åœ¨çº¿é¢„览文件服务器地址配置\n  file-view-domain: 127.0.0.1:8012\n  # minio文件上传\n  minio:\n    minio_url: http://minio.jeecg.com\n    minio_name: ??\n    minio_pass: ??\n    bucketName: otatest\n  #大屏报表参数设置\n  jmreport:\n    mode: dev\n    #是否需要校验token\n    is_verify_token: false\n    #必须校验方法\n    verify_methods: remove,delete,save,add,update\n  #Wps在线文档\n  wps:\n    domain: https://wwo.wps.cn/office/\n    appid: ??\n    appsecret: ??\n  #xxl-job配置\n  xxljob:\n    enabled: false\n    adminAddresses: http://lb-boot-xxljob:9080/xxl-job-admin\n    appname: ${spring.application.name}\n    accessToken: \'\'\n    logPath: logs/jeecg/job/jobhandler/\n    logRetentionDays: 30\n   #自定义路由配置 yml nacos database\n  route:\n    config:\n      data-id: jeecg-gateway-router\n      group: DEFAULT_GROUP\n      data-type: database\n  #分布式锁配置\n  redisson:\n    address: lb-boot-redis:6379\n    password:\n    type: STANDALONE\n    enabled: true\n#Mybatis输出sql日志\nlogging:\n  level:\n    org.jeecg.modules.system.mapper : info\n#cas单点登录\ncas:\n  prefixUrl: http://localhost:8888/cas\n#swagger\nknife4j:\n  #开启生产环境屏蔽\n  production: false\n  basic:\n    enable: false\n    username: jeecg\n    password: jeecg1314\n\n#第三方登录\njustauth:\n  enabled: true\n  type:\n    GITHUB:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/github/callback\n    WECHAT_ENTERPRISE:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/wechat_enterprise/callback\n      agent-id: 1000002\n    DINGTALK:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/dingtalk/callback\n  cache:\n    type: default\n    prefix: \'demo::\'\n    timeout: 1h\n#第三方APP对接\nthird-app:\n  enabled: false\n  type:\n    #企业微信\n    WECHAT_ENTERPRISE:\n      enabled: false\n      #CORP_ID\n      client-id: ??\n      #SECRET\n      client-secret: ??\n      agent-id: ??\n      #自建应用秘钥(新版企微需要配置)\n      # agent-app-secret: ??\n    #钉钉\n    DINGTALK:\n      enabled: false\n      # appKey\n      client-id: ??\n      # appSecret\n      client-secret: ??\n      agent-id: ??', 'f4adb3b7667b140706d989a99181dbb1', '2010-05-05 00:00:00', '2022-03-31 06:35:26', NULL, '127.0.0.1', 'U', '');
COMMIT;
-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions` (
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `resource` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  UNIQUE KEY `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of permissions
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles` (
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  UNIQUE KEY `uk_username_role` (`username`,`role`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of roles
-- ----------------------------
BEGIN;
INSERT INTO `roles` (`username`, `role`) VALUES ('nacos', 'ROLE_ADMIN');
COMMIT;
-- ----------------------------
-- Table structure for tenant_capacity
-- ----------------------------
DROP TABLE IF EXISTS `tenant_capacity`;
CREATE TABLE `tenant_capacity` (
  `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  `usage` int unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  `max_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  `max_aggr_size` int unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_id` (`tenant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='租户容量信息表';
-- ----------------------------
-- Records of tenant_capacity
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for tenant_info
-- ----------------------------
DROP TABLE IF EXISTS `tenant_info`;
CREATE TABLE `tenant_info` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`) USING BTREE,
  KEY `idx_tenant_id` (`tenant_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_bin ROW_FORMAT=DYNAMIC COMMENT='tenant_info';
-- ----------------------------
-- Records of tenant_info
-- ----------------------------
BEGIN;
COMMIT;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `enabled` tinyint(1) NOT NULL,
  PRIMARY KEY (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
-- ----------------------------
-- Records of users
-- ----------------------------
BEGIN;
INSERT INTO `users` (`username`, `password`, `enabled`) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
lb-boot/db/Dockerfile
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
FROM mysql:8.0.19
MAINTAINER jeecgos@163.com
ENV TZ=Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
COPY ./tables_nacos.sql /docker-entrypoint-initdb.d
COPY ./jeecgboot-mysql-5.7.sql /docker-entrypoint-initdb.d
COPY ./tables_xxl_job.sql /docker-entrypoint-initdb.d
lb-boot/db/jeecgboot-mysql-5.7.sql
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
lb-boot/db/jeecgboot-oracle11g.sql
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
lb-boot/db/jeecgboot-sqlserver2017.sql
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
lb-boot/db/lb-boot.sql
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
lb-boot/db/tables_nacos.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,253 @@
CREATE database if NOT EXISTS `nacos` default character set utf8mb4 collate utf8mb4_general_ci;
use `nacos`;
/*
 Navicat Premium Data Transfer
 Source Server         : mysql5.7
 Source Server Type    : MySQL
 Source Server Version : 50727
 Source Host           : 127.0.0.1:3306
 Source Schema         : nacos
 Target Server Type    : MySQL
 Target Server Version : 50727
 File Encoding         : 65001
 Date: 20/12/2021 11:16:39
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for config_info
-- ----------------------------
DROP TABLE IF EXISTS `config_info`;
CREATE TABLE `config_info`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  `c_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `c_use` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `effect` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `c_schema` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfo_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of config_info
-- ----------------------------
INSERT INTO `config_info` VALUES (1, 'jeecg-dev.yaml', 'DEFAULT_GROUP', 'spring:\n  datasource:\n    druid:\n      stat-view-servlet:\n        enabled: true\n        loginUsername: admin\n        loginPassword: 123456\n        allow:\n      web-stat-filter:\n        enabled: true\n    dynamic:\n      druid: # å…¨å±€druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)\n        # è¿žæŽ¥æ± çš„配置信息\n        # åˆå§‹åŒ–大小,最小,最大\n        initial-size: 5\n        min-idle: 5\n        maxActive: 20\n        # é…ç½®èŽ·å–è¿žæŽ¥ç­‰å¾…è¶…æ—¶çš„æ—¶é—´\n        maxWait: 60000\n        # é…ç½®é—´éš”多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒\n        timeBetweenEvictionRunsMillis: 60000\n        # é…ç½®ä¸€ä¸ªè¿žæŽ¥åœ¨æ± ä¸­æœ€å°ç”Ÿå­˜çš„æ—¶é—´ï¼Œå•位是毫秒\n        minEvictableIdleTimeMillis: 300000\n        validationQuery: SELECT 1 FROM DUAL\n        testWhileIdle: true\n        testOnBorrow: false\n        testOnReturn: false\n        # æ‰“å¼€PSCache,并且指定每个连接上PSCache的大小\n        poolPreparedStatements: true\n        maxPoolPreparedStatementPerConnectionSize: 20\n        # é…ç½®ç›‘控统计拦截的filters,去掉后监控界面sql无法统计,\'wall\'用于防火墙\n        filters: stat,wall,slf4j\n        # é€šè¿‡connectProperties属性来打开mergeSql功能;慢SQL记录\n        connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n\n      datasource:\n        master:\n          url: jdbc:mysql://lb-boot-mysql:3306/lb-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\n          username: root\n          password: root\n          driver-class-name: com.mysql.cj.jdbc.Driver\n          # å¤šæ•°æ®æºé…ç½®\n          #multi-datasource1:\n          #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai\n          #username: root\n          #password: root\n          #driver-class-name: com.mysql.cj.jdbc.Driver\n  #redis é…ç½®\n  redis:\n    database: 0\n    host: lb-boot-redis\n    lettuce:\n      pool:\n        max-active: 8   #最大连接数据库连接数,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n        max-idle: 8     #最大等待连接中的数量,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n        max-wait: -1ms  #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。\n        min-idle: 0     #最小等待连接中的数量,设 0 ä¸ºæ²¡æœ‰é™åˆ¶\n      shutdown-timeout: 100ms\n    password:\n    port: 6379\n  #rabbitmq配置\n  rabbitmq:\n    host: 127.0.0.1\n    username: guest\n    password: guest\n    port: 5672\n    publisher-confirms: true\n    publisher-returns: true\n    virtual-host: /\n    listener:\n      simple:\n        acknowledge-mode: manual\n        #消费者的最小数量\n        concurrency: 1\n        #消费者的最大数量\n        max-concurrency: 1\n        #是否支持重试\n        retry:\n          enabled: true\n#jeecg专用配置\nminidao :\n  base-package: org.jeecg.modules.jmreport.*\njeecg :\n  # ç­¾åå¯†é’¥ä¸²(前后端要一致,正式发布请自行修改)\n  signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a\n  # æœ¬åœ°ï¼šlocal\\Minio:minio\\阿里云:alioss\n  uploadType: local\n  path :\n    #文件上传根目录 è®¾ç½®\n    upload: /opt/upFiles\n    #webapp文件路径\n    webapp: /opt/webapp\n  shiro:\n    excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/category/**,/visual/**,/map/**,/jmreport/bigscreen2/**\n  #阿里云oss存储配置\n  oss:\n    endpoint: oss-cn-beijing.aliyuncs.com\n    accessKey: ??\n    secretKey: ??\n    bucketName: jeecgdev\n    staticDomain: ??\n  # ElasticSearch 6设置\n  elasticsearch:\n    cluster-name: jeecg-ES\n    cluster-nodes: 127.0.0.1:9200\n    check-enabled: false\n  # è¡¨å•设计器配置\n  desform:\n    # ä¸»é¢˜é¢œè‰²ï¼ˆä»…支持 16进制颜色代码)\n    theme-color: \"#1890ff\"\n    # æ–‡ä»¶ã€å›¾ç‰‡ä¸Šä¼ æ–¹å¼ï¼Œå¯é€‰é¡¹ï¼šqiniu(七牛云)、system(跟随系统配置)\n    upload-type: system\n    map:\n      # é…ç½®ç™¾åº¦åœ°å›¾çš„AK,申请地址:https://lbs.baidu.com/apiconsole/key?application=key#/home\n      baidu: ??\n  # åœ¨çº¿é¢„览文件服务器地址配置\n  file-view-domain: 127.0.0.1:8012\n  # minio文件上传\n  minio:\n    minio_url: http://minio.jeecg.com\n    minio_name: ??\n    minio_pass: ??\n    bucketName: otatest\n  #大屏报表参数设置\n  jmreport:\n    mode: dev\n    #是否需要校验token\n    is_verify_token: false\n    #必须校验方法\n    verify_methods: remove,delete,save,add,update\n  #Wps在线文档\n  wps:\n    domain: https://wwo.wps.cn/office/\n    appid: ??\n    appsecret: ??\n  #xxl-job配置\n  xxljob:\n    enabled: false\n    adminAddresses: http://lb-boot-xxljob:9080/xxl-job-admin\n    appname: ${spring.application.name}\n    accessToken: \'\'\n    logPath: logs/jeecg/job/jobhandler/\n    logRetentionDays: 30\n   #自定义路由配置 yml nacos database\n  route:\n    config:\n      data-id: jeecg-gateway-router\n      group: DEFAULT_GROUP\n      data-type: database\n  #分布式锁配置\n  redisson:\n    address: lb-boot-redis:6379\n    password:\n    type: STANDALONE\n    enabled: true\n#Mybatis输出sql日志\nlogging:\n  level:\n    org.jeecg.modules.system.mapper : info\n#cas单点登录\ncas:\n  prefixUrl: http://localhost:8888/cas\n#swagger\nknife4j:\n  #开启生产环境屏蔽\n  production: false\n  basic:\n    enable: false\n    username: jeecg\n    password: jeecg1314\n\n#第三方登录\njustauth:\n  enabled: true\n  type:\n    GITHUB:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/github/callback\n    WECHAT_ENTERPRISE:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/wechat_enterprise/callback\n      agent-id: 1000002\n    DINGTALK:\n      client-id: ??\n      client-secret: ??\n      redirect-uri: http://sso.test.com:8080/jeecg-boot/thirdLogin/dingtalk/callback\n  cache:\n    type: default\n    prefix: \'demo::\'\n    timeout: 1h\n#第三方APP对接\nthird-app:\n  enabled: false\n  type:\n    #企业微信\n    WECHAT_ENTERPRISE:\n      enabled: false\n      #CORP_ID\n      client-id: ??\n      #SECRET\n      client-secret: ??\n      agent-id: ??\n      #自建应用秘钥(新版企微需要配置)\n      # agent-app-secret: ??\n    #钉钉\n    DINGTALK:\n      enabled: false\n      # appKey\n      client-id: ??\n      # appSecret\n      client-secret: ??\n      agent-id: ??', '8b05ed4ee8ecbc4e7a4d425190b60273', '2021-03-03 13:01:11', '2021-08-17 10:14:56', NULL, '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', '');
INSERT INTO `config_info` VALUES (2, 'jeecg.yaml', 'DEFAULT_GROUP', 'server:\n  tomcat:\n    max-swallow-size: -1\n  error:\n    include-exception: true\n    include-stacktrace: ALWAYS\n    include-message: ALWAYS\n  compression:\n    enabled: true\n    min-response-size: 1024\n    mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*\nmanagement:\n  health:\n    mail:\n      enabled: false\n  endpoints:\n    web:\n      exposure:\n        include: \"*\" #暴露所有节点\n    health:\n      sensitive: true #关闭过滤敏感信息\n  endpoint:\n    health:\n      show-details: ALWAYS  #显示详细信息\nspring:\n  servlet:\n    multipart:\n      max-file-size: 10MB\n      max-request-size: 10MB\n  mail:\n    host: smtp.163.com\n    username: jeecgos@163.com\n    password: ??\n    properties:\n      mail:\n        smtp:\n          auth: true\n          starttls:\n            enable: true\n            required: true\n  ## quartz定时任务,采用数据库方式\n  quartz:\n    job-store-type: jdbc\n    initialize-schema: embedded\n    #设置自动启动,默认为 true\n    auto-startup: false\n    #启动时更新己存在的Job\n    overwrite-existing-jobs: true\n    properties:\n      org:\n        quartz:\n          scheduler:\n            instanceName: MyScheduler\n            instanceId: AUTO\n          jobStore:\n            class: org.quartz.impl.jdbcjobstore.JobStoreTX\n            driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate\n            tablePrefix: QRTZ_\n            isClustered: true\n            misfireThreshold: 60000\n            clusterCheckinInterval: 10000\n          threadPool:\n            class: org.quartz.simpl.SimpleThreadPool\n            threadCount: 10\n            threadPriority: 5\n            threadsInheritContextClassLoaderOfInitializingThread: true\n  #json æ—¶é—´æˆ³ç»Ÿä¸€è½¬æ¢\n  jackson:\n    date-format:   yyyy-MM-dd HH:mm:ss\n    time-zone:   GMT+8\n  aop:\n    proxy-target-class: true\n  activiti:\n    check-process-definitions: false\n    #启用作业执行器\n    async-executor-activate: false\n    #启用异步执行器\n    job-executor-activate: false\n  jpa:\n    open-in-view: false\n  #配置freemarker\n  freemarker:\n    # è®¾ç½®æ¨¡æ¿åŽç¼€å\n    suffix: .ftl\n    # è®¾ç½®æ–‡æ¡£ç±»åž‹\n    content-type: text/html\n    # è®¾ç½®é¡µé¢ç¼–码格式\n    charset: UTF-8\n    # è®¾ç½®é¡µé¢ç¼“å­˜\n    cache: false\n    prefer-file-system-access: false\n    # è®¾ç½®ftl文件路径\n    template-loader-path:\n      - classpath:/templates\n  # è®¾ç½®é™æ€æ–‡ä»¶è·¯å¾„,js,css等\n  mvc:\n    static-path-pattern: /**\n  resource:\n    static-locations: classpath:/static/,classpath:/public/\n  autoconfigure:\n    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure\n#mybatis plus è®¾ç½®\nmybatis-plus:\n  mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml\n  global-config:\n    # å…³é—­MP3.0自带的banner\n    banner: false\n    db-config:\n      #主键类型  0:\"数据库ID自增\",1:\"该类型为未设置主键类型\", 2:\"用户输入ID\",3:\"全局唯一ID (数字类型唯一ID)\", 4:\"全局唯一ID UUID\",5:\"字符串全局唯一ID (idWorker çš„字符串表示)\";\n      id-type: ASSIGN_ID\n      # é»˜è®¤æ•°æ®åº“表下划线命名\n      table-underline: true\n  configuration:\n    # è¿™ä¸ªé…ç½®ä¼šå°†æ‰§è¡Œçš„sql打印出来,在开发或测试的时候可以用\n    #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl\n    # è¿”回类型为Map,显示null对应的字段\n    call-setters-on-nulls: true', '411f9c73fc519225add2f7c992279f6f', '2021-03-03 13:01:42', '2021-06-28 07:13:40', NULL, '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', '');
INSERT INTO `config_info` VALUES (3, 'jeecg-gateway-router.json', 'DEFAULT_GROUP', '[{\r\n  \"id\": \"jeecg-system\",\r\n  \"order\": 0,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/sys/**\",\r\n      \"_genkey_1\": \"/eoa/**\",\r\n      \"_genkey_2\": \"/joa/**\",\r\n      \"_genkey_3\": \"/jmreport/**\",\r\n      \"_genkey_4\": \"/bigscreen/**\",\r\n      \"_genkey_5\": \"/desform/**\",\r\n      \"_genkey_6\": \"/online/**\",\r\n      \"_genkey_8\": \"/act/**\",\r\n      \"_genkey_9\": \"/plug-in/**\",\r\n      \"_genkey_10\": \"/generic/**\",\r\n      \"_genkey_11\": \"/v1/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb://jeecg-system\"\r\n}, {\r\n  \"id\": \"jeecg-demo\",\r\n  \"order\": 1,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/mock/**\",\r\n      \"_genkey_1\": \"/test/**\",\r\n      \"_genkey_2\": \"/bigscreen/template1/**\",\r\n      \"_genkey_3\": \"/bigscreen/template2/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb://jeecg-demo\"\r\n}, {\r\n  \"id\": \"jeecg-system-websocket\",\r\n  \"order\": 2,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/websocket/**\",\r\n      \"_genkey_1\": \"/eoaSocket/**\",\r\n      \"_genkey_2\": \"/newsWebsocket/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb:ws://jeecg-system\"\r\n}, {\r\n  \"id\": \"jeecg-demo-websocket\",\r\n  \"order\": 3,\r\n  \"predicates\": [{\r\n    \"name\": \"Path\",\r\n    \"args\": {\r\n      \"_genkey_0\": \"/vxeSocket/**\"\r\n    }\r\n  }],\r\n  \"filters\": [],\r\n  \"uri\": \"lb:ws://jeecg-demo\"\r\n}]', '82f4033ef6a51ce2ab6ce505be1b729a', '2021-03-03 13:02:14', '2021-03-03 13:02:14', NULL, '172.17.0.1', '', '', NULL, NULL, NULL, 'json', NULL);
-- ----------------------------
-- Table structure for config_info_aggr
-- ----------------------------
DROP TABLE IF EXISTS `config_info_aggr`;
CREATE TABLE `config_info_aggr`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `datum_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'datum_id',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT '内容',
  `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfoaggr_datagrouptenantdatum`(`data_id`, `group_id`, `tenant_id`, `datum_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '增加租户字段' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_info_beta
-- ----------------------------
DROP TABLE IF EXISTS `config_info_beta`;
CREATE TABLE `config_info_beta`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `beta_ips` varchar(1024) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'betaIps',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfobeta_datagrouptenant`(`data_id`, `group_id`, `tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_beta' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_info_tag
-- ----------------------------
DROP TABLE IF EXISTS `config_info_tag`;
CREATE TABLE `config_info_tag`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
  `tag_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_id',
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'content',
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'md5',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL COMMENT 'source user',
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'source ip',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_configinfotag_datagrouptenanttag`(`data_id`, `group_id`, `tenant_id`, `tag_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_info_tag' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for config_tags_relation
-- ----------------------------
DROP TABLE IF EXISTS `config_tags_relation`;
CREATE TABLE `config_tags_relation`  (
  `id` bigint(20) NOT NULL COMMENT 'id',
  `tag_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'tag_name',
  `tag_type` varchar(64) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tag_type',
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'data_id',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'group_id',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
  `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`nid`) USING BTREE,
  UNIQUE INDEX `uk_configtagrelation_configidtag`(`id`, `tag_name`, `tag_type`) USING BTREE,
  INDEX `idx_tenant_id`(`tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'config_tag_relation' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for group_capacity
-- ----------------------------
DROP TABLE IF EXISTS `group_capacity`;
CREATE TABLE `group_capacity`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
  `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
  `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数,,0表示使用默认值',
  `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_group_id`(`group_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '集群、各Group容量信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for his_config_info
-- ----------------------------
DROP TABLE IF EXISTS `his_config_info`;
CREATE TABLE `his_config_info`  (
  `id` bigint(64) UNSIGNED NOT NULL,
  `nid` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `group_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `app_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'app_name',
  `content` longtext CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
  `md5` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00',
  `src_user` text CHARACTER SET utf8 COLLATE utf8_bin NULL,
  `src_ip` varchar(20) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `op_type` char(10) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL,
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT '租户字段',
  PRIMARY KEY (`nid`) USING BTREE,
  INDEX `idx_gmt_create`(`gmt_create`) USING BTREE,
  INDEX `idx_gmt_modified`(`gmt_modified`) USING BTREE,
  INDEX `idx_did`(`data_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '多租户改造' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions`  (
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `resource` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `action` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  UNIQUE INDEX `uk_role_permission`(`role`, `resource`, `action`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for roles
-- ----------------------------
DROP TABLE IF EXISTS `roles`;
CREATE TABLE `roles`  (
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `role` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  UNIQUE INDEX `uk_username_role`(`username`, `role`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of roles
-- ----------------------------
INSERT INTO `roles` VALUES ('nacos', 'ROLE_ADMIN');
-- ----------------------------
-- Table structure for tenant_capacity
-- ----------------------------
DROP TABLE IF EXISTS `tenant_capacity`;
CREATE TABLE `tenant_capacity`  (
  `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  `quota` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '配额,0表示使用默认值',
  `usage` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '使用量',
  `max_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  `max_aggr_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '聚合子配置最大个数',
  `max_aggr_size` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  `max_history_count` int(10) UNSIGNED NOT NULL DEFAULT 0 COMMENT '最大变更历史数量',
  `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
  `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_tenant_id`(`tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '租户容量信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for tenant_info
-- ----------------------------
DROP TABLE IF EXISTS `tenant_info`;
CREATE TABLE `tenant_info`  (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `kp` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL COMMENT 'kp',
  `tenant_id` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_id',
  `tenant_name` varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT '' COMMENT 'tenant_name',
  `tenant_desc` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'tenant_desc',
  `create_source` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NULL DEFAULT NULL COMMENT 'create_source',
  `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`) USING BTREE,
  UNIQUE INDEX `uk_tenant_info_kptenantid`(`kp`, `tenant_id`) USING BTREE,
  INDEX `idx_tenant_id`(`tenant_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = 'tenant_info' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users`  (
  `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `password` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `enabled` tinyint(1) NOT NULL,
  PRIMARY KEY (`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
SET FOREIGN_KEY_CHECKS = 1;
lb-boot/db/tables_xxl_job.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
#
# XXL-JOB v2.2.0
# Copyright (c) 2015-present, xuxueli.
CREATE database if NOT EXISTS `xxl_job` default character set utf8mb4 collate utf8mb4_general_ci;
use `xxl_job`;
SET NAMES utf8mb4;
CREATE TABLE `xxl_job_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_cron` varchar(128) NOT NULL COMMENT '任务执行CRON',
  `job_desc` varchar(255) NOT NULL,
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  `author` varchar(64) DEFAULT NULL COMMENT '作者',
  `alarm_email` varchar(255) DEFAULT NULL COMMENT '报警邮件',
  `executor_route_strategy` varchar(50) DEFAULT NULL COMMENT '执行器路由策略',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_block_strategy` varchar(50) DEFAULT NULL COMMENT '阻塞处理策略',
  `executor_timeout` int(11) NOT NULL DEFAULT '0' COMMENT '任务执行超时时间,单位秒',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `glue_type` varchar(50) NOT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) DEFAULT NULL COMMENT 'GLUE备注',
  `glue_updatetime` datetime DEFAULT NULL COMMENT 'GLUE更新时间',
  `child_jobid` varchar(255) DEFAULT NULL COMMENT '子任务ID,多个逗号分隔',
  `trigger_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '调度状态:0-停止,1-运行',
  `trigger_last_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '上次调度时间',
  `trigger_next_time` bigint(13) NOT NULL DEFAULT '0' COMMENT '下次调度时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `job_group` int(11) NOT NULL COMMENT '执行器主键ID',
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `executor_address` varchar(255) DEFAULT NULL COMMENT '执行器地址,本次执行的地址',
  `executor_handler` varchar(255) DEFAULT NULL COMMENT '执行器任务handler',
  `executor_param` varchar(512) DEFAULT NULL COMMENT '执行器任务参数',
  `executor_sharding_param` varchar(20) DEFAULT NULL COMMENT '执行器任务分片参数,格式如 1/2',
  `executor_fail_retry_count` int(11) NOT NULL DEFAULT '0' COMMENT '失败重试次数',
  `trigger_time` datetime DEFAULT NULL COMMENT '调度-时间',
  `trigger_code` int(11) NOT NULL COMMENT '调度-结果',
  `trigger_msg` text COMMENT '调度-日志',
  `handle_time` datetime DEFAULT NULL COMMENT '执行-时间',
  `handle_code` int(11) NOT NULL COMMENT '执行-状态',
  `handle_msg` text COMMENT '执行-日志',
  `alarm_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败',
  PRIMARY KEY (`id`),
  KEY `I_trigger_time` (`trigger_time`),
  KEY `I_handle_code` (`handle_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_log_report` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `trigger_day` datetime DEFAULT NULL COMMENT '调度-时间',
  `running_count` int(11) NOT NULL DEFAULT '0' COMMENT '运行中-日志数量',
  `suc_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行成功-日志数量',
  `fail_count` int(11) NOT NULL DEFAULT '0' COMMENT '执行失败-日志数量',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_trigger_day` (`trigger_day`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_logglue` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `job_id` int(11) NOT NULL COMMENT '任务,主键ID',
  `glue_type` varchar(50) DEFAULT NULL COMMENT 'GLUE类型',
  `glue_source` mediumtext COMMENT 'GLUE源代码',
  `glue_remark` varchar(128) NOT NULL COMMENT 'GLUE备注',
  `add_time` datetime DEFAULT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_registry` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `registry_group` varchar(50) NOT NULL,
  `registry_key` varchar(255) NOT NULL,
  `registry_value` varchar(255) NOT NULL,
  `update_time` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `i_g_k_v` (`registry_group`,`registry_key`,`registry_value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app_name` varchar(64) NOT NULL COMMENT '执行器AppName',
  `title` varchar(12) NOT NULL COMMENT '执行器名称',
  `address_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '执行器地址类型:0=自动注册、1=手动录入',
  `address_list` varchar(512) DEFAULT NULL COMMENT '执行器地址列表,多地址逗号分隔',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL COMMENT '账号',
  `password` varchar(50) NOT NULL COMMENT '密码',
  `role` tinyint(4) NOT NULL COMMENT '角色:0-普通用户、1-管理员',
  `permission` varchar(255) DEFAULT NULL COMMENT '权限:执行器ID列表,多个逗号分割',
  PRIMARY KEY (`id`),
  UNIQUE KEY `i_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `xxl_job_lock` (
  `lock_name` varchar(50) NOT NULL COMMENT '锁名称',
  PRIMARY KEY (`lock_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `xxl_job_group`(`id`, `app_name`, `title`, `address_type`, `address_list`) VALUES (1, 'xxl-job-executor-sample', '示例执行器', 0, NULL);
INSERT INTO `xxl_job_info`(`id`, `job_group`, `job_cron`, `job_desc`, `add_time`, `update_time`, `author`, `alarm_email`, `executor_route_strategy`, `executor_handler`, `executor_param`, `executor_block_strategy`, `executor_timeout`, `executor_fail_retry_count`, `glue_type`, `glue_source`, `glue_remark`, `glue_updatetime`, `child_jobid`) VALUES (1, 1, '0 0 0 * * ? *', '测试任务1', '2018-11-03 22:21:31', '2018-11-03 22:21:31', 'XXL', '', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', '2018-11-03 22:21:31', '');
INSERT INTO `xxl_job_user`(`id`, `username`, `password`, `role`, `permission`) VALUES (1, 'admin', 'e10adc3949ba59abbe56e057f20f883e', 1, NULL);
INSERT INTO `xxl_job_lock` ( `lock_name`) VALUES ( 'schedule_lock');
commit;
lb-boot/db/ÔöÁ¿SQL/2.4.6Éý¼¶µ½3.0ÔöÁ¿½Å±¾sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,63 @@
-- å­—段长度不规范,导致转库错误Specified key was too long; max key length is 767 bytes
ALTER TABLE `rep_demo_dxtj`
MODIFY COLUMN `id` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主键' FIRST;
ALTER TABLE `sys_third_account`
MODIFY COLUMN `third_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '登录来源' AFTER `third_user_id`;
-- æ•°æ®æºå­—å…¸sql整理
DELETE FROM `sys_dict_item` WHERE dict_id ='1209733563293962241';
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1209733775114702850', '1209733563293962241', 'MySQL5.5', '1', '', 1, 1, 'admin', '2019-12-25 15:13:02', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1334440962954936321', '1209733563293962241', 'MYSQL5.7+', '4', '', 2, 1, 'admin', '2020-12-03 18:16:02', 'admin', '2021-07-15 13:44:29');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1209733839933476865', '1209733563293962241', 'Oracle', '2', '', 3, 1, 'admin', '2019-12-25 15:13:18', 'admin', '2021-07-15 13:44:08');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1209733903020003330', '1209733563293962241', 'SQLServer', '3', '', 4, 1, 'admin', '2019-12-25 15:13:33', 'admin', '2021-07-15 13:44:11');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1414837074500976641', '1209733563293962241', 'postgresql', '6', '', 5, 1, 'admin', '2021-07-13 14:40:20', 'admin', '2021-07-15 13:44:15');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1415547541091504129', '1209733563293962241', 'marialDB', '5', '', 6, 1, 'admin', '2021-07-15 13:43:28', 'admin', '2021-07-15 13:44:23');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418049969003089922', '1209733563293962241', '达梦', '7', '', 7, 1, 'admin', '2021-07-22 11:27:13', 'admin', '2021-07-22 11:27:30');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418050017053036545', '1209733563293962241', '人大金仓', '8', '', 8, 1, 'admin', '2021-07-22 11:27:25', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418050075555188737', '1209733563293962241', '神通', '9', '', 9, 1, 'admin', '2021-07-22 11:27:39', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418050110669901826', '1209733563293962241', 'SQLite', '10', '', 10, 1, 'admin', '2021-07-22 11:27:47', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418050149475602434', '1209733563293962241', 'DB2', '11', '', 11, 1, 'admin', '2021-07-22 11:27:56', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418050209823248385', '1209733563293962241', 'Hsqldb', '12', '', 12, 1, 'admin', '2021-07-22 11:28:11', 'admin', '2021-07-22 11:28:27');
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418050323111399425', '1209733563293962241', 'Derby', '13', '', 13, 1, 'admin', '2021-07-22 11:28:38', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418117316707590146', '1209733563293962241', 'H2', '14', '', 14, 1, 'admin', '2021-07-22 15:54:50', NULL, NULL);
INSERT INTO `sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES ('1418491604048449537', '1209733563293962241', '其他数据库', '15', '', 15, 1, 'admin', '2021-07-23 16:42:07', NULL, NULL);
-- æ–°å¢ž hideTab å­—段
ALTER TABLE `sys_permission`
ADD COLUMN `hide_tab` int(2) NULL COMMENT '是否隐藏tab: 0否,1是' AFTER `hidden`;
-- ã€online表单】新增 low_app_id å­—段
ALTER TABLE `onl_cgform_head`
ADD COLUMN `low_app_id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关联的应用ID' AFTER `des_form_code`;
-- online老数据,存在字符串类型key值不一致的情况,String改为string
UPDATE onl_cgform_field SET db_type = 'string' where binary  db_type = 'String';
--  ç§¯æœ¨æŠ¥è¡¨å‡çº§
ALTER TABLE `jimu_report`
MODIFY COLUMN `view_count` bigint(15) NULL DEFAULT 0 COMMENT '浏览次数' AFTER `template`;
ALTER TABLE `jimu_report`
MODIFY COLUMN `json_str` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'json字符串' AFTER `type`;
ALTER TABLE `jimu_report_db_field`
ADD COLUMN `search_format` varchar(50) NULL COMMENT '查询时间格式化表达式' AFTER `search_value`;
ALTER TABLE `jimu_report_db_param`
ADD COLUMN `search_format` varchar(50) NULL COMMENT '查询时间格式化表达式' AFTER `dict_code`;
UPDATE jimu_report SET json_str=replace(json_str,'"subtotal":"totalField"','"funcname":"SUM"');
ALTER TABLE `jimu_report`
ADD COLUMN `css_str` text NULL COMMENT 'css增强' AFTER `view_count`,
ADD COLUMN `js_str` text NULL COMMENT 'js增强' AFTER `css_str`;
ALTER TABLE `jimu_report_link`
CHANGE COLUMN `expression` `requirement` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '条件' AFTER `link_chart_id`;
ALTER TABLE `jimu_report_db_field`
ADD COLUMN `ext_json` text  NULL COMMENT '参数配置' AFTER `search_format`;
ALTER TABLE `jimu_report_db_param`
ADD COLUMN `ext_json`  text  NULL COMMENT '参数配置' AFTER `search_format`;
ALTER TABLE `jimu_report_db`
MODIFY COLUMN `is_list` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '是否是列表0否1是 é»˜è®¤0' AFTER `api_method`;
lb-boot/db/ÔöÁ¿SQL/°æ±¾Éý¼¶ËµÃ÷.txt
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
版本升级方法?
  JeecgBoot属于平台级产品,每次升级改动内容较多,目前做不到平滑升级。
  è¿™é‡Œç»™ç”¨æˆ·çš„升级建议是这样的:
  1.代码升级  => æœ¬åœ°ç‰ˆæœ¬é€šè¿‡svn或者git做好主干,在分支上做业务开发,jeecg每次版本发布,可以手工覆盖主干的代码,对比代码进行提交;
  2.数据库升级 => é’ˆå¯¹æ•°æ®åº“我们每次发布会提供增量升级SQL,可以通过增量SQL实现数据库的升级。
  3.兼容问题 => æ¯æ¬¡ç‰ˆæœ¬å‘布会针对不兼容地方标注说明,需要手工修改不兼容的代码。
  æ³¨æ„ï¼š å‡çº§sql目前只提供mysql版本,执行完脚步后,新菜单需要手工进行角色授权,刷新首页才会出现。
lb-boot/docker-compose-server.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
#### é•œåƒä¸Šä¼ 
# ä»“库私服: 81.70.17.111:5000
# ç¬¬ä¸€æ­¥ï¼šä¸Šä¼ é•œåƒåˆ°docker仓库
#docker tag jeecg-boot-mysql 81.70.17.111:5000/jeecg-boot-mysql:1.1
#docker tag jeecg-boot-system 81.70.17.111:5000/jeecg-boot-system:1.0
#docker tag nginxhtml:jeecgboot 81.70.17.111:5000/nginxhtml:1.2
#docker push 81.70.17.111:5000/jeecg-boot-mysql:1.1
#docker push 81.70.17.111:5000/jeecg-boot-system:1.0
#docker push 81.70.17.111:5000/nginxhtml:1.2
# ç¬¬äºŒæ­¥ï¼šå°†æ­¤yml文件上传服务器,执行启动命令 docker-compose -f ./docker-compose-server.yml up
version: '2'
services:
  jeecg-boot-mysql:
    image: 81.70.17.111:5000/jeecg-boot-mysql:1.0
    environment:
      MYSQL_ROOT_PASSWORD: root
    restart: always
    container_name: jeecg-boot-mysql
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
    ports:
      - 3306:3306
  jeecg-boot-redis:
    image: redis:5.0
    ports:
      - 6379:6379
    restart: always
    container_name: jeecg-boot-redis
  jeecg-boot-system:
    image: 81.70.17.111:5000/jeecg-boot-system:1.0
    restart: always
    container_name: jeecg-boot-system
    volumes:
      - /data/config:/jeecg-boot/config
    ports:
      - 8080:8080
  jeecg-boot-nginx:
    image: 81.70.17.111:5000/nginxhtml
    restart: always
    container_name: jeecg-boot-nginx
    ports:
      - 80:80
lb-boot/docker-compose.yml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
version: '2'
services:
  jeecg-boot-mysql:
    build:
      context: ./db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_ROOT_HOST: '%'
      TZ: Asia/Shanghai
    restart: always
    container_name: jeecg-boot-mysql
    image: jeecg-boot-mysql
    command:
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
      --max_allowed_packet=128M
      --default-authentication-plugin=caching_sha2_password
    ports:
      - 3306:3306
  jeecg-boot-redis:
    image: redis:5.0
    ports:
      - 6379:6379
    restart: always
    hostname: jeecg-boot-redis
    container_name: jeecg-boot-redis
  jeecg-boot-system:
    build:
      context: ./jeecg-boot-module-system
    restart: on-failure
    depends_on:
      - jeecg-boot-mysql
      - jeecg-boot-redis
    container_name: jeecg-boot-system
    image: jeecg-boot-system
    hostname: jeecg-boot-system
    ports:
      - 8080:8080
lb-boot/export-template/pro/tp_project.xlsx
Binary files differ
lb-boot/export-template/weekly/aweekly.xlsx
Binary files differ
lb-boot/export-template/weekly/complexFillWithTable.xlsx
Binary files differ
lb-boot/export-template/weekly/depart_users_weekly.xlsx
Binary files differ
lb-boot/export-template/weekly/summaryWeekly.xlsx
Binary files differ
lb-boot/export-template/weekly/weekly.xlsx
Binary files differ
lb-boot/export-template/weekly/weekly2.xlsx
Binary files differ
lb-boot/export-template/weekly/weeklyEva.xlsx
Binary files differ
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>jeecg-boot-base-api</artifactId>
        <groupId>org.jeecgframework.boot</groupId>
        <version>3.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jeecg-system-cloud-api</artifactId>
    <dependencies>
        <!-- feign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
    </dependencies>
</project>
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/bpm/api/IBpmBaseExtAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,89 @@
package org.jeecg.common.bpm.api;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.ServiceNameConstants;
import org.jeecg.common.online.api.factory.OnlineBaseExtAPIFallbackFactory;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
 * æµç¨‹æŽ¥å£
 *
 * @author scott
 */
@Component
@FeignClient(contextId = "bpmBaseRemoteApi", value = ServiceNameConstants.SYSTEM_SERVICE,
    fallbackFactory = OnlineBaseExtAPIFallbackFactory.class)
public interface IBpmBaseExtAPI {
    /**
     * 23. æµç¨‹æäº¤æŽ¥å£ï¼ˆonline,自定义开发)
     *
     * @param flowCode
     *            æµç¨‹ä¸šåŠ¡å…³è” ä¾‹å¦‚:joa_leave_01
     * @param id
     *            è¡¨å•业务数据data id
     * @param formUrl
     *            æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的PC端表单组件(地址)
     * @param formUrlMobile
     *            æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的移动端表单组件(地址)
     * @param username
     *            æµç¨‹å‘起人账号
     * @param jsonData
     *            Json串,额外扩展的流程变量值 ã€éžå¿…填】
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/act/process/extActProcess/startMutilProcess")
    Result<String> startMutilProcess(@RequestParam("flowCode") String flowCode, @RequestParam("id") String id,
        @RequestParam("formUrl") String formUrl, @RequestParam("formUrlMobile") String formUrlMobile,
        @RequestParam("username") String username, @RequestParam("jsonData") String jsonData) throws Exception;
    /**
     * 24. æµç¨‹æäº¤æŽ¥å£ï¼ˆè‡ªå®šä¹‰è¡¨å•设计器)
     *
     * @param flowCode
     *            æµç¨‹ä¸šåŠ¡å…³è” ä¾‹å¦‚:joa_leave_01
     * @param id
     *            è¡¨å•业务数据data id
     * @param formUrl
     *            æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的PC端表单组件(地址)
     * @param formUrlMobile
     *            æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的移动端表单组件(地址)
     * @param username
     *            æµç¨‹å‘起人账号
     * @param jsonData
     *            Json串,额外扩展的流程变量值 ã€éžå¿…填】
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/act/process/extActProcess/startDesFormMutilProcess")
    Result<String> startDesFormMutilProcess(@RequestParam("flowCode") String flowCode, @RequestParam("id") String id,
        @RequestParam("formUrl") String formUrl, @RequestParam("formUrlMobile") String formUrlMobile,
        @RequestParam("username") String username, @RequestParam("jsonData") String jsonData) throws Exception;
    /**
     * 25. ä¿å­˜æµç¨‹è‰ç¨¿ç®±æŽ¥å£ï¼ˆè‡ªå®šä¹‰å¼€å‘表单、online表单)
     *
     * @param flowCode
     *            æµç¨‹ä¸šåŠ¡å…³è” ä¾‹å¦‚:joa_leave_01
     * @param id
     *            è¡¨å•业务数据data id
     * @param formUrl
     *            æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的PC端表单组件(地址) ã€éžå¿…填】
     * @param formUrlMobile
     *            æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的移动端表单组件(地址) ã€éžå¿…填】
     * @param username
     *            æµç¨‹å‘起人账号
     * @param jsonData
     *            Json串,额外扩展的流程变量值 ã€éžå¿…填】
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/act/process/extActProcess/saveMutilProcessDraft")
    Result<String> saveMutilProcessDraft(@RequestParam("flowCode") String flowCode, @RequestParam("id") String id,
        @RequestParam("formUrl") String formUrl, @RequestParam("formUrlMobile") String formUrlMobile,
        @RequestParam("username") String username, @RequestParam("jsonData") String jsonData) throws Exception;
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/bpm/api/factory/BpmBaseExtAPIFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.common.bpm.api.factory;
import org.jeecg.common.bpm.api.IBpmBaseExtAPI;
import org.jeecg.common.bpm.api.fallback.BpmBaseExtAPIFallback;
import org.springframework.stereotype.Component;
import feign.hystrix.FallbackFactory;
@Component
public class BpmBaseExtAPIFallbackFactory implements FallbackFactory<IBpmBaseExtAPI> {
    @Override
    public IBpmBaseExtAPI create(Throwable throwable) {
        BpmBaseExtAPIFallback fallback = new BpmBaseExtAPIFallback();
        fallback.setCause(throwable);
        return fallback;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/bpm/api/fallback/BpmBaseExtAPIFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package org.jeecg.common.bpm.api.fallback;
import java.util.List;
import java.util.Map;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.bpm.api.IBpmBaseExtAPI;
import org.jeecg.common.online.api.IOnlineBaseExtAPI;
import org.jeecg.common.system.vo.DictModel;
import com.alibaba.fastjson.JSONObject;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
/**
 * è¿›å…¥fallback的方法 æ£€æŸ¥æ˜¯å¦token未设置
 */
@Slf4j
public class BpmBaseExtAPIFallback implements IBpmBaseExtAPI {
    @Setter
    private Throwable cause;
    @Override
    public Result<String> startMutilProcess(String flowCode, String id, String formUrl, String formUrlMobile,
        String username, String jsonData) throws Exception {
        return null;
    }
    @Override
    public Result<String> startDesFormMutilProcess(String flowCode, String id, String formUrl, String formUrlMobile,
        String username, String jsonData) throws Exception {
        return null;
    }
    @Override
    public Result<String> saveMutilProcessDraft(String flowCode, String id, String formUrl, String formUrlMobile,
        String username, String jsonData) throws Exception {
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/online/api/IOnlineBaseExtAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package org.jeecg.common.online.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.constant.ServiceNameConstants;
import org.jeecg.common.online.api.factory.OnlineBaseExtAPIFallbackFactory;
import org.jeecg.common.system.vo.DictModel;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
 * ã€Online】Feign API接口
 */
@Component
@FeignClient(contextId = "onlineBaseRemoteApi", value = ServiceNameConstants.SYSTEM_ONLINE, fallbackFactory = OnlineBaseExtAPIFallbackFactory.class)
public interface IOnlineBaseExtAPI {
    /**
     * ã€Online】 è¡¨å•设计器专用:同步新增
     */
    @PostMapping(value = "/online/api/cgform/crazyForm/{name}")
    String cgformPostCrazyForm(@PathVariable("name") String tableName, @RequestBody JSONObject jsonObject) throws Exception;
    /**
     * ã€Online】 è¡¨å•设计器专用:同步编辑
     */
    @PutMapping(value = "/online/api/cgform/crazyForm/{name}")
    String cgformPutCrazyForm(@PathVariable("name") String tableName, @RequestBody JSONObject jsonObject) throws Exception;
    /**
     * é€šè¿‡online表名查询数据,同时查询出子表的数据
     *
     * @param tableName online表名
     * @param dataIds   online数据ID
     * @return
     */
    @GetMapping(value = "/online/api/cgform/queryAllDataByTableName")
    JSONObject cgformQueryAllDataByTableName(@RequestParam("tableName") String tableName, @RequestParam("dataIds") String dataIds);
    /**
     * online表单删除数据
     *
     * @param cgformCode Online表单code
     * @param dataIds    æ•°æ®ID,可逗号分割
     * @return
     */
    @DeleteMapping("/online/api/cgform/cgformDeleteDataByCode")
    String cgformDeleteDataByCode(@RequestParam("cgformCode") String cgformCode, @RequestParam("dataIds") String dataIds);
    /**
     * ã€cgreport】通过 head code èŽ·å– sql语句,并执行该语句返回查询数据
     *
     * @param code     æŠ¥è¡¨Code,如果没传ID就通过code查
     * @param forceKey
     * @param dataList
     * @return
     */
    @GetMapping("/online/api/cgreportGetData")
    Map<String, Object> cgreportGetData(@RequestParam("code") String code, @RequestParam("forceKey") String forceKey, @RequestParam("dataList") String dataList);
    /**
     * ã€cgreport】对 cgreportGetData çš„返回值做优化,封装 DictModel é›†åˆ
     *
     * @return
     */
    @GetMapping("/online/api/cgreportGetDataPackage")
    List<DictModel> cgreportGetDataPackage(@RequestParam("code") String code, @RequestParam("dictText") String dictText, @RequestParam("dictCode") String dictCode, @RequestParam("dataList") String dataList);
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/online/api/factory/OnlineBaseExtAPIFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.common.online.api.factory;
import feign.hystrix.FallbackFactory;
import org.jeecg.common.online.api.IOnlineBaseExtAPI;
import org.jeecg.common.online.api.fallback.OnlineBaseExtAPIFallback;
import org.springframework.stereotype.Component;
@Component
public class OnlineBaseExtAPIFallbackFactory implements FallbackFactory<IOnlineBaseExtAPI> {
    @Override
    public IOnlineBaseExtAPI create(Throwable throwable) {
        OnlineBaseExtAPIFallback fallback = new OnlineBaseExtAPIFallback();
        fallback.setCause(throwable);
        return fallback;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/online/api/fallback/OnlineBaseExtAPIFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
package org.jeecg.common.online.api.fallback;
import com.alibaba.fastjson.JSONObject;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.online.api.IOnlineBaseExtAPI;
import org.jeecg.common.system.vo.DictModel;
import java.util.List;
import java.util.Map;
/**
 * è¿›å…¥fallback的方法 æ£€æŸ¥æ˜¯å¦token未设置
 */
@Slf4j
public class OnlineBaseExtAPIFallback implements IOnlineBaseExtAPI {
    @Setter
    private Throwable cause;
    @Override
    public String cgformPostCrazyForm(String tableName, JSONObject jsonObject) {
        return null;
    }
    @Override
    public String cgformPutCrazyForm(String tableName, JSONObject jsonObject) {
        return null;
    }
    @Override
    public JSONObject cgformQueryAllDataByTableName(String tableName, String dataIds) {
        return null;
    }
    @Override
    public String cgformDeleteDataByCode(String cgformCode, String dataIds) {
        return null;
    }
    @Override
    public Map<String, Object> cgreportGetData(String code, String forceKey, String dataList) {
        return null;
    }
    @Override
    public List<DictModel> cgreportGetDataPackage(String code, String dictText, String dictCode, String dataList) {
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,514 @@
package org.jeecg.common.system.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.api.dto.OnlineAuthDTO;
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.constant.ServiceNameConstants;
import org.jeecg.common.system.api.factory.SysBaseAPIFallbackFactory;
import org.jeecg.common.system.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * ç›¸æ¯”较local版
 * åŽ»æŽ‰äº†ä¸€äº›æ–¹æ³•ï¼š
 * addLog getDatabaseType queryAllDepart
 * queryAllUser(Wrapper wrapper) queryAllUser(String[] userIds, int pageNo, int pageSize)
 * ä¿®æ”¹äº†ä¸€äº›æ–¹æ³•:
 * createLog
 * sendSysAnnouncement åªä¿ç•™äº†ä¸€ä¸ªï¼Œå…¶ä½™å…¨éƒ¨å¹²æŽ‰
 *
 * cloud接口数量43  local:35 common:9  é¢å¤–一个特殊queryAllRole一个当两个用
 */
@Component
@FeignClient(contextId = "sysBaseRemoteApi", value = ServiceNameConstants.SYSTEM_SERVICE, fallbackFactory = SysBaseAPIFallbackFactory.class)
public interface ISysBaseAPI extends CommonAPI {
    /**
     * 1发送系统消息
     * @param message ä½¿ç”¨æž„造器赋值参数 å¦‚果不设置category(消息类型)则默认为2 å‘送系统消息
     */
    @PostMapping("/sys/api/sendSysAnnouncement")
    void sendSysAnnouncement(@RequestBody MessageDTO message);
    /**
     * 2发送消息 é™„带业务参数
     * @param message ä½¿ç”¨æž„造器赋值参数
     */
    @PostMapping("/sys/api/sendBusAnnouncement")
    void sendBusAnnouncement(@RequestBody BusMessageDTO message);
    /**
     * 3通过模板发送消息
     * @param message ä½¿ç”¨æž„造器赋值参数
     */
    @PostMapping("/sys/api/sendTemplateAnnouncement")
    void sendTemplateAnnouncement(@RequestBody TemplateMessageDTO message);    /**
     *
     */
    @PostMapping("/sys/api/sendCustomMsg")
    void sendCustomMsg(@RequestBody CustomMessage message);
    /**
     * 4通过模板发送消息 é™„带业务参数
     * @param message ä½¿ç”¨æž„造器赋值参数
     */
    @PostMapping("/sys/api/sendBusTemplateAnnouncement")
    void sendBusTemplateAnnouncement(@RequestBody BusTemplateMessageDTO message);
    /**
     * 5通过消息中心模板,生成推送内容
     * @param templateDTO ä½¿ç”¨æž„造器赋值参数
     * @return
     */
    @PostMapping("/sys/api/parseTemplateByCode")
    String parseTemplateByCode(@RequestBody TemplateDTO templateDTO);
    /**
     * 6根据用户id查询用户信息
     * @param id
     * @return
     */
    @GetMapping("/sys/api/getUserById")
    LoginUser getUserById(@RequestParam("id") String id);
    /**
     * 7通过用户账号查询角色集合
     * @param username
     * @return
     */
    @GetMapping("/sys/api/getRolesByUsername")
    List<String> getRolesByUsername(@RequestParam("username") String username);
    /**
     * 8通过用户账号查询部门集合
     * @param username
     * @return éƒ¨é—¨ id
     */
    @GetMapping("/sys/api/getDepartIdsByUsername")
    List<String> getDepartIdsByUsername(@RequestParam("username") String username);
    /**
     * 9通过用户账号查询部门 name
     * @param username
     * @return éƒ¨é—¨ name
     */
    @GetMapping("/sys/api/getDepartNamesByUsername")
    List<String> getDepartNamesByUsername(@RequestParam("username") String username);
    /**
     * 10获取数据字典
     * @param code
     * @return
     */
    @GetMapping("/sys/api/queryDictItemsByCode")
    List<DictModel> queryDictItemsByCode(@RequestParam("code") String code);
    /**
     * èŽ·å–æœ‰æ•ˆçš„æ•°æ®å­—å…¸é¡¹
     * @param code
     * @return
     */
    @GetMapping("/sys/api/queryEnableDictItemsByCode")
    public List<DictModel> queryEnableDictItemsByCode(@RequestParam("code") String code);
    /** 11查询所有的父级字典,按照create_time排序 */
    @GetMapping("/sys/api/queryAllDict")
    List<DictModel> queryAllDict();
    /**
     * 12查询所有分类字典
     * @return
     */
    @GetMapping("/sys/api/queryAllDSysCategory")
    List<SysCategoryModel> queryAllDSysCategory();
    /**
     * 13获取表数据字典
     * @param table
     * @param text
     * @param code
     * @return
     */
    @GetMapping("/sys/api/queryTableDictItemsByCode")
    List<DictModel> queryTableDictItemsByCode(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code);
    /**
     * 14查询所有部门 ä½œä¸ºå­—典信息 id -->value,departName -->text
     * @return
     */
    @GetMapping("/sys/api/queryAllDepartBackDictModel")
    List<DictModel> queryAllDepartBackDictModel();
    /**
     * 15根据业务类型 busType åŠä¸šåŠ¡ busId ä¿®æ”¹æ¶ˆæ¯å·²è¯»
     */
    @GetMapping("/sys/api/updateSysAnnounReadFlag")
    public void updateSysAnnounReadFlag(@RequestParam("busType") String busType, @RequestParam("busId")String busId);
    /**
     * 16查询表字典 æ”¯æŒè¿‡æ»¤æ•°æ®
     * @param table
     * @param text
     * @param code
     * @param filterSql
     * @return
     */
    @GetMapping("/sys/api/queryFilterTableDictInfo")
    List<DictModel> queryFilterTableDictInfo(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("filterSql") String filterSql);
    /**
     * 17查询指定table的 text code èŽ·å–å­—å…¸ï¼ŒåŒ…å«text和value
     * @param table
     * @param text
     * @param code
     * @param keyArray
     * @return
     */
    @Deprecated
    @GetMapping("/sys/api/queryTableDictByKeys")
    public List<String> queryTableDictByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keyArray") String[] keyArray);
    /**
     * 18查询所有用户 è¿”回ComboModel
     * @return
     */
    @GetMapping("/sys/api/queryAllUserBackCombo")
    public List<ComboModel> queryAllUserBackCombo();
    /**
     * 19分页查询用户 è¿”回JSONObject
     * @return
     */
    @GetMapping("/sys/api/queryAllUser")
    public JSONObject queryAllUser(@RequestParam(name="userIds",required=false)String userIds, @RequestParam(name="pageNo",required=false) Integer pageNo,@RequestParam(name="pageSize",required=false) int pageSize);
    /**
     * 20获取所有角色 å¸¦å‚
     * roleIds é»˜è®¤é€‰ä¸­è§’色
     * @return
     */
    @GetMapping("/sys/api/queryAllRole")
    public List<ComboModel> queryAllRole(@RequestParam(name = "roleIds",required = false)String[] roleIds);
    /**
     * 21通过用户账号查询角色Id集合
     * @param username
     * @return
     */
    @GetMapping("/sys/api/getRoleIdsByUsername")
    public List<String> getRoleIdsByUsername(@RequestParam("username")String username);
    /**
     * 22通过部门编号查询部门id
     * @param orgCode
     * @return
     */
    @GetMapping("/sys/api/getDepartIdsByOrgCode")
    public String getDepartIdsByOrgCode(@RequestParam("orgCode")String orgCode);
    /**
     * 23查询所有部门
     * @return
     */
    @GetMapping("/sys/api/getAllSysDepart")
    public List<SysDepartModel> getAllSysDepart();
    /**
     * 24查找父级部门
     * @param departId
     * @return
     */
    @GetMapping("/sys/api/getParentDepartId")
    DictModel getParentDepartId(@RequestParam("departId")String departId);
    /**
     * 25根据部门Id获取部门负责人
     * @param deptId
     * @return
     */
    @GetMapping("/sys/api/getDeptHeadByDepId")
    public List<String> getDeptHeadByDepId(@RequestParam("deptId") String deptId);
    /**
     * 26给指定用户发消息
     * @param userIds
     * @param cmd
     */
    @GetMapping("/sys/api/sendWebSocketMsg")
    public void sendWebSocketMsg(@RequestParam("userIds")String[] userIds, @RequestParam("cmd") String cmd);
    /**
     * 27根据id获取所有参与用户
     * userIds
     * @return
     */
    @GetMapping("/sys/api/queryAllUserByIds")
    public List<LoginUser> queryAllUserByIds(@RequestParam("userIds") String[] userIds);
    /**
     * 28将会议签到信息推动到预览
     * userIds
     * @return
     * @param userId
     */
    @GetMapping("/sys/api/meetingSignWebsocket")
    void meetingSignWebsocket(@RequestParam("userId")String userId);
    /**
     * 29根据name获取所有参与用户
     * userNames
     * @return
     */
    @GetMapping("/sys/api/queryUserByNames")
    List<LoginUser> queryUserByNames(@RequestParam("userNames")String[] userNames);
    /**
     * 30获取用户的角色集合
     * @param username
     * @return
     */
    @GetMapping("/sys/api/getUserRoleSet")
    Set<String> getUserRoleSet(@RequestParam("username")String username);
    /**
     * 31获取用户的权限集合
     * @param username
     * @return
     */
    @GetMapping("/sys/api/getUserPermissionSet")
    Set<String> getUserPermissionSet(@RequestParam("username") String username);
    /**
     * 32判断是否有online访问的权限
     * @param onlineAuthDTO
     * @return
     */
    @PostMapping("/sys/api/hasOnlineAuth")
    boolean hasOnlineAuth(@RequestBody OnlineAuthDTO onlineAuthDTO);
    /**
     * 33通过部门id获取部门全部信息
     */
    @GetMapping("/sys/api/selectAllById")
    SysDepartModel selectAllById(@RequestParam("id") String id);
    /**
     * 34根据用户id查询用户所属公司下所有用户ids
     * @param userId
     * @return
     */
    @GetMapping("/sys/api/queryDeptUsersByUserId")
    List<String> queryDeptUsersByUserId(@RequestParam("userId") String userId);
    //---
    /**
     * 35查询用户角色信息
     * @param username
     * @return
     */
    @GetMapping("/sys/api/queryUserRoles")
    Set<String> queryUserRoles(@RequestParam("username")String username);
    /**
     * 36查询用户权限信息
     * @param username
     * @return
     */
    @GetMapping("/sys/api/queryUserAuths")
    Set<String> queryUserAuths(@RequestParam("username")String username);
    /**
     * 37根据 id æŸ¥è¯¢æ•°æ®åº“中存储的 DynamicDataSourceModel
     *
     * @param dbSourceId
     * @return
     */
    @GetMapping("/sys/api/getDynamicDbSourceById")
    DynamicDataSourceModel getDynamicDbSourceById(@RequestParam("dbSourceId") String dbSourceId);
    /**
     * 38根据 code æŸ¥è¯¢æ•°æ®åº“中存储的 DynamicDataSourceModel
     *
     * @param dbSourceCode
     * @return
     */
    @GetMapping("/sys/api/getDynamicDbSourceByCode")
    DynamicDataSourceModel getDynamicDbSourceByCode(@RequestParam("dbSourceCode") String dbSourceCode);
    /**
     * 39根据用户账号查询用户信息 CommonAPI中定义
     * @param username
     */
    @GetMapping("/sys/api/getUserByName")
    LoginUser getUserByName(@RequestParam("username") String username);
    /**
     * 40字典表的 ç¿»è¯‘
     * @param table
     * @param text
     * @param code
     * @param key
     * @return
     */
    @GetMapping("/sys/api/translateDictFromTable")
    String translateDictFromTable(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("key") String key);
    /**
     * 41普通字典的翻译
     * @param code
     * @param key
     * @return
     */
    @GetMapping("/sys/api/translateDict")
    String translateDict(@RequestParam("code") String code, @RequestParam("key") String key);
    /**
     * 42查询数据权限
     * @return
     */
    @GetMapping("/sys/api/queryPermissionDataRule")
    List<SysPermissionDataRuleModel> queryPermissionDataRule(@RequestParam("component") String component, @RequestParam("requestPath")String requestPath, @RequestParam("username") String username);
    /**
     * 43查询用户信息
     * @param username
     * @return
     */
    @GetMapping("/sys/api/getCacheUser")
    SysUserCacheInfo getCacheUser(@RequestParam("username") String username);
    /**
     * 36根据多个用户账号(逗号分隔),查询返回多个用户信息
     * @param usernames
     * @return
     */
    @GetMapping("/sys/api/queryUsersByUsernames")
    List<JSONObject> queryUsersByUsernames(@RequestParam("usernames") String usernames);
    /**
     * 37根据多个用户ID(逗号分隔),查询返回多个用户信息
     * @param ids
     * @return
     */
    @RequestMapping("/sys/api/queryUsersByIds")
    List<JSONObject> queryUsersByIds(@RequestParam("ids") String ids);
    /**
     * 38根据多个部门编码(逗号分隔),查询返回多个部门信息
     * @param orgCodes
     * @return
     */
    @RequestMapping("/sys/api/queryDepartsByOrgcodes")
    List<JSONObject> queryDepartsByOrgcodes(@RequestParam("orgCodes") String orgCodes);
    /**
     * 39根据多个部门编码(逗号分隔),查询返回多个部门信息
     * @param ids
     * @return
     */
    @GetMapping("/sys/api/queryDepartsByOrgIds")
    List<JSONObject> queryDepartsByOrgIds(@RequestParam("ids") String ids);
    /**
     * 40发送邮件消息
     * @param email
     * @param title
     * @param content
     */
    @GetMapping("/sys/api/sendEmailMsg")
    void sendEmailMsg(@RequestParam("email")String email,@RequestParam("title")String title,@RequestParam("content")String content);
    /**
     * 41 èŽ·å–å…¬å¸ä¸‹çº§éƒ¨é—¨å’Œå…¬å¸ä¸‹æ‰€æœ‰ç”¨æˆ·id
     * @param orgCode
     */
    @GetMapping("/sys/api/getDeptUserByOrgCode")
    List<Map> getDeptUserByOrgCode(@RequestParam("orgCode")String orgCode);
    /**
     * 42 æŸ¥è¯¢åˆ†ç±»å­—典翻译
     */
    @GetMapping("/sys/api/loadCategoryDictItem")
    List<String> loadCategoryDictItem(@RequestParam("ids") String ids);
    /**
     * 43 æ ¹æ®å­—å…¸code加载字典text
     *
     * @param dictCode é¡ºåºï¼štableName,text,code
     * @param keys     è¦æŸ¥è¯¢çš„key
     * @return
     */
    @GetMapping("/sys/api/loadDictItem")
    List<String> loadDictItem(@RequestParam("dictCode") String dictCode, @RequestParam("keys") String keys);
    /**
     * 44 æ ¹æ®å­—å…¸code查询字典项
     *
     * @param dictCode é¡ºåºï¼štableName,text,code
     * @param dictCode è¦æŸ¥è¯¢çš„key
     * @return
     */
    @GetMapping("/sys/api/getDictItems")
    List<DictModel> getDictItems(@RequestParam("dictCode") String dictCode);
    /**
     * 45 æ ¹æ®å¤šä¸ªå­—å…¸code查询多个字典项
     *
     * @param dictCodeList
     * @return key = dictCode ï¼› value=对应的字典项
     */
    @RequestMapping("/sys/api/getManyDictItems")
    Map<String, List<DictModel>> getManyDictItems(@RequestParam("dictCodeList") List<String> dictCodeList);
    /**
     * 46 ã€JSearchSelectTag下拉搜索组件专用接口】
     * å¤§æ•°æ®é‡çš„字典表 èµ°å¼‚步加载  å³å‰ç«¯è¾“入内容过滤数据
     *
     * @param dictCode å­—å…¸code格式:table,text,code
     * @param keyword  è¿‡æ»¤å…³é”®å­—
     * @return
     */
    @GetMapping("/sys/api/loadDictItemByKeyword")
    List<DictModel> loadDictItemByKeyword(@RequestParam("dictCode") String dictCode, @RequestParam("keyword") String keyword, @RequestParam(value = "pageSize", required = false) Integer pageSize);
    /**
     * 47 æ ¹æ®å¤šä¸ªéƒ¨é—¨id(逗号分隔),查询返回多个部门信息
     * @param ids
     * @return
     */
    @GetMapping("/sys/api/queryDepartsByIds")
    List<JSONObject> queryDepartsByIds(@RequestParam("ids") String ids);
    /**
     * 48 æ™®é€šå­—典的翻译,根据多个dictCode和多条数据,多个以逗号分割
     * @param dictCodes
     * @param keys
     * @return
     */
    @Override
    @GetMapping("/sys/api/translateManyDict")
    Map<String, List<DictModel>> translateManyDict(@RequestParam("dictCodes") String dictCodes, @RequestParam("keys") String keys);
    /**
     * 49 å­—典表的 ç¿»è¯‘,可批量
     * @param table
     * @param text
     * @param code
     * @param keys å¤šä¸ªç”¨é€—号分割
     * @return
     */
    @Override
    @GetMapping("/sys/api/translateDictFromTableByKeys")
    List<DictModel> translateDictFromTableByKeys(@RequestParam("table") String table, @RequestParam("text") String text, @RequestParam("code") String code, @RequestParam("keys") String keys);
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/factory/SysBaseAPIFallbackFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.common.system.api.factory;
import feign.hystrix.FallbackFactory;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.api.fallback.SysBaseAPIFallback;
import org.springframework.stereotype.Component;
@Component
public class SysBaseAPIFallbackFactory implements FallbackFactory<ISysBaseAPI> {
    @Override
    public ISysBaseAPI create(Throwable throwable) {
        SysBaseAPIFallback fallback = new SysBaseAPIFallback();
        fallback.setCause(throwable);
        return fallback;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/common/system/api/fallback/SysBaseAPIFallback.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,323 @@
package org.jeecg.common.system.api.fallback;
import com.alibaba.fastjson.JSONObject;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.dto.OnlineAuthDTO;
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.vo.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * è¿›å…¥fallback的方法 æ£€æŸ¥æ˜¯å¦token未设置
 */
@Slf4j
public class SysBaseAPIFallback implements ISysBaseAPI {
    @Setter
    private Throwable cause;
    @Override
    public void sendSysAnnouncement(MessageDTO message) {
        log.error("发送消息失败 {}", cause);
    }
    @Override
    public void sendBusAnnouncement(BusMessageDTO message) {
        log.error("发送消息失败 {}", cause);
    }
    @Override
    public void sendTemplateAnnouncement(TemplateMessageDTO message) {
        log.error("发送消息失败 {}", cause);
    }
    @Override
    public void sendCustomMsg(CustomMessage message) {
        log.error("发送消息失败 {}", cause);
    }
    @Override
    public void sendBusTemplateAnnouncement(BusTemplateMessageDTO message) {
        log.error("发送消息失败 {}", cause);
    }
    @Override
    public String parseTemplateByCode(TemplateDTO templateDTO) {
        log.error("通过模板获取消息内容失败 {}", cause);
        return null;
    }
    @Override
    public LoginUser getUserById(String id) {
        return null;
    }
    @Override
    public List<String> getRolesByUsername(String username) {
        return null;
    }
    @Override
    public List<String> getDepartIdsByUsername(String username) {
        return null;
    }
    @Override
    public List<String> getDepartNamesByUsername(String username) {
        return null;
    }
    @Override
    public List<DictModel> queryDictItemsByCode(String code) {
        return null;
    }
    @Override
    public List<DictModel> queryEnableDictItemsByCode(String code) {
        return null;
    }
    @Override
    public List<DictModel> queryAllDict() {
        return null;
    }
    @Override
    public List<SysCategoryModel> queryAllDSysCategory() {
        return null;
    }
    @Override
    public List<DictModel> queryTableDictItemsByCode(String table, String text, String code) {
        return null;
    }
    @Override
    public List<DictModel> queryAllDepartBackDictModel() {
        return null;
    }
    @Override
    public void updateSysAnnounReadFlag(String busType, String busId) {
    }
    @Override
    public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql) {
        return null;
    }
    @Override
    public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray) {
        log.error("queryTableDictByKeys查询失败 {}", cause);
        return null;
    }
    @Override
    public List<ComboModel> queryAllUserBackCombo() {
        return null;
    }
    @Override
    public JSONObject queryAllUser(String userIds, Integer pageNo, int pageSize) {
        return null;
    }
    @Override
    public List<ComboModel> queryAllRole(String[] roleIds) {
        log.error("获取角色信息失败 {}", cause);
        return null;
    }
    @Override
    public List<String> getRoleIdsByUsername(String username) {
        return null;
    }
    @Override
    public String getDepartIdsByOrgCode(String orgCode) {
        return null;
    }
    @Override
    public List<SysDepartModel> getAllSysDepart() {
        return null;
    }
    @Override
    public DictModel getParentDepartId(String departId) {
        return null;
    }
    @Override
    public List<String> getDeptHeadByDepId(String deptId) {
        return null;
    }
    @Override
    public void sendWebSocketMsg(String[] userIds, String cmd) {
    }
    @Override
    public List<LoginUser> queryAllUserByIds(String[] userIds) {
        return null;
    }
    @Override
    public void meetingSignWebsocket(String userId) {
    }
    @Override
    public List<LoginUser> queryUserByNames(String[] userNames) {
        return null;
    }
    @Override
    public Set<String> getUserRoleSet(String username) {
        return null;
    }
    @Override
    public Set<String> getUserPermissionSet(String username) {
        return null;
    }
    @Override
    public boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO) {
        return false;
    }
    @Override
    public SysDepartModel selectAllById(String id) {
        return null;
    }
    @Override
    public List<String> queryDeptUsersByUserId(String userId) {
        return null;
    }
    @Override
    public Set<String> queryUserRoles(String username) {
        return null;
    }
    @Override
    public Set<String> queryUserAuths(String username) {
        return null;
    }
    @Override
    public DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId) {
        return null;
    }
    @Override
    public DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode) {
        return null;
    }
    @Override
    public LoginUser getUserByName(String username) {
        log.error("通过用户名获取当前登录用户信息 {}", cause);
        return null;
    }
    @Override
    public String translateDictFromTable(String table, String text, String code, String key) {
        return null;
    }
    @Override
    public String translateDict(String code, String key) {
        return null;
    }
    @Override
    public List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username) {
        return null;
    }
    @Override
    public SysUserCacheInfo getCacheUser(String username) {
        log.error("获取用户信息失败 {}", cause);
        return null;
    }
    @Override
    public List<JSONObject> queryUsersByUsernames(String usernames) {
        return null;
    }
    @Override
    public List<JSONObject> queryUsersByIds(String ids) {
        return null;
    }
    @Override
    public List<JSONObject> queryDepartsByOrgcodes(String orgCodes) {
        return null;
    }
    @Override
    public List<JSONObject> queryDepartsByIds(String ids) {
        return null;
    }
    @Override
    public Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys) {
        return null;
    }
    @Override
    public List<DictModel> translateDictFromTableByKeys(String table, String text, String code, String keys) {
        return null;
    }
    @Override
    public void sendEmailMsg(String email,String title,String content) {
    }
    @Override
    public List<Map> getDeptUserByOrgCode(String orgCode) {
        return null;
    }
    @Override
    public List<JSONObject> queryDepartsByOrgIds(String ids) {
        return null;
    }
    @Override
    public List<String> loadCategoryDictItem(String ids) {
        return null;
    }
    @Override
    public List<String> loadDictItem(String dictCode, String keys) {
        return null;
    }
    @Override
    public List<DictModel> getDictItems(String dictCode) {
        return null;
    }
    @Override
    public Map<String, List<DictModel>> getManyDictItems(List<String> dictCodeList) {
        return null;
    }
    @Override
    public List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize) {
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-cloud-api/src/main/java/org/jeecg/config/FeignConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,164 @@
package org.jeecg.config;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.SortedMap;
import javax.servlet.http.HttpServletRequest;
import org.jeecg.common.config.mqtoken.UserTokenContext;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.PathMatcherUtil;
import org.jeecg.config.sign.interceptor.SignAuthConfiguration;
import org.jeecg.config.sign.util.HttpUtils;
import org.jeecg.config.sign.util.SignUtil;
import org.springframework.beans.factory.ObjectFactory;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.http.HttpMessageConverters;
import org.springframework.cloud.openfeign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.support.SpringDecoder;
import org.springframework.cloud.openfeign.support.SpringEncoder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Scope;
import org.springframework.http.MediaType;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import com.alibaba.fastjson.support.springfox.SwaggerJsonSerializer;
import feign.Feign;
import feign.Logger;
import feign.RequestInterceptor;
import feign.codec.Decoder;
import feign.codec.Encoder;
import feign.form.spring.SpringFormEncoder;
import lombok.extern.slf4j.Slf4j;
@ConditionalOnClass(Feign.class)
@AutoConfigureBefore(FeignAutoConfiguration.class)
@Slf4j
@Configuration
public class FeignConfig {
    @Bean
    public RequestInterceptor requestInterceptor() {
        return requestTemplate -> {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            if (null != attributes) {
                HttpServletRequest request = attributes.getRequest();
                log.debug("Feign request: {}", request.getRequestURI());
                // å°†token信息放入header中
                String token = request.getHeader(CommonConstant.X_ACCESS_TOKEN);
                if(token==null || "".equals(token)){
                    token = request.getParameter("token");
                }
                log.debug("Feign request token: {}", token);
                requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
                //根据URL地址过滤请求 ã€å­—典表参数签名验证】
                if (PathMatcherUtil.matches(Arrays.asList(SignAuthConfiguration.urlList),requestTemplate.path())) {
                    try {
                        log.info("============================ [begin] fegin api url ============================");
                        log.info(requestTemplate.path());
                        log.info(requestTemplate.method());
                        String queryLine = requestTemplate.queryLine();
                        if(queryLine!=null && queryLine.startsWith("?")){
                            queryLine = queryLine.substring(1);
                        }
                        log.info(queryLine);
                        if(requestTemplate.body()!=null){
                            log.info(new String(requestTemplate.body()));
                        }
                        SortedMap<String, String> allParams = HttpUtils.getAllParams(requestTemplate.path(),queryLine,requestTemplate.body(),requestTemplate.method());
                        String sign = SignUtil.getParamsSign(allParams);
                        log.info(" Feign request params sign: {}",sign);
                        log.info("============================ [end] fegin api url ============================");
                        requestTemplate.header(CommonConstant.X_SIGN, sign);
                        requestTemplate.header(CommonConstant.X_TIMESTAMP, DateUtils.getCurrentTimestamp().toString());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }else{
                String  token = UserTokenContext.getToken();
                log.debug("Feign request token: {}", token);
                requestTemplate.header(CommonConstant.X_ACCESS_TOKEN, token);
            }
        };
    }
    /**
     * Feign å®¢æˆ·ç«¯çš„æ—¥å¿—记录,默认级别为NONE
     * Logger.Level çš„具体级别如下:
     * NONE:不记录任何信息
     * BASIC:仅记录请求方法、URL以及响应状态码和执行时间
     * HEADERS:除了记录 BASIC级别的信息外,还会记录请求和响应的头信息
     * FULL:记录所有请求与响应的明细,包括头信息、请求体、元数据
     */
    @Bean
    Logger.Level feignLoggerLevel() {
        return Logger.Level.FULL;
    }
    /**
     * Feign支持文件上传
     * @param messageConverters
     * @return
     */
    @Bean
    @Primary
    @Scope("prototype")
    public Encoder multipartFormEncoder(ObjectFactory<HttpMessageConverters> messageConverters) {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
    // update-begin--Author:sunjianlei Date:20210604 for: ç»™ Feign æ·»åŠ  FastJson çš„解析支持 ----------
    @Bean
    public Encoder feignEncoder() {
        return new SpringEncoder(feignHttpMessageConverter());
    }
    @Bean
    public Decoder feignDecoder() {
        return new SpringDecoder(feignHttpMessageConverter());
    }
    /**
     * è®¾ç½®è§£ç å™¨ä¸ºfastjson
     *
     * @return
     */
    private ObjectFactory<HttpMessageConverters> feignHttpMessageConverter() {
        final HttpMessageConverters httpMessageConverters = new HttpMessageConverters(this.getFastJsonConverter());
        return () -> httpMessageConverters;
    }
    private FastJsonHttpMessageConverter getFastJsonConverter() {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        List<MediaType> supportedMediaTypes = new ArrayList<>();
        MediaType mediaTypeJson = MediaType.valueOf(MediaType.APPLICATION_JSON_VALUE);
        supportedMediaTypes.add(mediaTypeJson);
        converter.setSupportedMediaTypes(supportedMediaTypes);
        FastJsonConfig config = new FastJsonConfig();
        config.getSerializeConfig().put(JSON.class, new SwaggerJsonSerializer());
        config.setSerializerFeatures(SerializerFeature.DisableCircularReferenceDetect);
        converter.setFastJsonConfig(config);
        return converter;
    }
    // update-end--Author:sunjianlei Date:20210604 for: ç»™ Feign æ·»åŠ  FastJson çš„解析支持 ----------
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>jeecg-boot-base-api</artifactId>
        <groupId>org.jeecgframework.boot</groupId>
        <version>3.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jeecg-system-local-api</artifactId>
</project>
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/bpm/api/IBpmBaseExtAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package org.jeecg.common.bpm.api;
import java.util.List;
import java.util.Map;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.DictModel;
import com.alibaba.fastjson.JSONObject;
/**
 * æµç¨‹æŽ¥å£
 *
 * @author scott
 */
public interface IBpmBaseExtAPI {
    /**
     *  23. æµç¨‹æäº¤æŽ¥å£ï¼ˆonline,自定义开发)
     * @param flowCode æµç¨‹ä¸šåŠ¡å…³è” ä¾‹å¦‚:joa_leave_01
     * @param id è¡¨å•业务数据data id
     * @param formUrl     æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的PC端表单组件(地址)
     * @param formUrlMobile  æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的移动端表单组件(地址)
     * @param username  æµç¨‹å‘起人账号
     * @param jsonData  Json串,额外扩展的流程变量值  ã€éžå¿…填】
     * @return
     * @throws Exception
     */
    Result<String> startMutilProcess(String flowCode, String id, String formUrl, String formUrlMobile,String username, String jsonData) throws Exception;
    /**
     *  24. æµç¨‹æäº¤æŽ¥å£ï¼ˆè‡ªå®šä¹‰è¡¨å•设计器)
     * @param flowCode æµç¨‹ä¸šåŠ¡å…³è” ä¾‹å¦‚:joa_leave_01
     * @param id è¡¨å•业务数据data id
     * @param formUrl     æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的PC端表单组件(地址)
     * @param formUrlMobile  æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的移动端表单组件(地址)
     * @param username  æµç¨‹å‘起人账号
     * @param jsonData  Json串,额外扩展的流程变量值  ã€éžå¿…填】
     * @return
     * @throws Exception
     */
    Result<String> startDesFormMutilProcess(String flowCode, String id, String formUrl, String formUrlMobile,String username,String jsonData) throws Exception;
    /**
     * 25. ä¿å­˜æµç¨‹è‰ç¨¿ç®±æŽ¥å£ï¼ˆè‡ªå®šä¹‰å¼€å‘表单、online表单)
     * @param flowCode æµç¨‹ä¸šåŠ¡å…³è” ä¾‹å¦‚:joa_leave_01
     * @param id è¡¨å•业务数据data id
     * @param formUrl     æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的PC端表单组件(地址) ã€éžå¿…填】
     * @param formUrlMobile  æµç¨‹å®¡æ‰¹æ—¶é™„件页面默认展示的移动端表单组件(地址)  ã€éžå¿…填】
     * @param username  æµç¨‹å‘起人账号
     * @param jsonData  Json串,额外扩展的流程变量值  ã€éžå¿…填】
     * @return
     * @throws Exception
     */
    Result<String> saveMutilProcessDraft(String flowCode, String id, String formUrl, String formUrlMobile,String username,String jsonData) throws Exception;
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/online/api/IOnlineBaseExtAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package org.jeecg.common.online.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.system.vo.DictModel;
import java.util.List;
import java.util.Map;
/**
 * è¡¨å•设计器【Online】翻译API接口
 *
 * @author sunjianlei
 */
public interface IOnlineBaseExtAPI {
    /**
     * ã€Online】 è¡¨å•设计器专用:同步新增
     */
    String cgformPostCrazyForm(String tableName, JSONObject jsonObject) throws Exception;
    /**
     * ã€Online】 è¡¨å•设计器专用:同步编辑
     */
    String cgformPutCrazyForm(String tableName, JSONObject jsonObject) throws Exception;
    /**
     * online表单删除数据
     *
     * @param cgformCode Online表单code
     * @param dataIds    æ•°æ®ID,可逗号分割
     * @return
     */
    String cgformDeleteDataByCode(String cgformCode, String dataIds);
    /**
     * é€šè¿‡online表名查询数据,同时查询出子表的数据
     *
     * @param tableName online表名
     * @param dataIds   online数据ID
     * @return
     */
    JSONObject cgformQueryAllDataByTableName(String tableName, String dataIds);
    /**
     * å¯¹ cgreportGetData çš„返回值做优化,封装 DictModel é›†åˆ
     *
     * @return
     */
    List<DictModel> cgreportGetDataPackage(String code, String dictText, String dictCode, String dataList);
    /**
     * ã€cgreport】通过 head code èŽ·å– sql语句,并执行该语句返回查询数据
     *
     * @param code     æŠ¥è¡¨Code,如果没传ID就通过code查
     * @param forceKey
     * @param dataList
     * @return
     */
    Map<String, Object> cgreportGetData(String code, String forceKey, String dataList);
}
lb-boot/lb-boot-base/jeecg-boot-base-api/jeecg-system-local-api/src/main/java/org/jeecg/common/system/api/ISysBaseAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,335 @@
package org.jeecg.common.system.api;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.api.dto.OnlineAuthDTO;
import org.jeecg.common.api.dto.message.*;
import org.jeecg.common.system.vo.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
 * @Description  åº•层共通业务API,提供其他独立模块调用
 * @Author  scott
 * @Date 2019-4-20
 * @Version V1.0
 */
public interface ISysBaseAPI extends CommonAPI {
    /**
     * 1发送系统消息
     * @param message ä½¿ç”¨æž„造器赋值参数 å¦‚果不设置category(消息类型)则默认为2 å‘送系统消息
     */
    void sendSysAnnouncement(MessageDTO message);
    /**
     * 2发送消息 é™„带业务参数
     * @param message ä½¿ç”¨æž„造器赋值参数
     */
    void sendBusAnnouncement(BusMessageDTO message);
    /**
     * 3通过模板发送消息
     * @param message ä½¿ç”¨æž„造器赋值参数
     */
    void sendTemplateAnnouncement(TemplateMessageDTO message);
    /**
     * 4通过模板发送消息 é™„带业务参数
     * @param message ä½¿ç”¨æž„造器赋值参数
     */
    void sendBusTemplateAnnouncement(BusTemplateMessageDTO message);
    /**
     * 5通过消息中心模板,生成推送内容
     * @param templateDTO ä½¿ç”¨æž„造器赋值参数
     * @return
     */
    String parseTemplateByCode(TemplateDTO templateDTO);
    /**
     * 6根据用户id查询用户信息
     * @param id
     * @return
     */
    LoginUser getUserById(String id);
    /**
     * 7通过用户账号查询角色集合
     * @param username
     * @return
     */
    List<String> getRolesByUsername(String username);
    /**
     * 8通过用户账号查询部门集合
     * @param username
     * @return éƒ¨é—¨ id
     */
    List<String> getDepartIdsByUsername(String username);
    /**
     * 9通过用户账号查询部门 name
     * @param username
     * @return éƒ¨é—¨ name
     */
    List<String> getDepartNamesByUsername(String username);
    /** 11查询所有的父级字典,按照create_time排序 */
    public List<DictModel> queryAllDict();
    /**
     * 12查询所有分类字典
     * @return
     */
    public List<SysCategoryModel> queryAllDSysCategory();
    /**
     * 14查询所有部门 ä½œä¸ºå­—典信息 id -->value,departName -->text
     * @return
     */
    public List<DictModel> queryAllDepartBackDictModel();
    /**
     * 15根据业务类型及业务id修改消息已读
     * @param busType
     * @param busId
     */
    public void updateSysAnnounReadFlag(String busType, String busId);
    /**
     * 16查询表字典 æ”¯æŒè¿‡æ»¤æ•°æ®
     * @param table
     * @param text
     * @param code
     * @param filterSql
     * @return
     */
    public List<DictModel> queryFilterTableDictInfo(String table, String text, String code, String filterSql);
    /**
     * 17查询指定table的 text code èŽ·å–å­—å…¸ï¼ŒåŒ…å«text和value
     * @param table
     * @param text
     * @param code
     * @param keyArray
     * @return
     */
    @Deprecated
    public List<String> queryTableDictByKeys(String table, String text, String code, String[] keyArray);
    /**
     * 18查询所有用户 è¿”回ComboModel
     * @return
     */
    public List<ComboModel> queryAllUserBackCombo();
    /**
     * 19分页查询用户 è¿”回JSONObject
     * @return
     */
    public JSONObject queryAllUser(String userIds, Integer pageNo, Integer pageSize);
    /**
     * 20获取所有角色
     * @return
     */
    public List<ComboModel> queryAllRole();
    /**
     * 21获取所有角色 å¸¦å‚
     * roleIds é»˜è®¤é€‰ä¸­è§’色
     * @return
     */
    public List<ComboModel> queryAllRole(String[] roleIds );
    /**
     * 22通过用户账号查询角色Id集合
     * @param username
     * @return
     */
    public List<String> getRoleIdsByUsername(String username);
    /**
     * 23通过部门编号查询部门id
     * @param orgCode
     * @return
     */
    public String getDepartIdsByOrgCode(String orgCode);
    /**
     * 24查询所有部门
     * @return
     */
    public List<SysDepartModel> getAllSysDepart();
    /**
     * 25查找父级部门
     * @param departId
     * @return
     */
    DictModel getParentDepartId(String departId);
    /**
     * 26根据部门Id获取部门负责人
     * @param deptId
     * @return
     */
    public List<String> getDeptHeadByDepId(String deptId);
    /**
     * 27给指定用户发消息
     * @param userIds
     * @param cmd
     */
    public void sendWebSocketMsg(String[] userIds, String cmd);
    /**
     * 28根据id获取所有参与用户
     * userIds
     * @return
     */
    public List<LoginUser> queryAllUserByIds(String[] userIds);
    /**
     * 29将会议签到信息推动到预览
     * userIds
     * @return
     * @param userId
     */
    void meetingSignWebsocket(String userId);
    /**
     * 30根据name获取所有参与用户
     * userNames
     * @return
     */
    List<LoginUser> queryUserByNames(String[] userNames);
    /**
     * 31获取用户的角色集合
     * @param username
     * @return
     */
    Set<String> getUserRoleSet(String username);
    /**
     * 32获取用户的权限集合
     * @param username
     * @return
     */
    Set<String> getUserPermissionSet(String username);
    /**
     * 33判断是否有online访问的权限
     * @param onlineAuthDTO
     * @return
     */
    boolean hasOnlineAuth(OnlineAuthDTO onlineAuthDTO);
    /**
     * 34通过部门id获取部门全部信息
     */
    SysDepartModel selectAllById(String id);
    /**
     * 35根据用户id查询用户所属公司下所有用户ids
     * @param userId
     * @return
     */
    List<String> queryDeptUsersByUserId(String userId);
    /**
     * 36根据多个用户账号(逗号分隔),查询返回多个用户信息
     * @param usernames
     * @return
     */
    List<JSONObject> queryUsersByUsernames(String usernames);
    /**
     * 37根据多个用户ID(逗号分隔),查询返回多个用户信息
     * @param ids
     * @return
     */
    List<JSONObject> queryUsersByIds(String ids);
    /**
     * 38根据多个部门编码(逗号分隔),查询返回多个部门信息
     * @param orgCodes
     * @return
     */
    List<JSONObject> queryDepartsByOrgcodes(String orgCodes);
    /**
     * 39根据多个部门id(逗号分隔),查询返回多个部门信息
     * @param ids
     * @return
     */
    List<JSONObject> queryDepartsByIds(String ids);
    /**
     * 40发送邮件消息
     * @param email
     * @param title
     * @param content
     */
    void sendEmailMsg(String email,String title,String content);
    /**
     * 41 èŽ·å–å…¬å¸ä¸‹çº§éƒ¨é—¨å’Œå…¬å¸ä¸‹æ‰€æœ‰ç”¨æˆ·ä¿¡æ¯
     * @param orgCode
     */
    List<Map> getDeptUserByOrgCode(String orgCode);
    /**
     * æŸ¥è¯¢åˆ†ç±»å­—典翻译
     */
    List<String> loadCategoryDictItem(String ids);
    /**
     * æ ¹æ®å­—å…¸code加载字典text
     *
     * @param dictCode é¡ºåºï¼štableName,text,code
     * @param keys     è¦æŸ¥è¯¢çš„key
     * @return
     */
    List<String> loadDictItem(String dictCode, String keys);
    /**
     * æ ¹æ®å­—å…¸code查询字典项
     *
     * @param dictCode é¡ºåºï¼štableName,text,code
     * @param dictCode è¦æŸ¥è¯¢çš„key
     * @return
     */
    List<DictModel> getDictItems(String dictCode);
    /**
     *  æ ¹æ®å¤šä¸ªå­—å…¸code查询多个字典项
     * @param dictCodeList
     * @return key = dictCode ï¼› value=对应的字典项
     */
    Map<String, List<DictModel>> getManyDictItems(List<String> dictCodeList);
    /**
     * ã€JSearchSelectTag下拉搜索组件专用接口】
     * å¤§æ•°æ®é‡çš„字典表 èµ°å¼‚步加载  å³å‰ç«¯è¾“入内容过滤数据
     *
     * @param dictCode å­—å…¸code格式:table,text,code
     * @param keyword è¿‡æ»¤å…³é”®å­—
     * @return
     */
    List<DictModel> loadDictItemByKeyword(String dictCode, String keyword, Integer pageSize);
    SysDepartModel getCompByOrgCode(String orgCode);
    UserVO getUserVOById(String userId);
    List<RoleVO> getRolesByUserId(String userId);
}
lb-boot/lb-boot-base/jeecg-boot-base-api/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>lb-boot-base</artifactId>
        <groupId>org.jeecgframework.boot</groupId>
        <version>3.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jeecg-boot-base-api</artifactId>
    <packaging>pom</packaging>
    <modules>
        <module>jeecg-system-local-api</module>
        <module>jeecg-system-cloud-api</module>
    </modules>
    <dependencies>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-boot-base-core</artifactId>
        </dependency>
    </dependencies>
</project>
lb-boot/lb-boot-base/jeecg-boot-base-core/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,266 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.jeecgframework.boot</groupId>
        <artifactId>lb-boot-base</artifactId>
        <version>3.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>jeecg-boot-base-core</artifactId>
    <repositories>
        <repository>
            <id>aliyun</id>
            <name>aliyun Repository</name>
            <url>https://maven.aliyun.com/repository/public</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
        <repository>
            <id>jeecg</id>
            <name>jeecg Repository</name>
            <url>https://maven.jeecg.org/nexus/content/repositories/jeecg</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <dependencies>
        <!--jeecg-tools-->
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-boot-base-tools</artifactId>
        </dependency>
        <!--集成springmvc框架并实现自动配置 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- websocket -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-aop</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--springboot2.3+ éœ€å¼•å…¥validation对应的包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-validation</artifactId>
        </dependency>
        <!-- commons -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>${commons.version}</version>
        </dependency>
        <!-- freemarker -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatis-plus.version}</version>
        </dependency>
        <!-- druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>
        <!-- åŠ¨æ€æ•°æ®æº -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
            <version>${dynamic-datasource-spring-boot-starter.version}</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>commons-collections</groupId>
                    <artifactId>commons-collections</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>hibernate-re</artifactId>
            <version>3.0.02</version>
        </dependency>
        <!-- æ•°æ®åº“驱动 -->
        <!--mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-connector-java.version}</version>
            <scope>runtime</scope>
        </dependency>
        <!--  sqlserver-->
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>sqljdbc4</artifactId>
            <version>${sqljdbc4.version}</version>
            <scope>runtime</scope>
        </dependency>
        <!-- oracle驱动 -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>${ojdbc6.version}</version>
            <scope>runtime</scope>
        </dependency>
        <!-- postgresql驱动 -->
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>${postgresql.version}</version>
            <scope>runtime</scope>
        </dependency>
        <!-- Quartz定时任务 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-quartz</artifactId>
        </dependency>
        <!--JWT-->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>${java-jwt.version}</version>
        </dependency>
        <!--shiro-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring-boot-starter</artifactId>
            <version>${shiro.version}</version>
        </dependency>
        <!-- shiro-redis -->
        <dependency>
            <groupId>org.crazycake</groupId>
            <artifactId>shiro-redis</artifactId>
            <version>${shiro-redis.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.shiro</groupId>
                    <artifactId>shiro-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- knife4j -->
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>${knife4j-spring-boot-starter.version}</version>
        </dependency>
        <!-- ä»£ç ç”Ÿæˆå™¨ -->
        <!-- å¦‚下载失败,请参考此文档  http://doc.jeecg.com/2043876 -->
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>codegenerate</artifactId>
            <version>${codegenerate.version}</version>
        </dependency>
        <!-- AutoPoi Excel工具类-->
        <dependency>
            <groupId>org.jeecgframework</groupId>
            <artifactId>autopoi-web</artifactId>
            <version>${autopoi-web.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-codec</groupId>
                    <artifactId>commons-codec</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- mini文件存储服务 -->
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
        </dependency>
        <!-- é˜¿é‡Œäº‘短信 -->
        <dependency>
            <groupId>com.aliyun</groupId>
            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
            <version>${aliyun-java-sdk-dysmsapi.version}</version>
        </dependency>
        <!-- aliyun oss -->
        <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>${aliyun.oss.version}</version>
        </dependency>
        <!-- ç¬¬ä¸‰æ–¹ç™»å½•  -->
        <dependency>
            <groupId>com.xkcoding.justauth</groupId>
            <artifactId>justauth-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>${aliyun-easyexcel.version}</version>
        </dependency>
       <!--excel导出工具-->
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls</artifactId>
            <version>2.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.jxls</groupId>
            <artifactId>jxls-poi</artifactId>
            <version>2.13.0</version>
        </dependency>
        <dependency>
            <groupId>cn.6tail</groupId>
            <artifactId>lunar</artifactId>
            <version>1.3.13</version>
        </dependency>
    </dependencies>
</project>
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/CommonAPI.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,123 @@
package org.jeecg.common.api;
import org.jeecg.common.system.vo.*;
import java.util.List;
import java.util.Map;
import java.util.Set;
public interface CommonAPI {
    /**
     * 1查询用户角色信息
     * @param username
     * @return
     */
    Set<String> queryUserRoles(String username);
    /**
     * 2查询用户权限信息
     * @param username
     * @return
     */
    Set<String> queryUserAuths(String username);
    /**
     * 3根据 id æŸ¥è¯¢æ•°æ®åº“中存储的 DynamicDataSourceModel
     *
     * @param dbSourceId
     * @return
     */
    DynamicDataSourceModel getDynamicDbSourceById(String dbSourceId);
    /**
     * 4根据 code æŸ¥è¯¢æ•°æ®åº“中存储的 DynamicDataSourceModel
     *
     * @param dbSourceCode
     * @return
     */
    DynamicDataSourceModel getDynamicDbSourceByCode(String dbSourceCode);
    /**
     * 5根据用户账号查询用户信息
     * @param username
     * @return
     */
    public LoginUser getUserByName(String username);
    /**
     * 6字典表的 ç¿»è¯‘
     * @param table
     * @param text
     * @param code
     * @param key
     * @return
     */
    String translateDictFromTable(String table, String text, String code, String key);
    /**
     * 7普通字典的翻译
     * @param code
     * @param key
     * @return
     */
    String translateDict(String code, String key);
    /**
     * 8查询数据权限
     * @return
     */
    List<SysPermissionDataRuleModel> queryPermissionDataRule(String component, String requestPath, String username);
    /**
     * 9查询用户信息
     * @param username
     * @return
     */
    SysUserCacheInfo getCacheUser(String username);
    /**
     * 10获取数据字典
     * @param code
     * @return
     */
    public List<DictModel> queryDictItemsByCode(String code);
    /**
     * èŽ·å–æœ‰æ•ˆçš„æ•°æ®å­—å…¸é¡¹
     * @param code
     * @return
     */
    public List<DictModel> queryEnableDictItemsByCode(String code);
    /**
     * 13获取表数据字典
     * @param table
     * @param text
     * @param code
     * @return
     */
    List<DictModel> queryTableDictItemsByCode(String table, String text, String code);
    /**
     * 14 æ™®é€šå­—典的翻译,根据多个dictCode和多条数据,多个以逗号分割
     * @param dictCodes ä¾‹å¦‚:user_status,sex
     * @param keys ä¾‹å¦‚:1,2,0
     * @return
     */
    Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys);
    /**
     * 15 å­—典表的 ç¿»è¯‘,可批量
     * @param table
     * @param text
     * @param code
     * @param keys å¤šä¸ªç”¨é€—号分割
     * @return
     */
    List<DictModel> translateDictFromTableByKeys(String table, String text, String code, String keys);
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileDownDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package org.jeecg.common.api.dto;
import lombok.Data;
import javax.servlet.http.HttpServletResponse;
import java.io.Serializable;
/**
 * æ–‡ä»¶ä¸‹è½½
 * cloud api ç”¨åˆ°çš„æŽ¥å£ä¼ è¾“对象
 */
@Data
public class FileDownDTO implements Serializable {
    private static final long serialVersionUID = 6749126258686446019L;
    private String filePath;
    private String uploadpath;
    private String uploadType;
    private HttpServletResponse response;
    public FileDownDTO(){}
    public FileDownDTO(String filePath, String uploadpath, String uploadType,HttpServletResponse response){
        this.filePath = filePath;
        this.uploadpath = uploadpath;
        this.uploadType = uploadType;
        this.response = response;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/FileUploadDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package org.jeecg.common.api.dto;
import lombok.Data;
import org.springframework.web.multipart.MultipartFile;
import java.io.Serializable;
/**
 * æ–‡ä»¶ä¸Šä¼ 
 * cloud api ç”¨åˆ°çš„æŽ¥å£ä¼ è¾“对象
 */
@Data
public class FileUploadDTO implements Serializable {
    private static final long serialVersionUID = -4111953058578954386L;
    private MultipartFile file;
    private String bizPath;
    private String uploadType;
    private String customBucket;
    public FileUploadDTO(){
    }
    /**
     * ç®€å•上传 æž„造器1
     * @param file
     * @param bizPath
     * @param uploadType
     */
    public FileUploadDTO(MultipartFile file,String bizPath,String uploadType){
        this.file = file;
        this.bizPath = bizPath;
        this.uploadType = uploadType;
    }
    /**
     * ç”³æ˜Žæ¡¶ æ–‡ä»¶ä¸Šä¼  æž„造器2
     * @param file
     * @param bizPath
     * @param uploadType
     * @param customBucket
     */
    public FileUploadDTO(MultipartFile file,String bizPath,String uploadType,String customBucket){
        this.file = file;
        this.bizPath = bizPath;
        this.uploadType = uploadType;
        this.customBucket = customBucket;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/LogDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,68 @@
package org.jeecg.common.api.dto;
import lombok.Data;
import org.jeecg.common.system.vo.LoginUser;
import java.io.Serializable;
import java.util.Date;
/**
 * æ—¥å¿—对象
 * cloud api ç”¨åˆ°çš„æŽ¥å£ä¼ è¾“对象
 */
@Data
public class LogDTO implements Serializable {
    private static final long serialVersionUID = 8482720462943906924L;
    /**内容*/
    private String logContent;
    /**日志类型(0:操作日志;1:登录日志;2:定时任务)  */
    private Integer logType;
    /**操作类型(1:添加;2:修改;3:删除;) */
    private Integer operateType;
    /**登录用户 */
    private LoginUser loginUser;
    private String id;
    private String createBy;
    private Date createTime;
    private Long costTime;
    private String ip;
    /**请求参数 */
    private String requestParam;
    /**请求类型*/
    private String requestType;
    /**请求路径*/
    private String requestUrl;
    /**请求方法 */
    private String method;
    /**操作人用户名称*/
    private String username;
    /**操作人用户账户*/
    private String userid;
    public LogDTO(){
    }
    public LogDTO(String logContent, Integer logType, Integer operatetype){
        this.logContent = logContent;
        this.logType = logType;
        this.operateType = operatetype;
    }
    public LogDTO(String logContent, Integer logType, Integer operatetype, LoginUser loginUser){
        this.logContent = logContent;
        this.logType = logType;
        this.operateType = operatetype;
        this.loginUser = loginUser;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/OnlineAuthDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package org.jeecg.common.api.dto;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
 * online æ‹¦æˆªå™¨æƒé™åˆ¤æ–­
 * cloud api ç”¨åˆ°çš„æŽ¥å£ä¼ è¾“对象
 */
@Data
public class OnlineAuthDTO implements Serializable {
    private static final long serialVersionUID = 1771827545416418203L;
    /**
     * ç”¨æˆ·å
     */
    private String username;
    /**
     * å¯èƒ½çš„请求地址
     */
    private List<String> possibleUrl;
    /**
     * online开发的菜单地址
     */
    private String onlineFormUrl;
    public OnlineAuthDTO(){
    }
    public OnlineAuthDTO(String username, List<String> possibleUrl, String onlineFormUrl){
        this.username = username;
        this.possibleUrl = possibleUrl;
        this.onlineFormUrl = onlineFormUrl;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusMessageDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package org.jeecg.common.api.dto.message;
import lombok.Data;
import java.io.Serializable;
/**
 * å¸¦ä¸šåŠ¡å‚æ•°çš„æ¶ˆæ¯
 */
@Data
public class BusMessageDTO extends MessageDTO implements Serializable {
    private static final long serialVersionUID = 9104793287983367669L;
    /**
     * ä¸šåŠ¡ç±»åž‹
     */
    private String busType;
    /**
     * ä¸šåŠ¡id
     */
    private String busId;
    public BusMessageDTO(){
    }
    /**
     * æž„造 å¸¦ä¸šåŠ¡å‚æ•°çš„æ¶ˆæ¯
     * @param fromUser
     * @param toUser
     * @param title
     * @param msgContent
     * @param msgCategory
     * @param busType
     * @param busId
     */
    public BusMessageDTO(String fromUser, String toUser, String title, String msgContent, String msgCategory, String busType, String busId){
        super(fromUser, toUser, title, msgContent, msgCategory);
        this.busId = busId;
        this.busType = busType;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/BusTemplateMessageDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package org.jeecg.common.api.dto.message;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
 * å¸¦ä¸šåŠ¡å‚æ•°çš„æ¨¡æ¿æ¶ˆæ¯
 */
@Data
public class BusTemplateMessageDTO extends TemplateMessageDTO implements Serializable {
    private static final long serialVersionUID = -4277810906346929459L;
    /**
     * ä¸šåŠ¡ç±»åž‹
     */
    private String busType;
    /**
     * ä¸šåŠ¡id
     */
    private String busId;
    public BusTemplateMessageDTO(){
    }
    /**
     * æž„造 å¸¦ä¸šåŠ¡å‚æ•°çš„æ¨¡æ¿æ¶ˆæ¯
     * @param fromUser
     * @param toUser
     * @param title
     * @param templateParam
     * @param templateCode
     * @param busType
     * @param busId
     */
    public BusTemplateMessageDTO(String fromUser, String toUser, String title, Map<String, String> templateParam, String templateCode, String busType, String busId){
        super(fromUser, toUser, title, templateParam, templateCode);
        this.busId = busId;
        this.busType = busType;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/CustomMessage.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.jeecg.common.api.dto.message;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
@Data
public class CustomMessage implements Serializable {
   private String userId;
   private Map<String,String> baseMap;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/MessageDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package org.jeecg.common.api.dto.message;
import lombok.Data;
import org.jeecg.common.constant.CommonConstant;
import java.io.Serializable;
/**
 * æ™®é€šæ¶ˆæ¯
 */
@Data
public class MessageDTO implements Serializable {
    private static final long serialVersionUID = -5690444483968058442L;
    /**
     * å‘送人(用户登录账户)
     */
    protected String fromUser;
    /**
     * å‘送给(用户登录账户)
     */
    protected String toUser;
    /**
     * å‘送给所有人
     */
    protected boolean toAll;
    /**
     * æ¶ˆæ¯ä¸»é¢˜
     */
    protected String title;
    /**
     * æ¶ˆæ¯å†…容
     */
    protected String content;
    /**
     * æ¶ˆæ¯ç±»åž‹ 1:消息  2:系统消息
     */
    protected String category;
    public MessageDTO(){
    }
    /**
     * æž„造器1 ç³»ç»Ÿæ¶ˆæ¯
     */
    public MessageDTO(String fromUser,String toUser,String title, String content){
        this.fromUser = fromUser;
        this.toUser = toUser;
        this.title = title;
        this.content = content;
        //默认 éƒ½æ˜¯2系统消息
        this.category = CommonConstant.MSG_CATEGORY_2;
    }
    /**
     * æž„造器2 æ”¯æŒè®¾ç½®category 1:消息  2:系统消息
     */
    public MessageDTO(String fromUser,String toUser,String title, String content, String category){
        this.fromUser = fromUser;
        this.toUser = toUser;
        this.title = title;
        this.content = content;
        this.category = category;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package org.jeecg.common.api.dto.message;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
 * æ¶ˆæ¯æ¨¡æ¿dto
 */
@Data
public class TemplateDTO implements Serializable {
    private static final long serialVersionUID = 5848247133907528650L;
    /**
     * æ¨¡æ¿ç¼–码
     */
    protected String templateCode;
    /**
     * æ¨¡æ¿å‚æ•°
     */
    protected Map<String, String> templateParam;
    /**
     * æž„造器 é€šè¿‡è®¾ç½®æ¨¡æ¿å‚数和模板编码 ä½œä¸ºå‚数获取消息内容
     */
    public TemplateDTO(String templateCode, Map<String, String> templateParam){
        this.templateCode = templateCode;
        this.templateParam = templateParam;
    }
    public TemplateDTO(){
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/dto/message/TemplateMessageDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,48 @@
package org.jeecg.common.api.dto.message;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
 * æ¨¡æ¿æ¶ˆæ¯
 */
@Data
public class TemplateMessageDTO extends TemplateDTO implements Serializable {
    private static final long serialVersionUID = 411137565170647585L;
    /**
     * å‘送人(用户登录账户)
     */
    protected String fromUser;
    /**
     * å‘送给(用户登录账户)
     */
    protected String toUser;
    /**
     * æ¶ˆæ¯ä¸»é¢˜
     */
    protected String title;
    public TemplateMessageDTO(){
    }
    /**
     * æž„造器1 å‘模板消息用
     */
    public TemplateMessageDTO(String fromUser, String toUser,String title, Map<String, String> templateParam, String templateCode){
        super(templateCode, templateParam);
        this.fromUser = fromUser;
        this.toUser = toUser;
        this.title = title;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/api/vo/Result.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
package org.jeecg.common.api.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.common.constant.CommonConstant;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
 *   æŽ¥å£è¿”回数据格式
 * @author scott
 * @email jeecgos@163.com
 * @date  2019å¹´1月19日
 */
@Data
@ApiModel(value="接口返回对象", description="接口返回对象")
public class Result<T> implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * æˆåŠŸæ ‡å¿—
     */
    @ApiModelProperty(value = "成功标志")
    private boolean success = true;
    /**
     * è¿”回处理消息
     */
    @ApiModelProperty(value = "返回处理消息")
    private String message = "";
    /**
     * è¿”回代码
     */
    @ApiModelProperty(value = "返回代码")
    private Integer code = 0;
    /**
     * è¿”回数据对象 data
     */
    @ApiModelProperty(value = "返回数据对象")
    private T result;
    /**
     * è¿”回数据对象 data
     */
    @ApiModelProperty(value = "返回数据对象 ext")
    private List<Map<String,Object>> resultExt;
    /**
     * æ—¶é—´æˆ³
     */
    @ApiModelProperty(value = "时间戳")
    private long timestamp = System.currentTimeMillis();
    public Result() {
    }
    /**
     * å…¼å®¹VUE3版token失效不跳转登录页面
     * @param code
     * @param message
     */
    public Result(Integer code,String message) {
        this.code = code;
        this.message = message;
    }
    public Result<T> success(String message) {
        this.message = message;
        this.code = CommonConstant.SC_OK_200;
        this.success = true;
        return this;
    }
    @Deprecated
    public static Result<Object> ok() {
        Result<Object> r = new Result<Object>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        return r;
    }
    @Deprecated
    public static Result<Object> ok(String msg) {
        Result<Object> r = new Result<Object>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        r.setMessage(msg);
        return r;
    }
    @Deprecated
    public static Result<Object> ok(Object data) {
        Result<Object> r = new Result<Object>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        r.setResult(data);
        return r;
    }
    public static<T> Result<T> OK() {
        Result<T> r = new Result<T>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        return r;
    }
    public static<T> Result<T> OK(String msg) {
        Result<T> r = new Result<T>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        r.setMessage(msg);
        //Result OK(String msg)方法会造成兼容性问题 issues/I4IP3D
        r.setResult((T) msg);
        return r;
    }
    public static<T> Result<T> OK(T data) {
        Result<T> r = new Result<T>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        r.setResult(data);
        return r;
    }
    public static<T> Result<T> OK(String msg, T data) {
        Result<T> r = new Result<T>();
        r.setSuccess(true);
        r.setCode(CommonConstant.SC_OK_200);
        r.setMessage(msg);
        r.setResult(data);
        return r;
    }
    public static<T> Result<T> error(String msg, T data) {
        Result<T> r = new Result<T>();
        r.setSuccess(false);
        r.setCode(CommonConstant.SC_INTERNAL_SERVER_ERROR_500);
        r.setMessage(msg);
        r.setResult(data);
        return r;
    }
    public static Result<Object> error(String msg) {
        return error(CommonConstant.SC_INTERNAL_SERVER_ERROR_500, msg);
    }
    public static Result<Object> error(int code, String msg) {
        Result<Object> r = new Result<Object>();
        r.setCode(code);
        r.setMessage(msg);
        r.setSuccess(false);
        return r;
    }
    public Result<T> error500(String message) {
        this.message = message;
        this.code = CommonConstant.SC_INTERNAL_SERVER_ERROR_500;
        this.success = false;
        return this;
    }
    /**
     * æ— æƒé™è®¿é—®è¿”回结果
     */
    public static Result<Object> noauth(String msg) {
        return error(CommonConstant.SC_JEECG_NO_AUTHZ, msg);
    }
    @JsonIgnore
    private String onlTable;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/AutoLogAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,270 @@
package org.jeecg.common.aspect;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.PropertyFilter;
import org.apache.shiro.SecurityUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.jeecg.common.api.dto.LogDTO;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.ModuleType;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.IPUtils;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
import org.springframework.stereotype.Component;
import org.springframework.validation.BindingResult;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Date;
/**
 * ç³»ç»Ÿæ—¥å¿—,切面处理类
 *
 * @Author scott
 * @email jeecgos@163.com
 * @Date 2018å¹´1月14日
 */
@Aspect
@Component
public class AutoLogAspect {
    @Resource
    private BaseCommonService baseCommonService;
    @Pointcut("@annotation(org.jeecg.common.aspect.annotation.AutoLog)")
    public void logPointCut() {
    }
    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        long beginTime = System.currentTimeMillis();
        //执行方法
        Object result = point.proceed();
        //执行时长(毫秒)
        long time = System.currentTimeMillis() - beginTime;
        //保存日志
        saveSysLog(point, time, result);
        return result;
    }
    private void saveSysLog(ProceedingJoinPoint joinPoint, long time, Object obj) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        LogDTO dto = new LogDTO();
        AutoLog syslog = method.getAnnotation(AutoLog.class);
        if(syslog != null){
            //update-begin-author:taoyan date:
            String content = syslog.value();
            if(syslog.module()== ModuleType.ONLINE){
                content = getOnlineLogContent(obj, content);
            }
            //注解上的描述,操作日志内容
            dto.setLogType(syslog.logType());
            dto.setLogContent(content);
        }
        //请求的方法名
        String className = joinPoint.getTarget().getClass().getName();
        String methodName = signature.getName();
        dto.setMethod(className + "." + methodName + "()");
        //设置操作类型
        if (dto.getLogType() == CommonConstant.LOG_TYPE_2) {
            dto.setOperateType(getOperateType(methodName, syslog.operateType()));
        }
        //获取request
        HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
        //请求的参数
        dto.setRequestParam(getReqestParams(request,joinPoint));
        //设置IP地址
        dto.setIp(IPUtils.getIpAddr(request));
        //获取登录用户信息
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if(sysUser!=null){
            dto.setUserid(sysUser.getUsername());
            dto.setUsername(sysUser.getRealname());
        }
        //耗时
        dto.setCostTime(time);
        dto.setCreateTime(new Date());
        //保存系统日志
        baseCommonService.addLog(dto);
    }
    /**
     * èŽ·å–æ“ä½œç±»åž‹
     */
    private int getOperateType(String methodName,int operateType) {
        if (operateType > 0) {
            return operateType;
        }
        if (methodName.startsWith("list")) {
            return CommonConstant.OPERATE_TYPE_1;
        }
        if (methodName.startsWith("add")) {
            return CommonConstant.OPERATE_TYPE_2;
        }
        if (methodName.startsWith("edit")) {
            return CommonConstant.OPERATE_TYPE_3;
        }
        if (methodName.startsWith("delete")) {
            return CommonConstant.OPERATE_TYPE_4;
        }
        if (methodName.startsWith("import")) {
            return CommonConstant.OPERATE_TYPE_5;
        }
        if (methodName.startsWith("export")) {
            return CommonConstant.OPERATE_TYPE_6;
        }
        return CommonConstant.OPERATE_TYPE_1;
    }
    /**
     * @Description: èŽ·å–è¯·æ±‚å‚æ•°
     * @author: scott
     * @date: 2020/4/16 0:10
     * @param request:  request
     * @param joinPoint:  joinPoint
     * @Return: java.lang.String
     */
    private String getReqestParams(HttpServletRequest request, JoinPoint joinPoint) {
        String httpMethod = request.getMethod();
        String params = "";
        if ("POST".equals(httpMethod) || "PUT".equals(httpMethod) || "PATCH".equals(httpMethod)) {
            Object[] paramsArray = joinPoint.getArgs();
            // java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
            //  https://my.oschina.net/mengzhang6/blog/2395893
            Object[] arguments  = new Object[paramsArray.length];
            for (int i = 0; i < paramsArray.length; i++) {
                if (paramsArray[i] instanceof BindingResult || paramsArray[i] instanceof ServletRequest || paramsArray[i] instanceof ServletResponse || paramsArray[i] instanceof MultipartFile) {
                    //ServletRequest不能序列化,从入参里排除,否则报异常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
                    //ServletResponse不能序列化 ä»Žå…¥å‚里排除,否则报异常:java.lang.IllegalStateException: getOutputStream() has already been called for this response
                    continue;
                }
                arguments[i] = paramsArray[i];
            }
            //update-begin-author:taoyan date:20200724 for:日志数据太长的直接过滤掉
            PropertyFilter profilter = new PropertyFilter() {
                @Override
                public boolean apply(Object o, String name, Object value) {
                    if(value!=null && value.toString().length()>500){
                        return false;
                    }
                    return true;
                }
            };
            params = JSONObject.toJSONString(arguments, profilter);
            //update-end-author:taoyan date:20200724 for:日志数据太长的直接过滤掉
        } else {
            MethodSignature signature = (MethodSignature) joinPoint.getSignature();
            Method method = signature.getMethod();
            // è¯·æ±‚的方法参数值
            Object[] args = joinPoint.getArgs();
            // è¯·æ±‚的方法参数名称
            LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();
            String[] paramNames = u.getParameterNames(method);
            if (args != null && paramNames != null) {
                for (int i = 0; i < args.length; i++) {
                    params += "  " + paramNames[i] + ": " + args[i];
                }
            }
        }
        return params;
    }
    /**
     * online日志内容拼接
     * @param obj
     * @param content
     * @return
     */
    private String getOnlineLogContent(Object obj, String content){
        if (Result.class.isInstance(obj)){
            Result res = (Result)obj;
            String msg = res.getMessage();
            String tableName = res.getOnlTable();
            if(oConvertUtils.isNotEmpty(tableName)){
                content+=",表名:"+tableName;
            }
            if(res.isSuccess()){
                content+= ","+(oConvertUtils.isEmpty(msg)?"操作成功":msg);
            }else{
                content+= ","+(oConvertUtils.isEmpty(msg)?"操作失败":msg);
            }
        }
        return content;
    }
    /*    private void saveSysLog(ProceedingJoinPoint joinPoint, long time, Object obj) {
        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
        Method method = signature.getMethod();
        SysLog sysLog = new SysLog();
        AutoLog syslog = method.getAnnotation(AutoLog.class);
        if(syslog != null){
            //update-begin-author:taoyan date:
            String content = syslog.value();
            if(syslog.module()== ModuleType.ONLINE){
                content = getOnlineLogContent(obj, content);
            }
            //注解上的描述,操作日志内容
            sysLog.setLogContent(content);
            sysLog.setLogType(syslog.logType());
        }
        //请求的方法名
        String className = joinPoint.getTarget().getClass().getName();
        String methodName = signature.getName();
        sysLog.setMethod(className + "." + methodName + "()");
        //设置操作类型
        if (sysLog.getLogType() == CommonConstant.LOG_TYPE_2) {
            sysLog.setOperateType(getOperateType(methodName, syslog.operateType()));
        }
        //获取request
        HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
        //请求的参数
        sysLog.setRequestParam(getReqestParams(request,joinPoint));
        //设置IP地址
        sysLog.setIp(IPUtils.getIpAddr(request));
        //获取登录用户信息
        LoginUser sysUser = (LoginUser)SecurityUtils.getSubject().getPrincipal();
        if(sysUser!=null){
            sysLog.setUserid(sysUser.getUsername());
            sysLog.setUsername(sysUser.getRealname());
        }
        //耗时
        sysLog.setCostTime(time);
        sysLog.setCreateTime(new Date());
        //保存系统日志
        sysLogService.save(sysLog);
    }*/
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/DictAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,390 @@
package org.jeecg.common.aspect;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
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.jeecg.common.api.CommonAPI;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
 * @Description: å­—å…¸aopç±»
 * @Author: dangzhenghui
 * @Date: 2019-3-17 21:50
 * @Version: 1.0
 */
@Aspect
@Component
@Slf4j
public class DictAspect {
    @Autowired
    private CommonAPI commonAPI;
    @Autowired
    public RedisTemplate redisTemplate;
    // å®šä¹‰åˆ‡ç‚¹Pointcut
    @Pointcut("execution(public * org.jeecg.modules..*.*Controller.*(..))")
    public void excudeService() {
    }
    @Around("excudeService()")
    public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
        long time1=System.currentTimeMillis();
        Object result = pjp.proceed();
        long time2=System.currentTimeMillis();
        log.debug("获取JSON数据 è€—时:"+(time2-time1)+"ms");
        long start=System.currentTimeMillis();
        this.parseDictText(result);
        long end=System.currentTimeMillis();
        log.debug("注入字典到JSON数据  è€—æ—¶"+(end-start)+"ms");
        return result;
    }
    /**
     * æœ¬æ–¹æ³•针对返回对象为Result çš„IPage的分页列表数据进行动态字典注入
     * å­—典注入实现 é€šè¿‡å¯¹å®žä½“类添加注解@dict æ¥æ ‡è¯†éœ€è¦çš„字典内容,字典分为单字典code即可 ï¼Œtable字典 code table text配合使用与原来jeecg的用法相同
     * ç¤ºä¾‹ä¸ºSysUser   å­—段为sex æ·»åŠ äº†æ³¨è§£@Dict(dicCode = "sex") ä¼šåœ¨å­—典服务立马查出来对应的text ç„¶åŽåœ¨è¯·æ±‚list的时候将这个字典text,已字段名称加_dictText形式返回到前端
     * ä¾‹è¾“入当前返回值的就会多出一个sex_dictText字段
     * {
     *      sex:1,
     *      sex_dictText:"男"
     * }
     * å‰ç«¯ç›´æŽ¥å–值sext_dictText在table里面无需再进行前端的字典转换了
     *  customRender:function (text) {
     *               if(text==1){
     *                 return "男";
     *               }else if(text==2){
     *                 return "女";
     *               }else{
     *                 return text;
     *               }
     *             }
     *             ç›®å‰vue是这么进行字典渲染到table上的多了就很麻烦了 è¿™ä¸ªç›´æŽ¥åœ¨æœåŠ¡ç«¯æ¸²æŸ“å®Œæˆå‰ç«¯å¯ä»¥ç›´æŽ¥ç”¨
     * @param result
     */
    private void parseDictText(Object result) {
        if (result instanceof Result) {
            if (((Result) result).getResult() instanceof IPage) {
                List<JSONObject> items = new ArrayList<>();
                //step.1 ç­›é€‰å‡ºåŠ äº† Dict æ³¨è§£çš„字段列表
                List<Field> dictFieldList = new ArrayList<>();
                // å­—典数据列表, key = å­—å…¸code,value=数据列表
                Map<String, List<String>> dataListMap = new HashMap<>();
                for (Object record : ((IPage) ((Result) result).getResult()).getRecords()) {
                    ObjectMapper mapper = new ObjectMapper();
                    String json="{}";
                    try {
                        //解决@JsonFormat注解解析不了的问题详见SysAnnouncement类的@JsonFormat
                         json = mapper.writeValueAsString(record);
                    } catch (JsonProcessingException e) {
                        log.error("json解析失败"+e.getMessage(),e);
                    }
                    JSONObject item = JSONObject.parseObject(json);
                    //update-begin--Author:scott -- Date:20190603 ----for:解决继承实体字段无法翻译问题------
                    //for (Field field : record.getClass().getDeclaredFields()) {
                    // éåŽ†æ‰€æœ‰å­—æ®µï¼ŒæŠŠå­—å…¸Code取出来,放到 map é‡Œ
                    for (Field field : oConvertUtils.getAllFields(record)) {
                        String value = item.getString(field.getName());
                        if (oConvertUtils.isEmpty(value)) {
                            continue;
                        }
                    //update-end--Author:scott  -- Date:20190603 ----for:解决继承实体字段无法翻译问题------
                        if (field.getAnnotation(Dict.class) != null) {
                            if (!dictFieldList.contains(field)) {
                                dictFieldList.add(field);
                            }
                            String code = field.getAnnotation(Dict.class).dicCode();
                            String text = field.getAnnotation(Dict.class).dicText();
                            String table = field.getAnnotation(Dict.class).dictTable();
                            List<String> dataList;
                            String dictCode = code;
                            if (!StringUtils.isEmpty(table)) {
                                dictCode = String.format("%s,%s,%s", table, text, code);
                            }
                            dataList = dataListMap.computeIfAbsent(dictCode, k -> new ArrayList<>());
                            this.listAddAllDeduplicate(dataList, Arrays.asList(value.split(",")));
                        }
                        //date类型默认转换string格式化日期
                        if (field.getType().getName().equals("java.util.Date")&&field.getAnnotation(JsonFormat.class)==null&&item.get(field.getName())!=null){
                            SimpleDateFormat aDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                            item.put(field.getName(), aDate.format(new Date((Long) item.get(field.getName()))));
                        }
                    }
                    items.add(item);
                }
                //step.2 è°ƒç”¨ç¿»è¯‘方法,一次性翻译
                Map<String, List<DictModel>> translText = this.translateAllDict(dataListMap);
                //step.3 å°†ç¿»è¯‘结果填充到返回结果里
                for (JSONObject record : items) {
                    for (Field field : dictFieldList) {
                        String code = field.getAnnotation(Dict.class).dicCode();
                        String text = field.getAnnotation(Dict.class).dicText();
                        String table = field.getAnnotation(Dict.class).dictTable();
                        String fieldDictCode = code;
                        if (!StringUtils.isEmpty(table)) {
                            fieldDictCode = String.format("%s,%s,%s", table, text, code);
                        }
                        String value = record.getString(field.getName());
                        if (oConvertUtils.isNotEmpty(value)) {
                            List<DictModel> dictModels = translText.get(fieldDictCode);
                            if(dictModels==null || dictModels.size()==0){
                                continue;
                            }
                            String textValue = this.translDictText(dictModels, value);
                            log.debug(" å­—å…¸Val : " + textValue);
                            log.debug(" __翻译字典字段__ " + field.getName() + CommonConstant.DICT_TEXT_SUFFIX + ": " + textValue);
                            // TODO-sun æµ‹è¯•输出,待删
                            log.debug(" ---- dictCode: " + fieldDictCode);
                            log.debug(" ---- value: " + value);
                            log.debug(" ----- text: " + textValue);
                            log.debug(" ---- dictModels: " + JSON.toJSONString(dictModels));
                            record.put(field.getName() + CommonConstant.DICT_TEXT_SUFFIX, textValue);
                        }
                    }
                }
                ((IPage) ((Result) result).getResult()).setRecords(items);
            }
        }
    }
    /**
     * list åŽ»é‡æ·»åŠ 
     */
    private void listAddAllDeduplicate(List<String> dataList, List<String> addList) {
        // ç­›é€‰å‡ºdataList中没有的数据
        List<String> filterList = addList.stream().filter(i -> !dataList.contains(i)).collect(Collectors.toList());
        dataList.addAll(filterList);
    }
    /**
     * ä¸€æ¬¡æ€§æŠŠæ‰€æœ‰çš„字典都翻译了
     * 1.  æ‰€æœ‰çš„æ™®é€šæ•°æ®å­—典的所有数据只执行一次SQL
     * 2.  è¡¨å­—典相同的所有数据只执行一次SQL
     * @param dataListMap
     * @return
     */
    private Map<String, List<DictModel>> translateAllDict(Map<String, List<String>> dataListMap) {
        // ç¿»è¯‘后的字典文本,key=dictCode
        Map<String, List<DictModel>> translText = new HashMap<>();
        // éœ€è¦ç¿»è¯‘的数据(有些可以从redis缓存中获取,就不走数据库查询)
        List<String> needTranslData = new ArrayList<>();
        //step.1 å…ˆé€šè¿‡redis中获取缓存字典数据
        for (String dictCode : dataListMap.keySet()) {
            List<String> dataList = dataListMap.get(dictCode);
            if (dataList.size() == 0) {
                continue;
            }
            // è¡¨å­—典需要翻译的数据
            List<String> needTranslDataTable = new ArrayList<>();
            for (String s : dataList) {
                String data = s.trim();
                if (data.length() == 0) {
                    continue; //跳过循环
                }
                if (dictCode.contains(",")) {
                    String keyString = String.format("sys:cache:dictTable::SimpleKey [%s,%s]", dictCode, data);
                    if (redisTemplate.hasKey(keyString)) {
                        try {
                            String text = oConvertUtils.getString(redisTemplate.opsForValue().get(keyString));
                            List<DictModel> list = translText.computeIfAbsent(dictCode, k -> new ArrayList<>());
                            list.add(new DictModel(data, text));
                        } catch (Exception e) {
                            log.warn(e.getMessage());
                        }
                    } else if (!needTranslDataTable.contains(data)) {
                        // åŽ»é‡æ·»åŠ 
                        needTranslDataTable.add(data);
                    }
                } else {
                    String keyString = String.format("sys:cache:dict::%s:%s", dictCode, data);
                    if (redisTemplate.hasKey(keyString)) {
                        try {
                            String text = oConvertUtils.getString(redisTemplate.opsForValue().get(keyString));
                            List<DictModel> list = translText.computeIfAbsent(dictCode, k -> new ArrayList<>());
                            list.add(new DictModel(data, text));
                        } catch (Exception e) {
                            log.warn(e.getMessage());
                        }
                    } else if (!needTranslData.contains(data)) {
                        // åŽ»é‡æ·»åŠ 
                        needTranslData.add(data);
                    }
                }
            }
            //step.2 è°ƒç”¨æ•°æ®åº“翻译表字典
            if (needTranslDataTable.size() > 0) {
                String[] arr = dictCode.split(",");
                String table = arr[0], text = arr[1], code = arr[2];
                String values = String.join(",", needTranslDataTable);
                log.info("translateDictFromTableByKeys.dictCode:" + dictCode);
                log.info("translateDictFromTableByKeys.values:" + values);
                List<DictModel> texts = commonAPI.translateDictFromTableByKeys(table, text, code, values);
                log.info("translateDictFromTableByKeys.result:" + texts);
                List<DictModel> list = translText.computeIfAbsent(dictCode, k -> new ArrayList<>());
                list.addAll(texts);
                // åš redis ç¼“å­˜
                for (DictModel dict : texts) {
                    String redisKey = String.format("sys:cache:dictTable::SimpleKey [%s,%s]", dictCode, dict.getValue());
                    try {
                        // update-begin-author:taoyan date:20211012 for: å­—典表翻译注解缓存未更新 issues/3061
                        // ä¿ç•™5分钟
                        redisTemplate.opsForValue().set(redisKey, dict.getText(), 300, TimeUnit.SECONDS);
                        // update-end-author:taoyan date:20211012 for: å­—典表翻译注解缓存未更新 issues/3061
                    } catch (Exception e) {
                        log.warn(e.getMessage(), e);
                    }
                }
            }
        }
        //step.3 è°ƒç”¨æ•°æ®åº“进行翻译普通字典
        if (needTranslData.size() > 0) {
            List<String> dictCodeList = Arrays.asList(dataListMap.keySet().toArray(new String[]{}));
            // å°†ä¸åŒ…含逗号的字典code筛选出来,因为带逗号的是表字典,而不是普通的数据字典
            List<String> filterDictCodes = dictCodeList.stream().filter(key -> !key.contains(",")).collect(Collectors.toList());
            String dictCodes = String.join(",", filterDictCodes);
            String values = String.join(",", needTranslData);
            log.info("translateManyDict.dictCodes:" + dictCodes);
            log.info("translateManyDict.values:" + values);
            Map<String, List<DictModel>> manyDict = commonAPI.translateManyDict(dictCodes, values);
            log.info("translateManyDict.result:" + manyDict);
            for (String dictCode : manyDict.keySet()) {
                List<DictModel> list = translText.computeIfAbsent(dictCode, k -> new ArrayList<>());
                List<DictModel> newList = manyDict.get(dictCode);
                list.addAll(newList);
                // åš redis ç¼“å­˜
                for (DictModel dict : newList) {
                    String redisKey = String.format("sys:cache:dict::%s:%s", dictCode, dict.getValue());
                    try {
                        redisTemplate.opsForValue().set(redisKey, dict.getText());
                    } catch (Exception e) {
                        log.warn(e.getMessage(), e);
                    }
                }
            }
        }
        return translText;
    }
    /**
     * å­—典值替换文本
     *
     * @param dictModels
     * @param values
     * @return
     */
    private String translDictText(List<DictModel> dictModels, String values) {
        List<String> result = new ArrayList<>();
        // å…è®¸å¤šä¸ªé€—号分隔,允许传数组对象
        String[] splitVal = values.split(",");
        for (String val : splitVal) {
            String dictText = val;
            for (DictModel dict : dictModels) {
                if (val.equals(dict.getValue())) {
                    dictText = dict.getText();
                    break;
                }
            }
            result.add(dictText);
        }
        return String.join(",", result);
    }
    /**
     *  ç¿»è¯‘字典文本
     * @param code
     * @param text
     * @param table
     * @param key
     * @return
     */
    @Deprecated
    private String translateDictValue(String code, String text, String table, String key) {
        if(oConvertUtils.isEmpty(key)) {
            return null;
        }
        StringBuffer textValue=new StringBuffer();
        String[] keys = key.split(",");
        for (String k : keys) {
            String tmpValue = null;
            log.debug(" å­—å…¸ key : "+ k);
            if (k.trim().length() == 0) {
                continue; //跳过循环
            }
            //update-begin--Author:scott -- Date:20210531 ----for: !56 ä¼˜åŒ–微服务应用下存在表字段需要字典翻译时加载缓慢问题-----
            if (!StringUtils.isEmpty(table)){
                log.info("--DictAspect------dicTable="+ table+" ,dicText= "+text+" ,dicCode="+code);
                String keyString = String.format("sys:cache:dictTable::SimpleKey [%s,%s,%s,%s]",table,text,code,k.trim());
                    if (redisTemplate.hasKey(keyString)){
                    try {
                        tmpValue = oConvertUtils.getString(redisTemplate.opsForValue().get(keyString));
                    } catch (Exception e) {
                        log.warn(e.getMessage());
                    }
                }else {
                    tmpValue= commonAPI.translateDictFromTable(table,text,code,k.trim());
                }
            }else {
                String keyString = String.format("sys:cache:dict::%s:%s",code,k.trim());
                if (redisTemplate.hasKey(keyString)){
                    try {
                        tmpValue = oConvertUtils.getString(redisTemplate.opsForValue().get(keyString));
                    } catch (Exception e) {
                       log.warn(e.getMessage());
                    }
                }else {
                    tmpValue = commonAPI.translateDict(code, k.trim());
                }
            }
            //update-end--Author:scott -- Date:20210531 ----for: !56 ä¼˜åŒ–微服务应用下存在表字段需要字典翻译时加载缓慢问题-----
            if (tmpValue != null) {
                if (!"".equals(textValue.toString())) {
                    textValue.append(",");
                }
                textValue.append(tmpValue);
            }
        }
        return textValue.toString();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/PermissionDataAspect.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package org.jeecg.common.aspect;
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.aspectj.lang.reflect.MethodSignature;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.aspect.annotation.PermissionData;
import org.jeecg.common.system.util.JeecgDataAutorUtils;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.List;
/**
 * æ•°æ®æƒé™åˆ‡é¢å¤„理类
 *  å½“被请求的方法有注解PermissionData时,会在往当前request中写入数据权限信息
 * @Date 2019å¹´4月10日
 * @Version: 1.0
 */
@Aspect
@Component
@Slf4j
public class PermissionDataAspect {
    @Autowired
    private CommonAPI commonAPI;
    @Pointcut("@annotation(org.jeecg.common.aspect.annotation.PermissionData)")
    public void pointCut() {
    }
    @Around("pointCut()")
    public Object arround(ProceedingJoinPoint point) throws  Throwable{
        HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
        MethodSignature signature = (MethodSignature) point.getSignature();
        Method method = signature.getMethod();
        PermissionData pd = method.getAnnotation(PermissionData.class);
        String component = pd.pageComponent();
        String requestMethod = request.getMethod();
        String requestPath = request.getRequestURI().substring(request.getContextPath().length());
        requestPath = filterUrl(requestPath);
        log.debug("拦截请求 >> "+requestPath+";请求类型 >> "+requestMethod);
        String username = JwtUtil.getUserNameByToken(request);
        //查询数据权限信息
        //TODO å¾®æœåŠ¡æƒ…å†µä¸‹ä¹Ÿå¾—æ”¯æŒç¼“å­˜æœºåˆ¶
        List<SysPermissionDataRuleModel> dataRules = commonAPI.queryPermissionDataRule(component, requestPath, username);
        if(dataRules!=null && dataRules.size()>0) {
            //临时存储
            JeecgDataAutorUtils.installDataSearchConditon(request, dataRules);
            //TODO å¾®æœåŠ¡æƒ…å†µä¸‹ä¹Ÿå¾—æ”¯æŒç¼“å­˜æœºåˆ¶
            SysUserCacheInfo userinfo = commonAPI.getCacheUser(username);
            JeecgDataAutorUtils.installUserInfo(request, userinfo);
        }
        return  point.proceed();
    }
    private String filterUrl(String requestPath){
        String url = "";
        if(oConvertUtils.isNotEmpty(requestPath)){
            url = requestPath.replace("\\", "/");
            url = url.replace("//", "/");
            if(url.indexOf("//")>=0){
                url = filterUrl(url);
            }
            /*if(url.startsWith("/")){
                url=url.substring(1);
            }*/
        }
        return url;
    }
    /**
     * èŽ·å–è¯·æ±‚åœ°å€
     * @param request
     * @return
     */
    private String getJgAuthRequsetPath(HttpServletRequest request) {
        String queryString = request.getQueryString();
        String requestPath = request.getRequestURI();
        if(oConvertUtils.isNotEmpty(queryString)){
            requestPath += "?" + queryString;
        }
        if (requestPath.indexOf("&") > -1) {// åŽ»æŽ‰å…¶ä»–å‚æ•°(保留一个参数) ä¾‹å¦‚:loginController.do?login
            requestPath = requestPath.substring(0, requestPath.indexOf("&"));
        }
        if(requestPath.indexOf("=")!=-1){
            if(requestPath.indexOf(".do")!=-1){
                requestPath = requestPath.substring(0,requestPath.indexOf(".do")+3);
            }else{
                requestPath = requestPath.substring(0,requestPath.indexOf("?"));
            }
        }
        requestPath = requestPath.substring(request.getContextPath().length() + 1);// åŽ»æŽ‰é¡¹ç›®è·¯å¾„
        return filterUrl(requestPath);
    }
    private boolean moHuContain(List<String> list,String key){
        for(String str : list){
            if(key.contains(str)){
                return true;
            }
        }
        return false;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/UrlMatchEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package org.jeecg.common.aspect;
/**
 * @Author scott
 * @Date 2020/1/14 13:36
 * @Description: è¯·æ±‚URL与菜单路由URL转换规则(方便于采用菜单路由URL来配置数据权限规则)
 */
public enum UrlMatchEnum {
    CGFORM_DATA("/online/cgform/api/getData/", "/online/cgformList/"),
    CGFORM_EXCEL_DATA("/online/cgform/api/exportXls/", "/online/cgformList/"),
    CGFORM_TREE_DATA("/online/cgform/api/getTreeData/", "/online/cgformList/"),
    CGREPORT_DATA("/online/cgreport/api/getColumnsAndData/", "/online/cgreport/"),
    CGREPORT_EXCEL_DATA("/online/cgreport/api/exportXls/", "/online/cgreport/");
    UrlMatchEnum(String url, String match_url) {
        this.url = url;
        this.match_url = match_url;
    }
    /**
     * Request è¯·æ±‚ URL前缀
     */
    private String url;
    /**
     * èœå•路由 URL前缀 (对应菜单路径)
     */
    private String match_url;
    /**
     * æ ¹æ®req url èŽ·å–åˆ°èœå•é…ç½®è·¯å¾„ï¼ˆå‰ç«¯é¡µé¢è·¯ç”±URL)
     *
     * @param url
     * @return
     */
    public static String getMatchResultByUrl(String url) {
        //获取到枚举
        UrlMatchEnum[] values = UrlMatchEnum.values();
        //加强for循环进行遍历操作
        for (UrlMatchEnum lr : values) {
            //如果遍历获取的type和参数type一致
            if (url.indexOf(lr.url) != -1) {
                //返回type对象的desc
                return url.replace(lr.url, lr.match_url);
            }
        }
        return null;
    }
//    public static void main(String[] args) {
//        /**
//         * æ¯”如request真实请求URL: /online/cgform/api/getData/81fcf7d8922d45069b0d5ba983612d3a
//         * è½¬æ¢åŒ¹é…è·¯ç”±URL后(对应配置的菜单路径):/online/cgformList/81fcf7d8922d45069b0d5ba983612d3a
//         */
//        System.out.println(UrlMatchEnum.getMatchResultByUrl("/online/cgform/api/getData/81fcf7d8922d45069b0d5ba983612d3a"));
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/AutoLog.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
package org.jeecg.common.aspect.annotation;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.enums.ModuleType;
import java.lang.annotation.*;
/**
 * ç³»ç»Ÿæ—¥å¿—注解
 *
 * @Author scott
 * @email jeecgos@163.com
 * @Date 2019å¹´1月14日
 */
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AutoLog {
    /**
     * æ—¥å¿—内容
     *
     * @return
     */
    String value() default "";
    /**
     * æ—¥å¿—类型
     *
     * @return 0:操作日志;1:登录日志;2:定时任务;
     */
    int logType() default CommonConstant.LOG_TYPE_2;
    /**
     * æ“ä½œæ—¥å¿—类型
     *
     * @return ï¼ˆ1查询,2添加,3修改,4删除)
     */
    int operateType() default 0;
    /**
     * æ¨¡å—类型 é»˜è®¤ä¸ºcommon
     * @return
     */
    ModuleType module() default ModuleType.COMMON;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/Dict.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package org.jeecg.common.aspect.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
 *  ç±»æè¿°:  å­—典注解
 * ä½œ    è€…: dangzhenghui
 * æ—¥    æœŸï¼š 2019å¹´03月17日-下午9:37:16
 */
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Dict {
    /**
     * æ–¹æ³•描述:  æ•°æ®code
     * ä½œ    è€…: dangzhenghui
     * æ—¥    æœŸï¼š 2019å¹´03月17日-下午9:37:16
     *
     * @return è¿”回类型: String
     */
    String dicCode();
    /**
     * æ–¹æ³•描述:  æ•°æ®Text
     * ä½œ    è€…: dangzhenghui
     * æ—¥    æœŸï¼š 2019å¹´03月17日-下午9:37:16
     *
     * @return è¿”回类型: String
     */
    String dicText() default "";
    /**
     * æ–¹æ³•描述: æ•°æ®å­—典表
     * ä½œ    è€…: dangzhenghui
     * æ—¥    æœŸï¼š 2019å¹´03月17日-下午9:37:16
     *
     * @return è¿”回类型: String
     */
    String dictTable() default "";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/OnlineAuth.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.common.aspect.annotation;
import java.lang.annotation.*;
/**
 * online请求拦截专用注解
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
public @interface OnlineAuth {
    /**
     * è¯·æ±‚关键字,在xxx/code之前的字符串
     * @return
     */
    String value();
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/annotation/PermissionData.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package org.jeecg.common.aspect.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
  *  æ•°æ®æƒé™æ³¨è§£
 * @Author taoyan
 * @Date 2019å¹´4月11日
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.METHOD})
@Documented
public @interface PermissionData {
    /**
     * æš‚时没用
     * @return
     */
    String value() default "";
    /**
     * é…ç½®èœå•的组件路径,用于数据权限
     */
    String pageComponent() default "";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,363 @@
package org.jeecg.common.constant;
import java.util.HashMap;
import java.util.Map;
public interface CommonConstant {
    /**
     * æ­£å¸¸çŠ¶æ€
     */
    public static final Integer STATUS_NORMAL = 0;
    /**
     * ç¦ç”¨çŠ¶æ€
     */
    public static final Integer STATUS_DISABLE = -1;
    /**
     * åˆ é™¤æ ‡å¿—
     */
    public static final Integer DEL_FLAG_1 = 1;
    /**
     * æœªåˆ é™¤
     */
    public static final Integer DEL_FLAG_0 = 0;
    /**
     * ç³»ç»Ÿæ—¥å¿—类型: ç™»å½•
     */
    public static final int LOG_TYPE_1 = 1;
    /**
     * ç³»ç»Ÿæ—¥å¿—类型: æ“ä½œ
     */
    public static final int LOG_TYPE_2 = 2;
    /**
     * æ“ä½œæ—¥å¿—类型: æŸ¥è¯¢
     */
    public static final int OPERATE_TYPE_1 = 1;
    /**
     * æ“ä½œæ—¥å¿—类型: æ·»åŠ 
     */
    public static final int OPERATE_TYPE_2 = 2;
    /**
     * æ“ä½œæ—¥å¿—类型: æ›´æ–°
     */
    public static final int OPERATE_TYPE_3 = 3;
    /**
     * æ“ä½œæ—¥å¿—类型: åˆ é™¤
     */
    public static final int OPERATE_TYPE_4 = 4;
    /**
     * æ“ä½œæ—¥å¿—类型: å€’å…¥
     */
    public static final int OPERATE_TYPE_5 = 5;
    /**
     * æ“ä½œæ—¥å¿—类型: å¯¼å‡º
     */
    public static final int OPERATE_TYPE_6 = 6;
    /** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
    public static final Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
    /** {@code 200 OK} (HTTP/1.0 - RFC 1945) */
    public static final Integer SC_OK_200 = 200;
    /**访问权限认证未通过 510*/
    public static final Integer SC_JEECG_NO_AUTHZ=510;
    /** ç™»å½•用户Shiro权限缓存KEY前缀 */
    public static String PREFIX_USER_SHIRO_CACHE  = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:";
    /** ç™»å½•用户Token令牌缓存KEY前缀 */
    public static final String PREFIX_USER_TOKEN  = "prefix_user_token_";
    /** Token缓存时间:3600秒即一小时 */
    public static final int  TOKEN_EXPIRE_TIME  = 6 * 3600;
    /**
     *  0:一级菜单
     */
    public static final Integer MENU_TYPE_0  = 0;
   /**
    *  1:子菜单
    */
    public static final Integer MENU_TYPE_1  = 1;
    /**
     *  2:按钮权限
     */
    public static final Integer MENU_TYPE_2  = 2;
    /**通告对象类型(USER:指定用户,ALL:全体用户)*/
    public static final String MSG_TYPE_UESR  = "USER";
    public static final String MSG_TYPE_ALL  = "ALL";
    /**发布状态(0未发布,1已发布,2已撤销)*/
    public static final String NO_SEND  = "0";
    public static final String HAS_SEND  = "1";
    public static final String HAS_CANCLE  = "2";
    /**阅读状态(0未读,1已读)*/
    public static final String HAS_READ_FLAG  = "1";
    public static final String NO_READ_FLAG  = "0";
    /**优先级(L低,M中,H高)*/
    public static final String PRIORITY_L  = "L";
    public static final String PRIORITY_M  = "M";
    public static final String PRIORITY_H  = "H";
    /**
     * çŸ­ä¿¡æ¨¡æ¿æ–¹å¼  0 .登录模板、1.注册模板、2.忘记密码模板
     */
    public static final String SMS_TPL_TYPE_0  = "0";
    public static final String SMS_TPL_TYPE_1  = "1";
    public static final String SMS_TPL_TYPE_2  = "2";
    /**
     * çŠ¶æ€(0无效1有效)
     */
    public static final String STATUS_0 = "0";
    public static final String STATUS_1 = "1";
    /**
     * åŒæ­¥å·¥ä½œæµå¼•擎1同步0不同步
     */
    public static final Integer ACT_SYNC_1 = 1;
    public static final Integer ACT_SYNC_0 = 0;
    /**
     * æ¶ˆæ¯ç±»åž‹1:通知公告2:系统消息
     */
    public static final String MSG_CATEGORY_1 = "1";
    public static final String MSG_CATEGORY_2 = "2";
    /**
     * æ˜¯å¦é…ç½®èœå•的数据权限 1是0否
     */
    public static final Integer RULE_FLAG_0 = 0;
    public static final Integer RULE_FLAG_1 = 1;
    /**
     * æ˜¯å¦ç”¨æˆ·å·²è¢«å†»ç»“ 1正常(解冻) 2冻结
     */
    public static final Integer USER_UNFREEZE = 1;
    public static final Integer USER_FREEZE = 2;
    /**字典翻译文本后缀*/
    public static final String DICT_TEXT_SUFFIX = "_dictText";
    /**
     * è¡¨å•设计器主表类型
     */
    public static final Integer DESIGN_FORM_TYPE_MAIN = 1;
    /**
     * è¡¨å•设计器子表表类型
     */
    public static final Integer DESIGN_FORM_TYPE_SUB = 2;
    /**
     * è¡¨å•设计器URL授权通过
     */
    public static final Integer DESIGN_FORM_URL_STATUS_PASSED = 1;
    /**
     * è¡¨å•设计器URL授权未通过
     */
    public static final Integer DESIGN_FORM_URL_STATUS_NOT_PASSED = 2;
    /**
     * è¡¨å•设计器新增 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_ADD = "add";
    /**
     * è¡¨å•设计器修改 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_EDIT = "edit";
    /**
     * è¡¨å•设计器详情 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_DETAIL = "detail";
    /**
     * è¡¨å•设计器复用数据 Flag
     */
    public static final String DESIGN_FORM_URL_TYPE_REUSE = "reuse";
    /**
     * è¡¨å•设计器编辑 Flag ï¼ˆå·²å¼ƒç”¨ï¼‰
     */
    public static final String DESIGN_FORM_URL_TYPE_VIEW = "view";
    /**
     * online参数值设置(是:Y, å¦ï¼šN)
     */
    public static final String ONLINE_PARAM_VAL_IS_TURE = "Y";
    public static final String ONLINE_PARAM_VAL_IS_FALSE = "N";
    /**
     * æ–‡ä»¶ä¸Šä¼ ç±»åž‹ï¼ˆæœ¬åœ°ï¼šlocal,Minio:minio,阿里云:alioss)
     */
    public static final String UPLOAD_TYPE_LOCAL = "local";
    public static final String UPLOAD_TYPE_MINIO = "minio";
    public static final String UPLOAD_TYPE_OSS = "alioss";
    /**
     * æ–‡æ¡£ä¸Šä¼ è‡ªå®šä¹‰æ¡¶åç§°
     */
    public static final String UPLOAD_CUSTOM_BUCKET = "eoafile";
    /**
     * æ–‡æ¡£ä¸Šä¼ è‡ªå®šä¹‰è·¯å¾„
     */
    public static final String UPLOAD_CUSTOM_PATH = "eoafile";
    /**
     * æ–‡ä»¶å¤–链接有效天数
     */
    public static final Integer UPLOAD_EFFECTIVE_DAYS = 1;
    /**
     * å‘˜å·¥èº«ä»½ ï¼ˆ1:普通员工  2:上级)
     */
    public static final Integer USER_IDENTITY_1 = 1;
    public static final Integer USER_IDENTITY_2 = 2;
    /** sys_user è¡¨ username å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_SYS_USER_USERNAME = "uniq_sys_user_username";
    /** sys_user è¡¨ work_no å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_SYS_USER_WORK_NO = "uniq_sys_user_work_no";
    /** sys_user è¡¨ phone å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_SYS_USER_PHONE = "uniq_sys_user_phone";
    /** sys_user è¡¨ email å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_SYS_USER_EMAIL = "uniq_sys_user_email";
    /** sys_quartz_job è¡¨ job_class_name å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_JOB_CLASS_NAME = "uniq_job_class_name";
    /** sys_position è¡¨ code å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_CODE = "uniq_code";
    /** sys_role è¡¨ code å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_SYS_ROLE_CODE = "uniq_sys_role_role_code";
    /** sys_depart è¡¨ code å”¯ä¸€é”®ç´¢å¼• */
    public static final String SQL_INDEX_UNIQ_DEPART_ORG_CODE = "uniq_depart_org_code";
    /**
     * åœ¨çº¿èŠå¤© æ˜¯å¦ä¸ºé»˜è®¤åˆ†ç»„
     */
    public static final String IM_DEFAULT_GROUP = "1";
    /**
     * åœ¨çº¿èŠå¤© å›¾ç‰‡æ–‡ä»¶ä¿å­˜è·¯å¾„
     */
    public static final String IM_UPLOAD_CUSTOM_PATH = "imfile";
    /**
     * åœ¨çº¿èŠå¤© ç”¨æˆ·çŠ¶æ€
     */
    public static final String IM_STATUS_ONLINE = "online";
    /**
     * åœ¨çº¿èŠå¤© SOCKET消息类型
     */
    public static final String IM_SOCKET_TYPE = "chatMessage";
    /**
     * åœ¨çº¿èŠå¤© æ˜¯å¦å¼€å¯é»˜è®¤æ·»åŠ å¥½å‹ 1是 0否
     */
    public static final String IM_DEFAULT_ADD_FRIEND = "1";
    /**
     * åœ¨çº¿èŠå¤© ç”¨æˆ·å¥½å‹ç¼“存前缀
     */
    public static final String IM_PREFIX_USER_FRIEND_CACHE = "sys:cache:im:im_prefix_user_friend_";
    /**
     * è€ƒå‹¤è¡¥å¡ä¸šåŠ¡çŠ¶æ€ ï¼ˆ1:同意  2:不同意)
     */
    public static final String SIGN_PATCH_BIZ_STATUS_1 = "1";
    public static final String SIGN_PATCH_BIZ_STATUS_2 = "2";
    /**
     * å…¬æ–‡æ–‡æ¡£ä¸Šä¼ è‡ªå®šä¹‰è·¯å¾„
     */
    public static final String UPLOAD_CUSTOM_PATH_OFFICIAL = "officialdoc";
     /**
     * å…¬æ–‡æ–‡æ¡£ä¸‹è½½è‡ªå®šä¹‰è·¯å¾„
     */
    public static final String DOWNLOAD_CUSTOM_PATH_OFFICIAL = "officaldown";
    /**
     * WPS存储值类别(1 code文号 2 text(WPS模板还是公文发文模板))
     */
    public static final String WPS_TYPE_1="1";
    public static final String WPS_TYPE_2="2";
    public final static String X_ACCESS_TOKEN = "X-Access-Token";
    public final static String X_SIGN = "X-Sign";
    public final static String X_TIMESTAMP = "X-TIMESTAMP";
    public final static String TOKEN_IS_INVALID_MSG = "Token失效,请重新登录!";
    /**
     * å¤šç§Ÿæˆ· è¯·æ±‚头
     */
    public final static String TENANT_ID = "tenant-id";
    /**
     * å¾®æœåŠ¡è¯»å–é…ç½®æ–‡ä»¶å±žæ€§ æœåŠ¡åœ°å€
     */
    public final static String CLOUD_SERVER_KEY = "spring.cloud.nacos.discovery.server-addr";
    /**
     * ç¬¬ä¸‰æ–¹ç™»å½• éªŒè¯å¯†ç /创建用户 éƒ½éœ€è¦è®¾ç½®ä¸€ä¸ªæ“ä½œç  é˜²æ­¢è¢«æ¶æ„è°ƒç”¨
     */
    public final static String THIRD_LOGIN_CODE = "third_login_code";
    /**
     * ç¬¬ä¸‰æ–¹APP同步方向:本地 --> ç¬¬ä¸‰æ–¹APP
     */
    String THIRD_SYNC_TO_APP = "SYNC_TO_APP";
    /**
     * ç¬¬ä¸‰æ–¹APP同步方向:第三方APP --> æœ¬åœ°
     */
    String THIRD_SYNC_TO_LOCAL = "SYNC_TO_LOCAL";
    /** ç³»ç»Ÿé€šå‘Šæ¶ˆæ¯çŠ¶æ€ï¼š0=未发布 */
    String ANNOUNCEMENT_SEND_STATUS_0 = "0";
    /** ç³»ç»Ÿé€šå‘Šæ¶ˆæ¯çŠ¶æ€ï¼š1=已发布 */
    String ANNOUNCEMENT_SEND_STATUS_1 = "1";
    /** ç³»ç»Ÿé€šå‘Šæ¶ˆæ¯çŠ¶æ€ï¼š2=已撤销 */
    String ANNOUNCEMENT_SEND_STATUS_2 = "2";
    /** é¡¹ç›®å¥–金发放状态 0-未发放  1-已发放 */
    int BONUS_PAYMENT_STATU_0 =  0;
    int BONUS_PAYMENT_STATU_1 =  1;
    /** é¡¹ç›®å¥–金定额状态 0-未定额  1-已定额 */
    int BONUS_DE_STATU_0 =  0;
    int BONUS_DE_STATU_1 =  1;
    public  static Map<Double,Integer>  BONUS_JSFL_MAP(){
        //定额表保存的是系数
//        A:技术能力对标同领域国际前三名技术水平,达到国际领先水平。(1)
//        B:技术能力对标同领域国际前十名技术水平,达到国际先进水平。(0.6)
//        C:技术能力对标同领域国内前三名技术水平达到国内先进水平。(0.3)
//        D:不具对标优势,公司关键应用技术的填平补齐。(0.15)
       //发放表保存的是索引
//        A     1
//        B        2
//        C        3
//        D        4
        //所以需要map转换
        Map<Double,Integer> map = new HashMap<>();
        map.put(1.0,1);
        map.put(0.6,2);
        map.put(0.3,3);
        map.put(0.15,4);
        return map;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/CommonSendStatus.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package org.jeecg.common.constant;
/**
 *     ç³»ç»Ÿé€šå‘Š - å‘布状态
 * @Author LeeShaoQing
 *
 */
public interface CommonSendStatus {
    public static final String UNPUBLISHED_STATUS_0 = "0";    //未发布
    public static final String PUBLISHED_STATUS_1 = "1";        //已发布
    public static final String REVOKE_STATUS_2 = "2";            //撤销
    //app端推送会话标识后缀
    public static final String  APP_SESSION_SUFFIX = "_app";    //app端推送会话标识后缀
    /**流程催办——系统通知消息模板*/
    public static final String TZMB_BPM_CUIBAN = "bpm_cuiban";
    /**标准模板—系统消息通知*/
    public static final String TZMB_SYS_TS_NOTE = "sys_ts_note";
    /**流程超时提醒——系统通知消息模板*/
    public static final String TZMB_BPM_CHAOSHI_TIP = "bpm_chaoshi_tip";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/DataBaseConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,134 @@
package org.jeecg.common.constant;
/**
 * æ•°æ®åº“上下文常量
 */
public interface DataBaseConstant {
    //*********数据库类型****************************************
    public static final String DB_TYPE_MYSQL = "MYSQL";
    public static final String DB_TYPE_ORACLE = "ORACLE";
    public static final String DB_TYPE_DM = "DM";//达梦数据库
    public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL";
    public static final String DB_TYPE_SQLSERVER = "SQLSERVER";
    public static final String DB_TYPE_MARIADB = "MARIADB";
    public static final String DB_TYPE_DB2 = "DB2";
    public static final String DB_TYPE_HSQL = "HSQL";
//    // æ•°æ®åº“类型,对应 database_type å­—å…¸
//    public static final String DB_TYPE_MYSQL_NUM = "1";
//    public static final String DB_TYPE_MYSQL7_NUM = "6";
//    public static final String DB_TYPE_ORACLE_NUM = "2";
//    public static final String DB_TYPE_SQLSERVER_NUM = "3";
//    public static final String DB_TYPE_POSTGRESQL_NUM = "4";
//    public static final String DB_TYPE_MARIADB_NUM = "5";
    //*********系统上下文变量****************************************
    /**
     * æ•°æ®-所属机构编码
     */
    public static final String SYS_ORG_CODE = "sysOrgCode";
    /**
     * æ•°æ®-所属机构编码
     */
    public static final String SYS_ORG_CODE_TABLE = "sys_org_code";
    /**
     * æ•°æ®-所属机构编码
     */
    public static final String SYS_MULTI_ORG_CODE = "sysMultiOrgCode";
    /**
     * æ•°æ®-所属机构编码
     */
    public static final String SYS_MULTI_ORG_CODE_TABLE = "sys_multi_org_code";
    /**
     * æ•°æ®-系统用户编码(对应登录用户账号)
     */
    public static final String SYS_USER_CODE = "sysUserCode";
    /**
     * æ•°æ®-系统用户编码(对应登录用户账号)
     */
    public static final String SYS_USER_CODE_TABLE = "sys_user_code";
    /**
     * ç™»å½•用户真实姓名
     */
    public static final String SYS_USER_NAME = "sysUserName";
    /**
     * ç™»å½•用户真实姓名
     */
    public static final String SYS_USER_NAME_TABLE = "sys_user_name";
    /**
     * ç³»ç»Ÿæ—¥æœŸ"yyyy-MM-dd"
     */
    public static final String SYS_DATE = "sysDate";
    /**
     * ç³»ç»Ÿæ—¥æœŸ"yyyy-MM-dd"
     */
    public static final String SYS_DATE_TABLE = "sys_date";
    /**
     * ç³»ç»Ÿæ—¶é—´"yyyy-MM-dd HH:mm"
     */
    public static final String SYS_TIME = "sysTime";
    /**
     * ç³»ç»Ÿæ—¶é—´"yyyy-MM-dd HH:mm"
     */
    public static final String SYS_TIME_TABLE = "sys_time";
    /**
     * æ•°æ®-所属机构编码
     */
    public static final String SYS_BASE_PATH = "sys_base_path";
    //*********系统上下文变量****************************************
    //*********系统建表标准字段****************************************
    /**
     * åˆ›å»ºè€…登录名称
     */
    public static final String CREATE_BY_TABLE = "create_by";
    /**
     * åˆ›å»ºè€…登录名称
     */
    public static final String CREATE_BY = "createBy";
    /**
     * åˆ›å»ºæ—¥æœŸæ—¶é—´
     */
    public static final String CREATE_TIME_TABLE = "create_time";
    /**
     * åˆ›å»ºæ—¥æœŸæ—¶é—´
     */
    public static final String CREATE_TIME = "createTime";
    /**
     * æ›´æ–°ç”¨æˆ·ç™»å½•名称
     */
    public static final String UPDATE_BY_TABLE = "update_by";
    /**
     * æ›´æ–°ç”¨æˆ·ç™»å½•名称
     */
    public static final String UPDATE_BY = "updateBy";
    /**
     * æ›´æ–°æ—¥æœŸæ—¶é—´
     */
    public static final String UPDATE_TIME = "updateTime";
    /**
     * æ›´æ–°æ—¥æœŸæ—¶é—´
     */
    public static final String UPDATE_TIME_TABLE = "update_time";
    /**
     * ä¸šåŠ¡æµç¨‹çŠ¶æ€
     */
    public static final String BPM_STATUS = "bpmStatus";
    /**
     * ä¸šåŠ¡æµç¨‹çŠ¶æ€
     */
    public static final String BPM_STATUS_TABLE = "bpm_status";
    //*********系统建表标准字段****************************************
    /**
     * ç§Ÿæˆ·ID å®žä½“字段名
     */
    String TENANT_ID = "tenantId";
    /**
     * ç§Ÿæˆ·ID æ•°æ®åº“字段名
     */
    String TENANT_ID_TABLE = "tenant_id";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/FillRuleConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.jeecg.common.constant;
/**
 * è§„则值生成 ç¼–码常量类
 * @author: taoyan
 * @date: 2020å¹´04月02日
 */
public class FillRuleConstant {
    /**
     * å…¬æ–‡å‘文编码
     */
    public static final String DOC_SEND = "doc_send_code";
    /**
     * éƒ¨é—¨ç¼–码
     */
    public static final String DEPART = "org_num_role";
    /**
     * åˆ†ç±»å­—典编码
     */
    public static final String CATEGORY = "category_code_rule";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ProvinceCityArea.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,131 @@
package org.jeecg.common.constant;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Component;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Set;
import java.util.List;
@Component("pca")
public class ProvinceCityArea {
    List<Area> areaList;
    public String getText(String code){
        this.initAreaList();
        if(this.areaList!=null || this.areaList.size()>0){
            List<String> ls = new ArrayList<String>();
            getAreaByCode(code,ls);
            return String.join("/",ls);
        }
        return "";
    }
    public String getCode(String text){
        this.initAreaList();
        if(areaList!=null || areaList.size()>0){
            for(int i=areaList.size()-1;i>=0;i--){
                if(text.indexOf(areaList.get(i).getText())>=0){
                    return areaList.get(i).getId();
                }
            }
        }
        return null;
    }
    public void getAreaByCode(String code,List<String> ls){
        for(Area area: areaList){
            if(area.getId().equals(code)){
                String pid = area.getPid();
                ls.add(0,area.getText());
                getAreaByCode(pid,ls);
            }
        }
    }
    private void initAreaList(){
        //System.out.println("=====================");
        if(this.areaList==null || this.areaList.size()==0){
            this.areaList = new ArrayList<Area>();
            try {
                String jsonData = oConvertUtils.readStatic("classpath:static/pca.json");
                JSONObject baseJson = JSONObject.parseObject(jsonData);
                //第一层 çœ
                JSONObject provinceJson = baseJson.getJSONObject("86");
                for(String provinceKey: provinceJson.keySet()){
                    //System.out.println("===="+provinceKey);
                    Area province = new Area(provinceKey,provinceJson.getString(provinceKey),"86");
                    this.areaList.add(province);
                    //第二层 å¸‚
                    JSONObject cityJson = baseJson.getJSONObject(provinceKey);
                    for(String cityKey:cityJson.keySet()){
                        //System.out.println("-----"+cityKey);
                        Area city = new Area(cityKey,cityJson.getString(cityKey),provinceKey);
                        this.areaList.add(city);
                        //第三层 åŒº
                        JSONObject areaJson =  baseJson.getJSONObject(cityKey);
                        if(areaJson!=null){
                            for(String areaKey:areaJson.keySet()){
                                //System.out.println("········"+areaKey);
                                Area area = new Area(areaKey,areaJson.getString(areaKey),cityKey);
                                this.areaList.add(area);
                            }
                        }
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    private String jsonRead(File file){
        Scanner scanner = null;
        StringBuilder buffer = new StringBuilder();
        try {
            scanner = new Scanner(file, "utf-8");
            while (scanner.hasNextLine()) {
                buffer.append(scanner.nextLine());
            }
        } catch (Exception e) {
        } finally {
            if (scanner != null) {
                scanner.close();
            }
        }
        return buffer.toString();
    }
    class Area{
        String id;
        String text;
        String pid;
        public Area(String id,String text,String pid){
            this.id = id;
            this.text = text;
            this.pid = pid;
        }
        public String getId() {
            return id;
        }
        public String getText() {
            return text;
        }
        public String getPid() {
            return pid;
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/ServiceNameConstants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
/*
 *
 *  *  Copyright (c) 2019-2020, å†·å†· (wangiegie@gmail.com).
 *  *  <p>
 *  *  Licensed under the GNU Lesser General Public License 3.0 (the "License");
 *  *  you may not use this file except in compliance with the License.
 *  *  You may obtain a copy of the License at
 *  *  <p>
 *  * https://www.gnu.org/licenses/lgpl.html
 *  *  <p>
 *  * Unless required by applicable law or agreed to in writing, software
 *  * distributed under the License is distributed on an "AS IS" BASIS,
 *  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  * See the License for the specific language governing permissions and
 *  * limitations under the License.
 *
 */
package org.jeecg.common.constant;
/**
 * @author scott
 * @date 2019å¹´05月18日
 * æœåŠ¡åç§°
 */
public interface ServiceNameConstants {
    /**
     * ç³»ç»Ÿç®¡ç† admin
     */
    String SYSTEM_SERVICE = "jeecg-system";
    String SYSTEM_ONLINE = "jeecg-online";
    /**
     * gateway通过header传递根路径 basePath
     */
    String X_GATEWAY_BASE_PATH = "X_GATEWAY_BASE_PATH";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/VXESocketConst.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,30 @@
package org.jeecg.common.constant;
/**
 * VXESocket å¸¸é‡
 */
public class VXESocketConst {
    /**
     * æ¶ˆæ¯ç±»åž‹
     */
    public static final String TYPE = "type";
    /**
     * æ¶ˆæ¯æ•°æ®
     */
    public static final String DATA = "data";
    /**
     * æ¶ˆæ¯ç±»åž‹ï¼šå¿ƒè·³æ£€æµ‹
     */
    public static final String TYPE_HB = "heart_beat";
    /**
     * æ¶ˆæ¯ç±»åž‹ï¼šé€šç”¨æ•°æ®ä¼ é€’
     */
    public static final String TYPE_CSD = "common_send_date";
    /**
     * æ¶ˆæ¯ç±»åž‹ï¼šæ›´æ–°vxe table数据
     */
    public static final String TYPE_UVT = "update_vxe_table";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/WebsocketConst.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,66 @@
package org.jeecg.common.constant;
/**
 * @Description: Websocket常量类
 * @author: taoyan
 * @date: 2020å¹´03月23日
 */
public class WebsocketConst {
    /**
     * æ¶ˆæ¯json key:cmd
     */
    public static final String MSG_CMD = "cmd";
    /**
     * æ¶ˆæ¯json key:msgId
     */
    public static final String MSG_ID = "msgId";
    /**
     * æ¶ˆæ¯json key:msgTxt
     */
    public static final String MSG_TXT = "msgTxt";
    /**
     * æ¶ˆæ¯json key:userId
     */
    public static final String MSG_USER_ID = "userId";
    /**
     * æ¶ˆæ¯ç±»åž‹ heartcheck
     */
    public static final String CMD_CHECK = "heartcheck";
    /**
     * æ¶ˆæ¯ç±»åž‹ user ç”¨æˆ·æ¶ˆæ¯
     */
    public static final String CMD_USER = "user";
    /**
     * æ¶ˆæ¯ç±»åž‹ topic ç³»ç»Ÿé€šçŸ¥
     */
    public static final String CMD_TOPIC = "topic";
    /**
     * æ¶ˆæ¯ç±»åž‹ custom è‡ªå®šä¹‰é€šçŸ¥
     */
    public static final String CMD_CUSTOM = "custom";
    /**
     * æ¶ˆæ¯ç±»åž‹ email
     */
    public static final String CMD_EMAIL = "email";
    /**
     * æ¶ˆæ¯ç±»åž‹ meetingsign ä¼šè®®ç­¾åˆ°
     */
    public static final String CMD_SIGN = "sign";
    /**
     * æ¶ˆæ¯ç±»åž‹ æ–°é—»å‘布/取消
     */
    public static final String NEWS_PUBLISH = "publish";
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/CgformEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
package org.jeecg.common.constant.enums;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * online表单枚举 ä»£ç ç”Ÿæˆå™¨ç”¨åˆ°
 */
public enum CgformEnum {
    /**
     * å•表
     */
    ONE(1, "one", "/jeecg/code-template-online", "default.one", "经典风格"),
    /**
     * å¤šè¡¨
     */
    MANY(2, "many", "/jeecg/code-template-online", "default.onetomany", "经典风格"),
    /**
     * å¤šè¡¨
     */
    ERP(2, "erp", "/jeecg/code-template-online", "erp.onetomany", "ERP风格"),
    /**
     * å¤šè¡¨ï¼ˆjvxe风格)
     *  */
    JVXE_TABLE(2, "jvxe", "/jeecg/code-template-online", "jvxe.onetomany", "JVXE风格"),
    /**
     * å¤šè¡¨ï¼ˆå†…嵌子表风格)
     */
    INNER_TABLE(2, "innerTable", "/jeecg/code-template-online", "inner-table.onetomany", "内嵌子表风格"),
    /**
     * å¤šè¡¨ï¼ˆtab风格)
     *  */
    TAB(2, "tab", "/jeecg/code-template-online", "tab.onetomany", "Tab风格"),
    /**
     * æ ‘形列表
     */
    TREE(3, "tree", "/jeecg/code-template-online", "default.tree", "树形列表");
    /**
     * ç±»åž‹ 1/单表 2/一对多 3/树
     */
    int type;
    /**
     * ç¼–码标识
     */
    String code;
    /**
     * ä»£ç ç”Ÿæˆå™¨æ¨¡æ¿è·¯å¾„
     */
    String templatePath;
    /**
     * ä»£ç ç”Ÿæˆå™¨æ¨¡æ¿è·¯å¾„
     */
    String stylePath;
    /**
     * æ¨¡æ¿é£Žæ ¼åç§°
     */
    String note;
    /**
     * æž„造器
     *
     * @param type ç±»åž‹ 1/单表 2/一对多 3/树
     * @param code æ¨¡æ¿ç¼–码
     * @param templatePath  æ¨¡æ¿è·¯å¾„
     * @param stylePath  æ¨¡æ¿å­è·¯å¾„
     * @param note
     */
    CgformEnum(int type, String code, String templatePath, String stylePath, String note) {
        this.type = type;
        this.code = code;
        this.templatePath = templatePath;
        this.stylePath = stylePath;
        this.note = note;
    }
    /**
     * æ ¹æ®code获取模板路径
     *
     * @param code
     * @return
     */
    public static String getTemplatePathByConfig(String code) {
        return getCgformEnumByConfig(code).templatePath;
    }
    public int getType() {
        return type;
    }
    public void setType(int type) {
        this.type = type;
    }
    public String getTemplatePath() {
        return templatePath;
    }
    public void setTemplatePath(String templatePath) {
        this.templatePath = templatePath;
    }
    public String getStylePath() {
        return stylePath;
    }
    public void setStylePath(String stylePath) {
        this.stylePath = stylePath;
    }
    /**
     * æ ¹æ®code找枚举
     *
     * @param code
     * @return
     */
    public static CgformEnum getCgformEnumByConfig(String code) {
        for (CgformEnum e : CgformEnum.values()) {
            if (e.code.equals(code)) {
                return e;
            }
        }
        return null;
    }
    /**
     * æ ¹æ®ç±»åž‹æ‰¾æ‰€æœ‰
     *
     * @param type
     * @return
     */
    public static List<Map<String, Object>> getJspModelList(int type) {
        List<Map<String, Object>> ls = new ArrayList<Map<String, Object>>();
        for (CgformEnum e : CgformEnum.values()) {
            if (e.type == type) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("code", e.code);
                map.put("note", e.note);
                ls.add(map);
            }
        }
        return ls;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/ModuleType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.common.constant.enums;
/**
 * æ—¥å¿—按模块分类
 */
public enum ModuleType {
    /**
     * æ™®é€š
     */
    COMMON,
    /**
     * online
     */
    ONLINE;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/constant/enums/RoleIndexConfigEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package org.jeecg.common.constant.enums;
import java.util.List;
/**
 * é¦–页自定义
 * é€šè¿‡è§’色编码与首页组件路径配置
 */
public enum RoleIndexConfigEnum {
    /**
     * ç®¡ç†å‘˜
     */
    ADMIN("admin1", "dashboard/Analysis2"),
    /**
     * æµ‹è¯•
     */
    TEST("test",  "dashboard/Analysis"),
    /**
     * hr
     */
    HR("hr", "dashboard/Analysis1");
    /**
     * è§’色编码
     */
    String roleCode;
    /**
     * è·¯ç”±index
     */
    String componentUrl;
    /**
     * æž„造器
     *
     * @param roleCode è§’色编码
     * @param componentUrl é¦–页组件路径(规则跟菜单配置一样)
     */
    RoleIndexConfigEnum(String roleCode, String componentUrl) {
        this.roleCode = roleCode;
        this.componentUrl = componentUrl;
    }
    /**
     * æ ¹æ®code找枚举
     * @param roleCode è§’色编码
     * @return
     */
    public static RoleIndexConfigEnum getEnumByCode(String roleCode) {
        for (RoleIndexConfigEnum e : RoleIndexConfigEnum.values()) {
            if (e.roleCode.equals(roleCode)) {
                return e;
            }
        }
        return null;
    }
    /**
     * æ ¹æ®code找index
     * @param roleCode è§’色编码
     * @return
     */
    public static String getIndexByCode(String roleCode) {
        for (RoleIndexConfigEnum e : RoleIndexConfigEnum.values()) {
            if (e.roleCode.equals(roleCode)) {
                return e.componentUrl;
            }
        }
        return null;
    }
    public static String getIndexByRoles(List<String> roles) {
        for (String role : roles) {
            for (RoleIndexConfigEnum e : RoleIndexConfigEnum.values()) {
                if (e.roleCode.equals(role)) {
                    return e.componentUrl;
                }
            }
        }
        return null;
    }
    public String getRoleCode() {
        return roleCode;
    }
    public void setRoleCode(String roleCode) {
        this.roleCode = roleCode;
    }
    public String getComponentUrl() {
        return componentUrl;
    }
    public void setComponentUrl(String componentUrl) {
        this.componentUrl = componentUrl;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/doc/vo/DeptPathPermissionVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
package org.jeecg.common.doc.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class DeptPathPermissionVo {
    public static final Integer TYPE_DEPART = 1;
    public static final Integer TYPE_ROLE = 2;
    private String id;
    private String key;
    /**部门ID*/
    private String deptId;
    /**部门名称*/
    private String deptName;
    /**部门code**/
    private String orgCode;
    /**文件ID*/
    private String pathId;
    /**角色ID*/
    private String roleId;
    /**角色名称*/
    private String roleName;
    /**访问权限*/
    private Integer visit;
    /**下载权限*/
    private Integer download;
    /**管理权限*/
    private Integer manage;
    /**下载限额*/
    private Long flow;
    private Integer type; // 1部门,2角色
    private Integer sort;
    private String parentId;
    private List<DeptPathPermissionVo> children = new ArrayList<>();
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/doc/vo/PathPermissionVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,29 @@
package org.jeecg.common.doc.vo;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data
public class PathPermissionVO {
    private String id;
    /**角色ID*/
    private String roleId;
    /**角色名称*/
    private String roleName;
    /**文件ID*/
    private String pathId;
    /**用户ID*/
    private String userId;
    /**用户名称*/
    private String userName;
    /**访问权限*/
    private Integer visit;
    /**下载权限*/
    private Integer download;
    /**管理权限*/
    private Integer manage;
    private List<PathPermissionVO> children = new ArrayList<>();
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/JeecgElasticsearchTemplate.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,538 @@
package org.jeecg.common.es;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.util.RestUtil;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import java.util.*;
/**
 * å…³äºŽ ElasticSearch çš„一些方法(创建索引、添加数据、查询等)
 *
 * @author sunjianlei
 */
@Slf4j
@Component
public class JeecgElasticsearchTemplate {
    /** es服务地址 */
    private String baseUrl;
    private final String FORMAT_JSON = "format=json";
    /** Elasticsearch çš„版本号 */
    private String version = null;
    // ElasticSearch æœ€å¤§å¯è¿”回条目数
    public static final int ES_MAX_SIZE = 10000;
    public JeecgElasticsearchTemplate(@Value("${jeecg.elasticsearch.cluster-nodes}") String baseUrl, @Value("${jeecg.elasticsearch.check-enabled}") boolean checkEnabled) {
        log.debug("JeecgElasticsearchTemplate BaseURL:" + baseUrl);
        if (StringUtils.isNotEmpty(baseUrl)) {
            this.baseUrl = baseUrl;
            // éªŒè¯é…ç½®çš„ES地址是否有效
            if (checkEnabled) {
                try {
                    this.getElasticsearchVersion();
                    log.info("ElasticSearch æœåŠ¡è¿žæŽ¥æˆåŠŸ");
                    log.info("ElasticSearch version: " + this.version);
                } catch (Exception e) {
                    this.version = "";
                    log.warn("ElasticSearch æœåŠ¡è¿žæŽ¥å¤±è´¥ï¼ŒåŽŸå› ï¼šé…ç½®æœªé€šè¿‡ã€‚å¯èƒ½æ˜¯BaseURL未配置或配置有误,也可能是Elasticsearch服务未启动。接下来将会拒绝执行任何方法!");
                }
            }
        }
    }
    /**
     * èŽ·å– Elasticsearch çš„版本号信息,失败返回null
     */
    private void getElasticsearchVersion() {
        if (this.version == null) {
            String url = this.getBaseUrl().toString();
            JSONObject result = RestUtil.get(url);
            if (result != null) {
                JSONObject v = result.getJSONObject("version");
                this.version = v.getString("number");
            }
        }
    }
    public StringBuilder getBaseUrl(String indexName, String typeName) {
        typeName = typeName.trim().toLowerCase();
        return this.getBaseUrl(indexName).append("/").append(typeName);
    }
    public StringBuilder getBaseUrl(String indexName) {
        indexName = indexName.trim().toLowerCase();
        return this.getBaseUrl().append("/").append(indexName);
    }
    public StringBuilder getBaseUrl() {
        return new StringBuilder("http://").append(this.baseUrl);
    }
    /**
     * cat æŸ¥è¯¢ElasticSearch系统数据,返回json
     */
    public <T> ResponseEntity<T> _cat(String urlAfter, Class<T> responseType) {
        String url = this.getBaseUrl().append("/_cat").append(urlAfter).append("?").append(FORMAT_JSON).toString();
        return RestUtil.request(url, HttpMethod.GET, null, null, null, responseType);
    }
    /**
     * æŸ¥è¯¢æ‰€æœ‰ç´¢å¼•
     * <p>
     * æŸ¥è¯¢åœ°å€ï¼šGET http://{baseUrl}/_cat/indices
     */
    public JSONArray getIndices() {
        return getIndices(null);
    }
    /**
     * æŸ¥è¯¢å•个索引
     * <p>
     * æŸ¥è¯¢åœ°å€ï¼šGET http://{baseUrl}/_cat/indices/{indexName}
     */
    public JSONArray getIndices(String indexName) {
        StringBuilder urlAfter = new StringBuilder("/indices");
        if (!StringUtils.isEmpty(indexName)) {
            urlAfter.append("/").append(indexName.trim().toLowerCase());
        }
        return _cat(urlAfter.toString(), JSONArray.class).getBody();
    }
    /**
     * ç´¢å¼•是否存在
     */
    public boolean indexExists(String indexName) {
        try {
            JSONArray array = getIndices(indexName);
            return array != null;
        } catch (org.springframework.web.client.HttpClientErrorException ex) {
            if (HttpStatus.NOT_FOUND == ex.getStatusCode()) {
                return false;
            } else {
                throw ex;
            }
        }
    }
    /**
     * æ ¹æ®ID获取索引数据,未查询到返回null
     * <p>
     * æŸ¥è¯¢åœ°å€ï¼šGET http://{baseUrl}/{indexName}/{typeName}/{dataId}
     *
     * @param indexName ç´¢å¼•名称
     * @param typeName  type,一个任意字符串,用于分类
     * @param dataId    æ•°æ®id
     * @return
     */
    public JSONObject getDataById(String indexName, String typeName, String dataId) {
        String url = this.getBaseUrl(indexName, typeName).append("/").append(dataId).toString();
        log.info("url:" + url);
        JSONObject result = RestUtil.get(url);
        boolean found = result.getBoolean("found");
        if (found) {
            return result.getJSONObject("_source");
        } else {
            return null;
        }
    }
    /**
     * åˆ›å»ºç´¢å¼•
     * <p>
     * æŸ¥è¯¢åœ°å€ï¼šPUT http://{baseUrl}/{indexName}
     */
    public boolean createIndex(String indexName) {
        String url = this.getBaseUrl(indexName).toString();
        /* è¿”回结果 ï¼ˆä»…供参考)
        "createIndex": {
            "shards_acknowledged": true,
            "acknowledged": true,
            "index": "hello_world"
        }
        */
        try {
            return RestUtil.put(url).getBoolean("acknowledged");
        } catch (org.springframework.web.client.HttpClientErrorException ex) {
            if (HttpStatus.BAD_REQUEST == ex.getStatusCode()) {
                log.warn("索引创建失败:" + indexName + " å·²å­˜åœ¨ï¼Œæ— éœ€å†åˆ›å»º");
            } else {
                ex.printStackTrace();
            }
        }
        return false;
    }
    /**
     * åˆ é™¤ç´¢å¼•
     * <p>
     * æŸ¥è¯¢åœ°å€ï¼šDELETE http://{baseUrl}/{indexName}
     */
    public boolean removeIndex(String indexName) {
        String url = this.getBaseUrl(indexName).toString();
        try {
            return RestUtil.delete(url).getBoolean("acknowledged");
        } catch (org.springframework.web.client.HttpClientErrorException ex) {
            if (HttpStatus.NOT_FOUND == ex.getStatusCode()) {
                log.warn("索引删除失败:" + indexName + " ä¸å­˜åœ¨ï¼Œæ— éœ€åˆ é™¤");
            } else {
                ex.printStackTrace();
            }
        }
        return false;
    }
    /**
     * èŽ·å–ç´¢å¼•å­—æ®µæ˜ å°„ï¼ˆå¯èŽ·å–å­—æ®µç±»åž‹ï¼‰
     * <p>
     *
     * @param indexName ç´¢å¼•名称
     * @param typeName  åˆ†ç±»åç§°
     * @return
     */
    public JSONObject getIndexMapping(String indexName, String typeName) {
        String url = this.getBaseUrl(indexName, typeName).append("/_mapping?").append(FORMAT_JSON).toString();
        // é’ˆå¯¹ es 7.x ç‰ˆæœ¬åšå…¼å®¹
        this.getElasticsearchVersion();
        if (oConvertUtils.isNotEmpty(this.version) && this.version.startsWith("7")) {
            url += "&include_type_name=true";
        }
        log.info("getIndexMapping-url:" + url);
        /*
         * å‚考返回JSON结构:
         *
         *{
         *    // ç´¢å¼•名称
         *    "[indexName]": {
         *        "mappings": {
         *            // åˆ†ç±»åç§°
         *            "[typeName]": {
         *                "properties": {
         *                    // å­—段名
         *                    "input_number": {
         *                        // å­—段类型
         *                        "type": "long"
         *                    },
         *                    "input_string": {
         *                        "type": "text",
         *                        "fields": {
         *                            "keyword": {
         *                                "type": "keyword",
         *                                "ignore_above": 256
         *                            }
         *                        }
         *                    }
         *                 }
         *            }
         *        }
         *    }
         * }
         */
        try {
            return RestUtil.get(url);
        } catch (org.springframework.web.client.HttpClientErrorException e) {
            String message = e.getMessage();
            if (message != null && message.contains("404 Not Found")) {
                return null;
            }
            throw e;
        }
    }
    /**
     * èŽ·å–ç´¢å¼•å­—æ®µæ˜ å°„ï¼Œè¿”å›žJava实体类
     *
     * @param indexName
     * @param typeName
     * @return
     */
    public <T> Map<String, T> getIndexMappingFormat(String indexName, String typeName, Class<T> clazz) {
        JSONObject mapping = this.getIndexMapping(indexName, typeName);
        Map<String, T> map = new HashMap<>();
        if (mapping == null) {
            return map;
        }
        // èŽ·å–å­—æ®µå±žæ€§
        JSONObject properties = mapping.getJSONObject(indexName)
                .getJSONObject("mappings")
                .getJSONObject(typeName)
                .getJSONObject("properties");
        // å°è£…成 java类型
        for (String key : properties.keySet()) {
            T entity = properties.getJSONObject(key).toJavaObject(clazz);
            map.put(key, entity);
        }
        return map;
    }
    /**
     * ä¿å­˜æ•°æ®ï¼Œè¯¦è§ï¼šsaveOrUpdate
     */
    public boolean save(String indexName, String typeName, String dataId, JSONObject data) {
        return this.saveOrUpdate(indexName, typeName, dataId, data);
    }
    /**
     * æ›´æ–°æ•°æ®ï¼Œè¯¦è§ï¼šsaveOrUpdate
     */
    public boolean update(String indexName, String typeName, String dataId, JSONObject data) {
        return this.saveOrUpdate(indexName, typeName, dataId, data);
    }
    /**
     * ä¿å­˜æˆ–修改索引数据
     * <p>
     * æŸ¥è¯¢åœ°å€ï¼šPUT http://{baseUrl}/{indexName}/{typeName}/{dataId}
     *
     * @param indexName ç´¢å¼•名称
     * @param typeName  type,一个任意字符串,用于分类
     * @param dataId    æ•°æ®id
     * @param data      è¦å­˜å‚¨çš„æ•°æ®
     * @return
     */
    public boolean saveOrUpdate(String indexName, String typeName, String dataId, JSONObject data) {
        String url = this.getBaseUrl(indexName, typeName).append("/").append(dataId).append("?refresh=wait_for").toString();
        /* è¿”回结果(仅供参考)
       "createIndexA2": {
            "result": "created",
            "_shards": {
                "total": 2,
                "successful": 1,
                "failed": 0
            },
            "_seq_no": 0,
            "_index": "test_index_1",
            "_type": "test_type_1",
            "_id": "a2",
            "_version": 1,
            "_primary_term": 1
        }
         */
        try {
            // åŽ»æŽ‰ data ä¸­ä¸ºç©ºçš„值
            Set<String> keys = data.keySet();
            List<String> emptyKeys = new ArrayList<>(keys.size());
            for (String key : keys) {
                String value = data.getString(key);
                //1、剔除空值
                if (oConvertUtils.isEmpty(value) || "[]".equals(value)) {
                    emptyKeys.add(key);
                }
                //2、剔除上传控件值(会导致ES同步失败,报异常failed to parse field [ge_pic] of type [text] )
                if (oConvertUtils.isNotEmpty(value) && value.indexOf("[{")!=-1) {
                    emptyKeys.add(key);
                    log.info("-------剔除上传控件字段------------key: "+ key);
                }
            }
            for (String key : emptyKeys) {
                data.remove(key);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        try {
            String result = RestUtil.put(url, data).getString("result");
            return "created".equals(result) || "updated".equals(result);
        } catch (Exception e) {
            log.error(e.getMessage() + "\n-- url: " + url + "\n-- data: " + data.toJSONString());
            //TODO æ‰“印接口返回异常json
            return false;
        }
    }
    /**
     * æ‰¹é‡ä¿å­˜æ•°æ®
     *
     * @param indexName ç´¢å¼•名称
     * @param typeName  type,一个任意字符串,用于分类
     * @param dataList  è¦å­˜å‚¨çš„æ•°æ®æ•°ç»„,每行数据必须包含id
     * @return
     */
    public boolean saveBatch(String indexName, String typeName, JSONArray dataList) {
        String url = this.getBaseUrl().append("/_bulk").append("?refresh=wait_for").toString();
        StringBuilder bodySB = new StringBuilder();
        for (int i = 0; i < dataList.size(); i++) {
            JSONObject data = dataList.getJSONObject(i);
            String id = data.getString("id");
            // è¯¥è¡Œçš„æ“ä½œ
            // {"create": {"_id":"${id}", "_index": "${indexName}", "_type": "${typeName}"}}
            JSONObject action = new JSONObject();
            JSONObject actionInfo = new JSONObject();
            actionInfo.put("_id", id);
            actionInfo.put("_index", indexName);
            actionInfo.put("_type", typeName);
            action.put("create", actionInfo);
            bodySB.append(action.toJSONString()).append("\n");
            // è¯¥è¡Œçš„æ•°æ®
            data.remove("id");
            bodySB.append(data.toJSONString()).append("\n");
        }
        System.out.println("+-+-+-: bodySB.toString(): " + bodySB.toString());
        HttpHeaders headers = RestUtil.getHeaderApplicationJson();
        RestUtil.request(url, HttpMethod.PUT, headers, null, bodySB, JSONObject.class);
        return true;
    }
    /**
     * åˆ é™¤ç´¢å¼•数据
     * <p>
     * è¯·æ±‚地址:DELETE http://{baseUrl}/{indexName}/{typeName}/{dataId}
     */
    public boolean delete(String indexName, String typeName, String dataId) {
        String url = this.getBaseUrl(indexName, typeName).append("/").append(dataId).toString();
        /* è¿”回结果(仅供参考)
        {
            "_index": "es_demo",
            "_type": "docs",
            "_id": "001",
            "_version": 3,
            "result": "deleted",
            "_shards": {
                "total": 1,
                "successful": 1,
                "failed": 0
            },
            "_seq_no": 28,
            "_primary_term": 18
        }
        */
        try {
            return "deleted".equals(RestUtil.delete(url).getString("result"));
        } catch (org.springframework.web.client.HttpClientErrorException ex) {
            if (HttpStatus.NOT_FOUND == ex.getStatusCode()) {
                return false;
            } else {
                throw ex;
            }
        }
    }
    /* = = = ä»¥ä¸‹å…³äºŽæŸ¥è¯¢å’ŒæŸ¥è¯¢æ¡ä»¶çš„æ–¹æ³• = = =*/
    /**
     * æŸ¥è¯¢æ•°æ®
     * <p>
     * è¯·æ±‚地址:POST http://{baseUrl}/{indexName}/{typeName}/_search
     */
    public JSONObject search(String indexName, String typeName, JSONObject queryObject) {
        String url = this.getBaseUrl(indexName, typeName).append("/_search").toString();
        log.info("url:" + url + " ,search: " + queryObject.toJSONString());
        JSONObject res = RestUtil.post(url, queryObject);
        log.info("url:" + url + " ,return res: \n" + res.toJSONString());
        return res;
    }
    /**
     * @param _source ï¼ˆæºæ»¤æ³¢å™¨ï¼‰æŒ‡å®šè¿”回的字段,传null返回所有字段
     * @param query
     * @param from    ä»Žç¬¬å‡ æ¡æ•°æ®å¼€å§‹
     * @param size    è¿”回条目数
     * @return { "query": query }
     */
    public JSONObject buildQuery(List<String> _source, JSONObject query, int from, int size) {
        JSONObject json = new JSONObject();
        if (_source != null) {
            json.put("_source", _source);
        }
        json.put("query", query);
        json.put("from", from);
        json.put("size", size);
        return json;
    }
    /**
     * @return { "bool" : { "must": must, "must_not": mustNot, "should": should } }
     */
    public JSONObject buildBoolQuery(JSONArray must, JSONArray mustNot, JSONArray should) {
        JSONObject bool = new JSONObject();
        if (must != null) {
            bool.put("must", must);
        }
        if (mustNot != null) {
            bool.put("must_not", mustNot);
        }
        if (should != null) {
            bool.put("should", should);
        }
        JSONObject json = new JSONObject();
        json.put("bool", bool);
        return json;
    }
    /**
     * @param field è¦æŸ¥è¯¢çš„字段
     * @param args  æŸ¥è¯¢å‚数,参考: *哈哈* OR *哒* NOT *呵* OR *啊*
     * @return
     */
    public JSONObject buildQueryString(String field, String... args) {
        if (field == null) {
            return null;
        }
        StringBuilder sb = new StringBuilder(field).append(":(");
        if (args != null) {
            for (String arg : args) {
                sb.append(arg).append(" ");
            }
        }
        sb.append(")");
        return this.buildQueryString(sb.toString());
    }
    /**
     * @return { "query_string": { "query": query }  }
     */
    public JSONObject buildQueryString(String query) {
        JSONObject queryString = new JSONObject();
        queryString.put("query", query);
        JSONObject json = new JSONObject();
        json.put("query_string", queryString);
        return json;
    }
    /**
     * @param field      æŸ¥è¯¢å­—段
     * @param min        æœ€å°å€¼
     * @param max        æœ€å¤§å€¼
     * @param containMin èŒƒå›´å†…是否包含最小值
     * @param containMax èŒƒå›´å†…是否包含最大值
     * @return { "range" : { field : { ã€Ž "gt『e』?containMin" : min ã€?min!=null , ã€Ž "lt『e』?containMax" : max ã€}} }
     */
    public JSONObject buildRangeQuery(String field, Object min, Object max, boolean containMin, boolean containMax) {
        JSONObject inner = new JSONObject();
        if (min != null) {
            if (containMin) {
                inner.put("gte", min);
            } else {
                inner.put("gt", min);
            }
        }
        if (max != null) {
            if (containMax) {
                inner.put("lte", max);
            } else {
                inner.put("lt", max);
            }
        }
        JSONObject range = new JSONObject();
        range.put(field, inner);
        JSONObject json = new JSONObject();
        json.put("range", range);
        return json;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/es/QueryStringBuilder.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,98 @@
package org.jeecg.common.es;
/**
 * ç”¨äºŽåˆ›å»º ElasticSearch çš„ queryString
 *
 * @author sunjianlei
 */
public class QueryStringBuilder {
    StringBuilder builder;
    public QueryStringBuilder(String field, String str, boolean not, boolean addQuot) {
        builder = this.createBuilder(field, str, not, addQuot);
    }
    public QueryStringBuilder(String field, String str, boolean not) {
        builder = this.createBuilder(field, str, not, true);
    }
    /**
     * åˆ›å»º StringBuilder
     *
     * @param field
     * @param str
     * @param not     æ˜¯å¦æ˜¯ä¸åŒ¹é…
     * @param addQuot æ˜¯å¦æ·»åŠ åŒå¼•å·
     * @return
     */
    public StringBuilder createBuilder(String field, String str, boolean not, boolean addQuot) {
        StringBuilder sb = new StringBuilder(field).append(":(");
        if (not) {
            sb.append(" NOT ");
        }
        this.addQuotEffect(sb, str, addQuot);
        return sb;
    }
    public QueryStringBuilder and(String str) {
        return this.and(str, true);
    }
    public QueryStringBuilder and(String str, boolean addQuot) {
        builder.append(" AND ");
        this.addQuot(str, addQuot);
        return this;
    }
    public QueryStringBuilder or(String str) {
        return this.or(str, true);
    }
    public QueryStringBuilder or(String str, boolean addQuot) {
        builder.append(" OR ");
        this.addQuot(str, addQuot);
        return this;
    }
    public QueryStringBuilder not(String str) {
        return this.not(str, true);
    }
    public QueryStringBuilder not(String str, boolean addQuot) {
        builder.append(" NOT ");
        this.addQuot(str, addQuot);
        return this;
    }
    /**
    * æ·»åŠ åŒå¼•å·ï¼ˆæ¨¡ç³ŠæŸ¥è¯¢ï¼Œä¸èƒ½åŠ åŒå¼•å·ï¼‰
    */
    private QueryStringBuilder addQuot(String str, boolean addQuot) {
        return this.addQuotEffect(this.builder, str, addQuot);
    }
    /**
     * æ˜¯å¦åœ¨ä¸¤è¾¹åŠ ä¸ŠåŒå¼•å·
     * @param builder
     * @param str
     * @param addQuot
     * @return
     */
    private QueryStringBuilder addQuotEffect(StringBuilder builder, String str, boolean addQuot) {
        if (addQuot) {
            builder.append('"');
        }
        builder.append(str);
        if (addQuot) {
            builder.append('"');
        }
        return this;
    }
    @Override
    public String toString() {
        return builder.append(")").toString();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBoot401Exception.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.common.exception;
public class JeecgBoot401Exception extends RuntimeException {
    private static final long serialVersionUID = 1L;
    public JeecgBoot401Exception(String message){
        super(message);
    }
    public JeecgBoot401Exception(Throwable cause)
    {
        super(cause);
    }
    public JeecgBoot401Exception(String message, Throwable cause)
    {
        super(message,cause);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootException.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.common.exception;
public class JeecgBootException extends RuntimeException {
    private static final long serialVersionUID = 1L;
    public JeecgBootException(String message){
        super(message);
    }
    public JeecgBootException(Throwable cause)
    {
        super(cause);
    }
    public JeecgBootException(String message,Throwable cause)
    {
        super(message,cause);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/exception/JeecgBootExceptionHandler.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,118 @@
package org.jeecg.common.exception;
import io.lettuce.core.RedisConnectionException;
import org.apache.shiro.authz.AuthorizationException;
import org.apache.shiro.authz.UnauthorizedException;
import org.jeecg.common.api.vo.Result;
import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.dao.DuplicateKeyException;
import org.springframework.data.redis.connection.PoolException;
import org.springframework.http.HttpStatus;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.NoHandlerFoundException;
import lombok.extern.slf4j.Slf4j;
/**
 * å¼‚常处理器
 *
 * @Author scott
 * @Date 2019
 */
@RestControllerAdvice
@Slf4j
public class JeecgBootExceptionHandler {
    /**
     * å¤„理自定义异常
     */
    @ExceptionHandler(JeecgBootException.class)
    public Result<?> handleJeecgBootException(JeecgBootException e){
        log.error(e.getMessage(), e);
        return Result.error(e.getMessage());
    }
    /**
     * å¤„理自定义异常
     */
    @ExceptionHandler(JeecgBoot401Exception.class)
    @ResponseStatus(HttpStatus.UNAUTHORIZED)
    public Result<?> handleJeecgBoot401Exception(JeecgBoot401Exception e){
        log.error(e.getMessage(), e);
        return new Result(401,e.getMessage());
    }
    @ExceptionHandler(NoHandlerFoundException.class)
    public Result<?> handlerNoFoundException(Exception e) {
        log.error(e.getMessage(), e);
        return Result.error(404, "路径不存在,请检查路径是否正确");
    }
    @ExceptionHandler(DuplicateKeyException.class)
    public Result<?> handleDuplicateKeyException(DuplicateKeyException e){
        log.error(e.getMessage(), e);
        return Result.error("数据库中已存在该记录");
    }
    @ExceptionHandler({UnauthorizedException.class, AuthorizationException.class})
    public Result<?> handleAuthorizationException(AuthorizationException e){
        log.error(e.getMessage(), e);
        return Result.noauth("没有权限,请联系管理员授权");
    }
    @ExceptionHandler(Exception.class)
    public Result<?> handleException(Exception e){
        log.error(e.getMessage(), e);
        return Result.error("操作失败,"+e.getMessage());
    }
    /**
     * @Author æ”¿è¾‰
     * @param e
     * @return
     */
    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
    public Result<?> HttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e){
        StringBuffer sb = new StringBuffer();
        sb.append("不支持");
        sb.append(e.getMethod());
        sb.append("请求方法,");
        sb.append("支持以下");
        String [] methods = e.getSupportedMethods();
        if(methods!=null){
            for(String str:methods){
                sb.append(str);
                sb.append("、");
            }
        }
        log.error(sb.toString(), e);
        //return Result.error("没有权限,请联系管理员授权");
        return Result.error(405,sb.toString());
    }
     /**
      * spring默认上传大小100MB è¶…出大小捕获异常MaxUploadSizeExceededException
      */
    @ExceptionHandler(MaxUploadSizeExceededException.class)
    public Result<?> handleMaxUploadSizeExceededException(MaxUploadSizeExceededException e) {
        log.error(e.getMessage(), e);
        return Result.error("文件大小超出10MB限制, è¯·åŽ‹ç¼©æˆ–é™ä½Žæ–‡ä»¶è´¨é‡! ");
    }
    @ExceptionHandler(DataIntegrityViolationException.class)
    public Result<?> handleDataIntegrityViolationException(DataIntegrityViolationException e) {
        log.error(e.getMessage(), e);
        return Result.error("字段太长,超出数据库字段的长度");
    }
    @ExceptionHandler(PoolException.class)
    public Result<?> handlePoolException(PoolException e) {
        log.error(e.getMessage(), e);
        return Result.error("Redis è¿žæŽ¥å¼‚常!");
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/handler/IFillRuleHandler.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package org.jeecg.common.handler;
import com.alibaba.fastjson.JSONObject;
/**
 * å¡«å€¼è§„则接口
 *
 * @author Yan_东
 * å¦‚需使用填值规则功能,规则实现类必须实现此接口
 */
public interface IFillRuleHandler {
    /**
     * @param params é¡µé¢é…ç½®å›ºå®šå‚æ•°
     * @param formData  åŠ¨æ€è¡¨å•å‚æ•°
     * @return
     */
    public Object execute(JSONObject params, JSONObject formData);
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/controller/JeecgController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
package org.jeecg.common.system.base.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.entity.enmus.ExcelType;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @Description: Controller基类
 * @Author: dangzhenghui@163.com
 * @Date: 2019-4-21 8:13
 * @Version: 1.0
 */
@Slf4j
public class JeecgController<T, S extends IService<T>> {
    //issues/2933 JeecgController注入service时改用protected修饰,能避免重复引用service
    @Autowired
    protected S service;
    @Value("${jeecg.path.upload}")
    private String upLoadPath;
    /**
     * å¯¼å‡ºexcel
     *
     * @param request
     */
    protected ModelAndView exportXls(HttpServletRequest request, T object, Class<T> clazz, String title) {
        // Step.1 ç»„装查询条件
        QueryWrapper<T> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        // Step.2 èŽ·å–å¯¼å‡ºæ•°æ®
        List<T> pageList = service.list(queryWrapper);
        List<T> exportList = null;
        // è¿‡æ»¤é€‰ä¸­æ•°æ®
        String selections = request.getParameter("selections");
        if (oConvertUtils.isNotEmpty(selections)) {
            List<String> selectionList = Arrays.asList(selections.split(","));
            exportList = pageList.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList());
        } else {
            exportList = pageList;
        }
        // Step.3 AutoPoi å¯¼å‡ºExcel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.CLASS, clazz);
        //update-begin--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
        ExportParams  exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title);
        exportParams.setImageBasePath(upLoadPath);
        //update-end--Author:liusq  Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
        mv.addObject(NormalExcelConstants.PARAMS,exportParams);
        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
        return mv;
    }
    /**
     * æ ¹æ®æ¯é¡µsheet数量导出多sheet
     *
     * @param request
     * @param object å®žä½“ç±»
     * @param clazz å®žä½“ç±»class
     * @param title æ ‡é¢˜
     * @param exportFields å¯¼å‡ºå­—段自定义
     * @param pageNum æ¯ä¸ªsheet的数据条数
     * @param request
     */
    protected ModelAndView exportXlsSheet(HttpServletRequest request, T object, Class<T> clazz, String title,String exportFields,Integer pageNum) {
        // Step.1 ç»„装查询条件
        QueryWrapper<T> queryWrapper = QueryGenerator.initQueryWrapper(object, request.getParameterMap());
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        // Step.2 è®¡ç®—分页sheet数据
        double total = service.count();
        int count = (int)Math.ceil(total/pageNum);
        // Step.3 å¤šsheet处理
        List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>();
        for (int i = 1; i <=count ; i++) {
            Page<T> page = new Page<T>(i, pageNum);
            IPage<T> pageList = service.page(page, queryWrapper);
            List<T> records = pageList.getRecords();
            List<T> exportList = null;
            // è¿‡æ»¤é€‰ä¸­æ•°æ®
            String selections = request.getParameter("selections");
            if (oConvertUtils.isNotEmpty(selections)) {
                List<String> selectionList = Arrays.asList(selections.split(","));
                exportList = records.stream().filter(item -> selectionList.contains(getId(item))).collect(Collectors.toList());
            } else {
                exportList = records;
            }
            Map<String, Object> map = new HashMap<String, Object>();
            ExportParams  exportParams=new ExportParams(title + "报表", "导出人:" + sysUser.getRealname(), title+i,upLoadPath);
            exportParams.setType(ExcelType.XSSF);
            //map.put("title",exportParams);//表格Title
            map.put(NormalExcelConstants.PARAMS,exportParams);//表格Title
            map.put(NormalExcelConstants.CLASS,clazz);//表格对应实体
            map.put(NormalExcelConstants.DATA_LIST, exportList);//数据集合
            listMap.add(map);
        }
        // Step.4 AutoPoi å¯¼å‡ºExcel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        mv.addObject(NormalExcelConstants.FILE_NAME, title); //此处设置的filename无效 ,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.MAP_LIST, listMap);
        return mv;
    }
    /**
     * æ ¹æ®æƒé™å¯¼å‡ºexcel,传入导出字段参数
     *
     * @param request
     */
    protected ModelAndView exportXls(HttpServletRequest request, T object, Class<T> clazz, String title,String exportFields) {
        ModelAndView mv = this.exportXls(request,object,clazz,title);
        mv.addObject(NormalExcelConstants.EXPORT_FIELDS,exportFields);
        return mv;
    }
    /**
     * èŽ·å–å¯¹è±¡ID
     *
     * @return
     */
    private String getId(T item) {
        try {
            return PropertyUtils.getProperty(item, "id").toString();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * é€šè¿‡excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    protected Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, Class<T> clazz) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            MultipartFile file = entity.getValue();// èŽ·å–ä¸Šä¼ æ–‡ä»¶å¯¹è±¡
            ImportParams params = new ImportParams();
            params.setTitleRows(2);
            params.setHeadRows(1);
            params.setNeedSave(true);
            try {
                List<T> list = ExcelImportUtil.importExcel(file.getInputStream(), clazz, params);
                //update-begin-author:taoyan date:20190528 for:批量插入数据
                long start = System.currentTimeMillis();
                service.saveBatch(list);
                //400条 saveBatch消耗时间1592毫秒  å¾ªçŽ¯æ’å…¥æ¶ˆè€—æ—¶é—´1947毫秒
                //1200条  saveBatch消耗时间3687毫秒 å¾ªçŽ¯æ’å…¥æ¶ˆè€—æ—¶é—´5212毫秒
                log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
                //update-end-author:taoyan date:20190528 for:批量插入数据
                return Result.ok("文件导入成功!数据行数:" + list.size());
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error("文件导入失败:" + e.getMessage());
            } finally {
                try {
                    file.getInputStream().close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return Result.error("文件导入失败!");
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/entity/JeecgEntity.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package org.jeecg.common.system.base.entity;
import java.io.Serializable;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * @Description: Entity基类
 * @Author: dangzhenghui@163.com
 * @Date: 2019-4-28
 * @Version: 1.1
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class JeecgEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    /** ID */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "ID")
    private java.lang.String id;
    /** åˆ›å»ºäºº */
    @ApiModelProperty(value = "创建人")
    @Excel(name = "创建人", width = 15)
    private java.lang.String createBy;
    /** åˆ›å»ºæ—¶é—´ */
    @ApiModelProperty(value = "创建时间")
    @Excel(name = "创建时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date createTime;
    /** æ›´æ–°äºº */
    @ApiModelProperty(value = "更新人")
    @Excel(name = "更新人", width = 15)
    private java.lang.String updateBy;
    /** æ›´æ–°æ—¶é—´ */
    @ApiModelProperty(value = "更新时间")
    @Excel(name = "更新时间", width = 20, format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private java.util.Date updateTime;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/JeecgService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package org.jeecg.common.system.base.service;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: Service基类
 * @Author: dangzhenghui@163.com
 * @Date: 2019-4-21 8:13
 * @Version: 1.0
 */
public interface JeecgService<T> extends IService<T> {
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/base/service/impl/JeecgServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,19 @@
package org.jeecg.common.system.base.service.impl;
import org.jeecg.common.system.base.entity.JeecgEntity;
import org.jeecg.common.system.base.service.JeecgService;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
/**
 * @Description: ServiceImpl基类
 * @Author: dangzhenghui@163.com
 * @Date: 2019-4-21 8:13
 * @Version: 1.0
 */
@Slf4j
public class JeecgServiceImpl<M extends BaseMapper<T>, T extends JeecgEntity> extends ServiceImpl<M, T> implements JeecgService<T> {
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/MatchTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package org.jeecg.common.system.query;
import org.jeecg.common.util.oConvertUtils;
/**
 * æŸ¥è¯¢é“¾æŽ¥è§„则
 *
 * @Author Sunjianlei
 */
public enum MatchTypeEnum {
    AND("AND"),
    OR("OR");
    private String value;
    MatchTypeEnum(String value) {
        this.value = value;
    }
    public String getValue() {
        return value;
    }
    public static MatchTypeEnum getByValue(Object value) {
        if (oConvertUtils.isEmpty(value)) {
            return null;
        }
        return getByValue(value.toString());
    }
    public static MatchTypeEnum getByValue(String value) {
        if (oConvertUtils.isEmpty(value)) {
            return null;
        }
        for (MatchTypeEnum val : values()) {
            if (val.getValue().toLowerCase().equals(value.toLowerCase())) {
                return val;
            }
        }
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryCondition.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,69 @@
package org.jeecg.common.system.query;
import java.io.Serializable;
public class QueryCondition implements Serializable {
    private static final long serialVersionUID = 4740166316629191651L;
    private String field;
    /** ç»„件的类型(例如:input、select、radio) */
    private String type;
    /**
     * å¯¹åº”的数据库字段的类型
     * æ”¯æŒï¼šint、bigDecimal、short、long、float、double、boolean
     */
    private String dbType;
    private String rule;
    private String val;
    public String getField() {
        return field;
    }
    public void setField(String field) {
        this.field = field;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getDbType() {
        return dbType;
    }
    public void setDbType(String dbType) {
        this.dbType = dbType;
    }
    public String getRule() {
        return rule;
    }
    public void setRule(String rule) {
        this.rule = rule;
    }
    public String getVal() {
        return val;
    }
    public void setVal(String val) {
        this.val = val;
    }
    @Override
    public String toString(){
        StringBuffer sb =new StringBuffer();
        if(field == null || "".equals(field)){
            return "";
        }
        sb.append(this.field).append(" ").append(this.rule).append(" ").append(this.type).append(" ").append(this.dbType).append(" ").append(this.val);
        return sb.toString();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryGenerator.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1114 @@
package org.jeecg.common.system.query;
import java.beans.PropertyDescriptor;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import org.apache.commons.beanutils.PropertyUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.system.util.JeecgDataAutorUtils;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.SqlInjectionUtil;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.util.NumberUtils;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class QueryGenerator {
    public static final String SQL_RULES_COLUMN = "SQL_RULES_COLUMN";
    private static final String BEGIN = "_begin";
    private static final String END = "_end";
    /**
     * æ•°å­—类型字段,拼接此后缀 æŽ¥å—多值参数
     */
    private static final String MULTI = "_MultiString";
    private static final String STAR = "*";
    private static final String COMMA = ",";
    /**
     * æŸ¥è¯¢ é€—号转义符 ç›¸å½“于一个逗号【作废】
     */
    public static final String QUERY_COMMA_ESCAPE = "++";
    private static final String NOT_EQUAL = "!";
    /**页面带有规则值查询,空格作为分隔符*/
    private static final String QUERY_SEPARATE_KEYWORD = " ";
    /**高级查询前端传来的参数名*/
    private static final String SUPER_QUERY_PARAMS = "superQueryParams";
    /** é«˜çº§æŸ¥è¯¢å‰ç«¯ä¼ æ¥çš„æ‹¼æŽ¥æ–¹å¼å‚数名 */
    private static final String SUPER_QUERY_MATCH_TYPE = "superQueryMatchType";
    /** å•引号 */
    public static final String SQL_SQ = "'";
    /**排序列*/
    private static final String ORDER_COLUMN = "column";
    /**排序方式*/
    private static final String ORDER_TYPE = "order";
    private static final String ORDER_TYPE_ASC = "ASC";
    /**mysql æ¨¡ç³ŠæŸ¥è¯¢ä¹‹ç‰¹æ®Šå­—符下划线 ï¼ˆ_、\)*/
    public static final String LIKE_MYSQL_SPECIAL_STRS = "_,%";
    /**时间格式化 */
    private static final ThreadLocal<SimpleDateFormat> local = new ThreadLocal<SimpleDateFormat>();
    private static SimpleDateFormat getTime(){
        SimpleDateFormat time = local.get();
        if(time == null){
            time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            local.set(time);
        }
        return time;
    }
    /**
     * èŽ·å–æŸ¥è¯¢æ¡ä»¶æž„é€ å™¨QueryWrapper实例 é€šç”¨æŸ¥è¯¢æ¡ä»¶å·²è¢«å°è£…完成
     * @param searchObj æŸ¥è¯¢å®žä½“
     * @param parameterMap request.getParameterMap()
     * @return QueryWrapper实例
     */
    public static <T> QueryWrapper<T> initQueryWrapper(T searchObj,Map<String, String[]> parameterMap){
        long start = System.currentTimeMillis();
        QueryWrapper<T> queryWrapper = new QueryWrapper<T>();
        installMplus(queryWrapper, searchObj, parameterMap);
        log.debug("---查询条件构造器初始化完成,耗时:"+(System.currentTimeMillis()-start)+"毫秒----");
        return queryWrapper;
    }
    /**
     * ç»„装Mybatis Plus æŸ¥è¯¢æ¡ä»¶
     * <p>使用此方法 éœ€è¦æœ‰å¦‚下几点注意:
     * <br>1.使用QueryWrapper è€ŒéžLambdaQueryWrapper;
     * <br>2.实例化QueryWrapper时不可将实体传入参数
     * <br>错误示例:如QueryWrapper<JeecgDemo> queryWrapper = new QueryWrapper<JeecgDemo>(jeecgDemo);
     * <br>正确示例:QueryWrapper<JeecgDemo> queryWrapper = new QueryWrapper<JeecgDemo>();
     * <br>3.也可以不使用这个方法直接调用 {@link #initQueryWrapper}直接获取实例
     */
    private static void installMplus(QueryWrapper<?> queryWrapper,Object searchObj,Map<String, String[]> parameterMap) {
        /*
         * æ³¨æ„:权限查询由前端配置数据规则 å½“一个人有多个所属部门时候 å¯ä»¥åœ¨è§„则配置包含条件 orgCode åŒ…含 #{sys_org_code}
        ä½†æ˜¯ä¸æ”¯æŒåœ¨è‡ªå®šä¹‰SQL中写orgCode in #{sys_org_code}
        å½“一个人只有一个部门 å°±ç›´æŽ¥é…ç½®ç­‰äºŽæ¡ä»¶: orgCode ç­‰äºŽ #{sys_org_code} æˆ–者配置自定义SQL: orgCode = '#{sys_org_code}'
        */
        //区间条件组装 æ¨¡ç³ŠæŸ¥è¯¢ é«˜çº§æŸ¥è¯¢ç»„装 ç®€å•排序 æƒé™æŸ¥è¯¢
        PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(searchObj);
        Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
        //权限规则自定义SQL表达式
        for (String c : ruleMap.keySet()) {
            if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
                queryWrapper.and(i ->i.apply(getSqlRuleValue(ruleMap.get(c).getRuleValue())));
            }
        }
        String name, type, column;
        // update-begin--Author:taoyan  Date:20200923 for:issues/1671 å¦‚果字段加注解了@TableField(exist = false),不走DB查询-------
        //定义实体字段和数据库字段名称的映射 é«˜çº§æŸ¥è¯¢ä¸­ åªèƒ½èŽ·å–å®žä½“å­—æ®µ å¦‚果设置TableField注解 é‚£ä¹ˆæŸ¥è¯¢æ¡ä»¶ä¼šå‡ºé—®é¢˜
        Map<String,String> fieldColumnMap = new HashMap<String,String>();
        for (int i = 0; i < origDescriptors.length; i++) {
            //aliasName = origDescriptors[i].getName();  mybatis  ä¸å­˜åœ¨å®žä½“属性 ä¸ç”¨å¤„理别名的情况
            name = origDescriptors[i].getName();
            type = origDescriptors[i].getPropertyType().toString();
            try {
                if (judgedIsUselessField(name)|| !PropertyUtils.isReadable(searchObj, name)) {
                    continue;
                }
                Object value = PropertyUtils.getSimpleProperty(searchObj, name);
                column = getTableFieldName(searchObj.getClass(), name);
                if(column==null){
                    //column为null只有一种情况 é‚£å°±æ˜¯ æ·»åŠ äº†æ³¨è§£@TableField(exist = false) åŽç»­éƒ½ä¸ç”¨å¤„理了
                    continue;
                }
                fieldColumnMap.put(name,column);
                //数据权限查询
                if(ruleMap.containsKey(name)) {
                    addRuleToQueryWrapper(ruleMap.get(name), column, origDescriptors[i].getPropertyType(), queryWrapper);
                }
                //区间查询
                doIntervalQuery(queryWrapper, parameterMap, type, name, column);
                //判断单值  å‚数带不同标识字符串 èµ°ä¸åŒçš„æŸ¥è¯¢
                //TODO è¿™ç§å‰åŽå¸¦é€—号的支持分割后模糊查询需要否 ä½¿å¤šé€‰å­—段的查询生效
                if (null != value && value.toString().startsWith(COMMA) && value.toString().endsWith(COMMA)) {
                    String multiLikeval = value.toString().replace(",,", COMMA);
                    String[] vals = multiLikeval.substring(1, multiLikeval.length()).split(COMMA);
                    final String field = oConvertUtils.camelToUnderline(column);
                    if(vals.length>1) {
                        queryWrapper.and(j -> {
                            j = j.like(field,vals[0]);
                            for (int k=1;k<vals.length;k++) {
                                j = j.or().like(field,vals[k]);
                            }
                            //return j;
                        });
                    }else {
                        queryWrapper.and(j -> j.like(field,vals[0]));
                    }
                }else {
                    //根据参数值带什么关键字符串判断走什么类型的查询
                    QueryRuleEnum rule = convert2Rule(value);
                    value = replaceValue(rule,value);
                    // add -begin æ·»åŠ åˆ¤æ–­ä¸ºå­—ç¬¦ä¸²æ—¶è®¾ä¸ºå…¨æ¨¡ç³ŠæŸ¥è¯¢
                    //if( (rule==null || QueryRuleEnum.EQ.equals(rule)) && "class java.lang.String".equals(type)) {
                        // å¯ä»¥è®¾ç½®å·¦å³æ¨¡ç³Šæˆ–全模糊,因人而异
                        //rule = QueryRuleEnum.LIKE;
                    //}
                    // add -end æ·»åŠ åˆ¤æ–­ä¸ºå­—ç¬¦ä¸²æ—¶è®¾ä¸ºå…¨æ¨¡ç³ŠæŸ¥è¯¢
                    addEasyQuery(queryWrapper, column, rule, value);
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
            }
        }
        // æŽ’序逻辑 å¤„理
        doMultiFieldsOrder(queryWrapper, parameterMap);
        //高级查询
        doSuperQuery(queryWrapper, parameterMap, fieldColumnMap);
        // update-end--Author:taoyan  Date:20200923 for:issues/1671 å¦‚果字段加注解了@TableField(exist = false),不走DB查询-------
    }
    /**
     * åŒºé—´æŸ¥è¯¢
     * @param queryWrapper query对象
     * @param parameterMap å‚æ•°map
     * @param type         å­—段类型
     * @param filedName    å­—段名称
     * @param columnName   åˆ—名称
     */
    private static void doIntervalQuery(QueryWrapper<?> queryWrapper, Map<String, String[]> parameterMap, String type, String filedName, String columnName) throws ParseException {
        // æ·»åŠ  åˆ¤æ–­æ˜¯å¦æœ‰åŒºé—´å€¼
        String endValue = null,beginValue = null;
        if (parameterMap != null && parameterMap.containsKey(filedName + BEGIN)) {
            beginValue = parameterMap.get(filedName + BEGIN)[0].trim();
            addQueryByRule(queryWrapper, columnName, type, beginValue, QueryRuleEnum.GE);
        }
        if (parameterMap != null && parameterMap.containsKey(filedName + END)) {
            endValue = parameterMap.get(filedName + END)[0].trim();
            addQueryByRule(queryWrapper, columnName, type, endValue, QueryRuleEnum.LE);
        }
        //多值查询
        if (parameterMap != null && parameterMap.containsKey(filedName + MULTI)) {
            endValue = parameterMap.get(filedName + MULTI)[0].trim();
            addQueryByRule(queryWrapper, columnName.replace(MULTI,""), type, endValue, QueryRuleEnum.IN);
        }
    }
    //多字段排序 TODO éœ€è¦ä¿®æ”¹å‰ç«¯
    private static void doMultiFieldsOrder(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap) {
        String column=null,order=null;
        if(parameterMap!=null&& parameterMap.containsKey(ORDER_COLUMN)) {
            column = parameterMap.get(ORDER_COLUMN)[0];
        }
        if(parameterMap!=null&& parameterMap.containsKey(ORDER_TYPE)) {
            order = parameterMap.get(ORDER_TYPE)[0];
        }
        log.info("排序规则>>列:" + column + ",排序方式:" + order);
        if (oConvertUtils.isNotEmpty(column) && oConvertUtils.isNotEmpty(order)) {
            //字典字段,去掉字典翻译文本后缀
            if(column.endsWith(CommonConstant.DICT_TEXT_SUFFIX)) {
                column = column.substring(0, column.lastIndexOf(CommonConstant.DICT_TEXT_SUFFIX));
            }
            //SQL注入check
            SqlInjectionUtil.filterContent(column);
            //update-begin--Author:scott  Date:20210531 for:36 å¤šæ¡ä»¶æŽ’序无效问题修正-------
            // æŽ’序规则修改
            // å°†çŽ°æœ‰æŽ’åº _ å‰ç«¯ä¼ é€’排序条件{....,column: 'column1,column2',order: 'desc'} ç¿»è¯‘成sql "column1,column2 desc"
            // ä¿®æ”¹ä¸º _ å‰ç«¯ä¼ é€’排序条件{....,column: 'column1,column2',order: 'desc'} ç¿»è¯‘成sql "column1 desc,column2 desc"
            if (order.toUpperCase().indexOf(ORDER_TYPE_ASC)>=0) {
                //queryWrapper.orderByAsc(oConvertUtils.camelToUnderline(column));
                String columnStr = oConvertUtils.camelToUnderline(column);
                String[] columnArray = columnStr.split(",");
                queryWrapper.orderByAsc(Arrays.asList(columnArray));
            } else {
                //queryWrapper.orderByDesc(oConvertUtils.camelToUnderline(column));
                String columnStr = oConvertUtils.camelToUnderline(column);
                String[] columnArray = columnStr.split(",");
                queryWrapper.orderByDesc(Arrays.asList(columnArray));
            }
            //update-end--Author:scott  Date:20210531 for:36 å¤šæ¡ä»¶æŽ’序无效问题修正-------
        }
    }
    /**
     * é«˜çº§æŸ¥è¯¢
     * @param queryWrapper æŸ¥è¯¢å¯¹è±¡
     * @param parameterMap å‚数对象
     * @param fieldColumnMap å®žä½“字段和数据库列对应的map
     */
    private static void doSuperQuery(QueryWrapper<?> queryWrapper,Map<String, String[]> parameterMap, Map<String,String> fieldColumnMap) {
        if(parameterMap!=null&& parameterMap.containsKey(SUPER_QUERY_PARAMS)){
            String superQueryParams = parameterMap.get(SUPER_QUERY_PARAMS)[0];
            String superQueryMatchType = parameterMap.get(SUPER_QUERY_MATCH_TYPE) != null ? parameterMap.get(SUPER_QUERY_MATCH_TYPE)[0] : MatchTypeEnum.AND.getValue();
            MatchTypeEnum matchType = MatchTypeEnum.getByValue(superQueryMatchType);
            // update-begin--Author:sunjianlei  Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 -------
            try {
                superQueryParams = URLDecoder.decode(superQueryParams, "UTF-8");
                List<QueryCondition> conditions = JSON.parseArray(superQueryParams, QueryCondition.class);
                if (conditions == null || conditions.size() == 0) {
                    return;
                }
                log.info("---高级查询参数-->" + conditions.toString());
                queryWrapper.and(andWrapper -> {
                    for (int i = 0; i < conditions.size(); i++) {
                        QueryCondition rule = conditions.get(i);
                        if (oConvertUtils.isNotEmpty(rule.getField())
                                && oConvertUtils.isNotEmpty(rule.getRule())
                                && oConvertUtils.isNotEmpty(rule.getVal())) {
                            log.debug("SuperQuery ==> " + rule.toString());
                            //update-begin-author:taoyan date:20201228 for: ã€é«˜çº§æŸ¥è¯¢ã€‘ oracle æ—¥æœŸç­‰äºŽæŸ¥è¯¢æŠ¥é”™
                            Object queryValue = rule.getVal();
                            if("date".equals(rule.getType())){
                                queryValue = DateUtils.str2Date(rule.getVal(),DateUtils.date_sdf.get());
                            }else if("datetime".equals(rule.getType())){
                                queryValue = DateUtils.str2Date(rule.getVal(), DateUtils.datetimeFormat.get());
                            }
                            // update-begin--author:sunjianlei date:20210702 for:【/issues/I3VR8E】高级查询没有类型转换,查询参数都是字符串类型 ----
                            String dbType = rule.getDbType();
                            if (oConvertUtils.isNotEmpty(dbType)) {
                                try {
                                    String valueStr = String.valueOf(queryValue);
                                    switch (dbType.toLowerCase().trim()) {
                                        case "int":
                                            queryValue = Integer.parseInt(valueStr);
                                            break;
                                        case "bigdecimal":
                                            queryValue = new BigDecimal(valueStr);
                                            break;
                                        case "short":
                                            queryValue = Short.parseShort(valueStr);
                                            break;
                                        case "long":
                                            queryValue = Long.parseLong(valueStr);
                                            break;
                                        case "float":
                                            queryValue = Float.parseFloat(valueStr);
                                            break;
                                        case "double":
                                            queryValue = Double.parseDouble(valueStr);
                                            break;
                                        case "boolean":
                                            queryValue = Boolean.parseBoolean(valueStr);
                                            break;
                                    }
                                } catch (Exception e) {
                                    log.error("高级查询值转换失败:", e);
                                }
                            }
                            // update-begin--author:sunjianlei date:20210702 for:【/issues/I3VR8E】高级查询没有类型转换,查询参数都是字符串类型 ----
                            addEasyQuery(andWrapper, fieldColumnMap.get(rule.getField()), QueryRuleEnum.getByValue(rule.getRule()), queryValue);
                            //update-end-author:taoyan date:20201228 for: ã€é«˜çº§æŸ¥è¯¢ã€‘ oracle æ—¥æœŸç­‰äºŽæŸ¥è¯¢æŠ¥é”™
                            // å¦‚果拼接方式是OR,就拼接OR
                            if (MatchTypeEnum.OR == matchType && i < (conditions.size() - 1)) {
                                andWrapper.or();
                            }
                        }
                    }
                    //return andWrapper;
                });
            } catch (UnsupportedEncodingException e) {
                log.error("--高级查询参数转码失败:" + superQueryParams, e);
            } catch (Exception e) {
                log.error("--高级查询拼接失败:" + e.getMessage());
                e.printStackTrace();
            }
            // update-end--Author:sunjianlei  Date:20200325 for:高级查询的条件要用括号括起来,防止和用户的其他条件冲突 -------
        }
        //log.info(" superQuery getCustomSqlSegment: "+ queryWrapper.getCustomSqlSegment());
    }
    /**
     * æ ¹æ®æ‰€ä¼ çš„值 è½¬åŒ–成对应的比较方式
     * æ”¯æŒ><= like in !
     * @param value
     * @return
     */
    public static QueryRuleEnum convert2Rule(Object value) {
        // é¿å…ç©ºæ•°æ®
        // update-begin-author:taoyan date:20210629 for: æŸ¥è¯¢æ¡ä»¶è¾“入空格导致return null后续判断导致抛出null异常
        if (value == null) {
            return QueryRuleEnum.EQ;
        }
        String val = (value + "").toString().trim();
        if (val.length() == 0) {
            return QueryRuleEnum.EQ;
        }
        // update-end-author:taoyan date:20210629 for: æŸ¥è¯¢æ¡ä»¶è¾“入空格导致return null后续判断导致抛出null异常
        QueryRuleEnum rule =null;
        //update-begin--Author:scott  Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284-------------------
        //TODO æ­¤å¤„规则,只适用于 le lt ge gt
        // step 2 .>= =<
        if (rule == null && val.length() >= 3) {
            if(QUERY_SEPARATE_KEYWORD.equals(val.substring(2, 3))){
                rule = QueryRuleEnum.getByValue(val.substring(0, 2));
            }
        }
        // step 1 .> <
        if (rule == null && val.length() >= 2) {
            if(QUERY_SEPARATE_KEYWORD.equals(val.substring(1, 2))){
                rule = QueryRuleEnum.getByValue(val.substring(0, 1));
            }
        }
        //update-end--Author:scott  Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284---------------------
        // step 3 like
        if (rule == null && val.contains(STAR)) {
            if (val.startsWith(STAR) && val.endsWith(STAR)) {
                rule = QueryRuleEnum.LIKE;
            } else if (val.startsWith(STAR)) {
                rule = QueryRuleEnum.LEFT_LIKE;
            } else if(val.endsWith(STAR)){
                rule = QueryRuleEnum.RIGHT_LIKE;
            }
        }
        // step 4 in
        if (rule == null && val.contains(COMMA)) {
            //TODO in æŸ¥è¯¢è¿™é‡Œåº”该有个bug  å¦‚果一字段本身就是多选 æ­¤æ—¶ç”¨in查询 æœªå¿…能查询出来
            rule = QueryRuleEnum.IN;
        }
        // step 5 !=
        if(rule == null && val.startsWith(NOT_EQUAL)){
            rule = QueryRuleEnum.NE;
        }
        // step 6 xx+xx+xx è¿™ç§æƒ…况适用于如果想要用逗号作精确查询 ä½†æ˜¯ç³»ç»Ÿé»˜è®¤é€—号走in æ‰€ä»¥å¯ä»¥ç”¨++替换【此逻辑作废】
        if(rule == null && val.indexOf(QUERY_COMMA_ESCAPE)>0){
            rule = QueryRuleEnum.EQ_WITH_ADD;
        }
        //update-begin--Author:taoyan  Date:20201229 for:initQueryWrapper组装sql查询条件错误 #284---------------------
        //特殊处理:Oracle的表达式to_date('xxx','yyyy-MM-dd')含有逗号,会被识别为in查询,转为等于查询
        if(rule == QueryRuleEnum.IN && val.indexOf("yyyy-MM-dd")>=0 && val.indexOf("to_date")>=0){
            rule = QueryRuleEnum.EQ;
        }
        //update-end--Author:taoyan  Date:20201229 for:initQueryWrapper组装sql查询条件错误 #284---------------------
        return rule != null ? rule : QueryRuleEnum.EQ;
    }
    /**
     * æ›¿æ¢æŽ‰å…³é”®å­—字符
     *
     * @param rule
     * @param value
     * @return
     */
    private static Object replaceValue(QueryRuleEnum rule, Object value) {
        if (rule == null) {
            return null;
        }
        if (! (value instanceof String)){
            return value;
        }
        String val = (value + "").toString().trim();
        if (rule == QueryRuleEnum.LIKE) {
            value = val.substring(1, val.length() - 1);
            //mysql æ¨¡ç³ŠæŸ¥è¯¢ä¹‹ç‰¹æ®Šå­—符下划线 ï¼ˆ_、\)
            value = specialStrConvert(value.toString());
        } else if (rule == QueryRuleEnum.LEFT_LIKE || rule == QueryRuleEnum.NE) {
            value = val.substring(1);
            //mysql æ¨¡ç³ŠæŸ¥è¯¢ä¹‹ç‰¹æ®Šå­—符下划线 ï¼ˆ_、\)
            value = specialStrConvert(value.toString());
        } else if (rule == QueryRuleEnum.RIGHT_LIKE) {
            value = val.substring(0, val.length() - 1);
            //mysql æ¨¡ç³ŠæŸ¥è¯¢ä¹‹ç‰¹æ®Šå­—符下划线 ï¼ˆ_、\)
            value = specialStrConvert(value.toString());
        } else if (rule == QueryRuleEnum.IN) {
            value = val.split(",");
        } else if (rule == QueryRuleEnum.EQ_WITH_ADD) {
            value = val.replaceAll("\\+\\+", COMMA);
        }else {
            //update-begin--Author:scott  Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284-------------------
            if(val.startsWith(rule.getValue())){
                //TODO æ­¤å¤„逻辑应该注释掉-> å¦‚果查询内容中带有查询匹配规则符号,就会被截取的(比如:>=您好)
                value = val.replaceFirst(rule.getValue(),"");
            }else if(val.startsWith(rule.getCondition()+QUERY_SEPARATE_KEYWORD)){
                value = val.replaceFirst(rule.getCondition()+QUERY_SEPARATE_KEYWORD,"").trim();
            }
            //update-end--Author:scott  Date:20190724 for:initQueryWrapper组装sql查询条件错误 #284-------------------
        }
        return value;
    }
    private static void addQueryByRule(QueryWrapper<?> queryWrapper,String name,String type,String value,QueryRuleEnum rule) throws ParseException {
        if(oConvertUtils.isNotEmpty(value)) {
            Object temp;
            // é’ˆå¯¹æ•°å­—类型字段,多值查询
            if(value.indexOf(COMMA)!=-1){
                temp = value;
                addEasyQuery(queryWrapper, name, rule, temp);
                return;
            }
            switch (type) {
            case "class java.lang.Integer":
                temp =  Integer.parseInt(value);
                break;
            case "class java.math.BigDecimal":
                temp =  new BigDecimal(value);
                break;
            case "class java.lang.Short":
                temp =  Short.parseShort(value);
                break;
            case "class java.lang.Long":
                temp =  Long.parseLong(value);
                break;
            case "class java.lang.Float":
                temp =   Float.parseFloat(value);
                break;
            case "class java.lang.Double":
                temp =  Double.parseDouble(value);
                break;
            case "class java.util.Date":
                temp = getDateQueryByRule(value, rule);
                break;
            default:
                temp = value;
                break;
            }
            addEasyQuery(queryWrapper, name, rule, temp);
        }
    }
    /**
     * èŽ·å–æ—¥æœŸç±»åž‹çš„å€¼
     * @param value
     * @param rule
     * @return
     * @throws ParseException
     */
    private static Date getDateQueryByRule(String value,QueryRuleEnum rule) throws ParseException {
        Date date = null;
        if(value.length()==10) {
            if(rule==QueryRuleEnum.GE) {
                //比较大于
                date = getTime().parse(value + " 00:00:00");
            }else if(rule==QueryRuleEnum.LE) {
                //比较小于
                date = getTime().parse(value + " 23:59:59");
            }
            //TODO æ—¥æœŸç±»åž‹æ¯”较特殊 å¯èƒ½oracle下不一定好使
        }
        if(date==null) {
            date = getTime().parse(value);
        }
        return date;
    }
    /**
      * æ ¹æ®è§„则走不同的查询
     * @param queryWrapper QueryWrapper
     * @param name         å­—段名字
     * @param rule         æŸ¥è¯¢è§„则
     * @param value        æŸ¥è¯¢æ¡ä»¶å€¼
     */
    private static void addEasyQuery(QueryWrapper<?> queryWrapper, String name, QueryRuleEnum rule, Object value) {
        if (value == null || rule == null || oConvertUtils.isEmpty(value)) {
            return;
        }
        name = oConvertUtils.camelToUnderline(name);
        log.info("--查询规则-->"+name+" "+rule.getValue()+" "+value);
        switch (rule) {
        case GT:
            queryWrapper.gt(name, value);
            break;
        case GE:
            queryWrapper.ge(name, value);
            break;
        case LT:
            queryWrapper.lt(name, value);
            break;
        case LE:
            queryWrapper.le(name, value);
            break;
        case EQ:
        case EQ_WITH_ADD:
            queryWrapper.eq(name, value);
            break;
        case NE:
            queryWrapper.ne(name, value);
            break;
        case IN:
            if(value instanceof String) {
                queryWrapper.in(name, (Object[])value.toString().split(","));
            }else if(value instanceof String[]) {
                queryWrapper.in(name, (Object[]) value);
            }
            //update-begin-author:taoyan date:20200909 for:【bug】in ç±»åž‹å¤šå€¼æŸ¥è¯¢ ä¸é€‚配postgresql #1671
            else if(value.getClass().isArray()) {
                queryWrapper.in(name, (Object[])value);
            }else {
                queryWrapper.in(name, value);
            }
            //update-end-author:taoyan date:20200909 for:【bug】in ç±»åž‹å¤šå€¼æŸ¥è¯¢ ä¸é€‚配postgresql #1671
            break;
        case LIKE:
            queryWrapper.like(name, value);
            break;
        case LEFT_LIKE:
            queryWrapper.likeLeft(name, value);
            break;
        case RIGHT_LIKE:
            queryWrapper.likeRight(name, value);
            break;
        default:
            log.info("--查询规则未匹配到---");
            break;
        }
    }
    /**
     *
     * @param name
     * @return
     */
    private static boolean judgedIsUselessField(String name) {
        return "class".equals(name) || "ids".equals(name)
                || "page".equals(name) || "rows".equals(name)
                || "sort".equals(name) || "order".equals(name);
    }
    /**
     * èŽ·å–è¯·æ±‚å¯¹åº”çš„æ•°æ®æƒé™è§„åˆ™ TODO ç›¸åŒåˆ—权限多个 æœ‰é—®é¢˜
     * @return
     */
    public static Map<String, SysPermissionDataRuleModel> getRuleMap() {
        Map<String, SysPermissionDataRuleModel> ruleMap = new HashMap<String, SysPermissionDataRuleModel>();
        List<SysPermissionDataRuleModel> list =JeecgDataAutorUtils.loadDataSearchConditon();
        if(list != null&&list.size()>0){
            if(list.get(0)==null){
                return ruleMap;
            }
            for (SysPermissionDataRuleModel rule : list) {
                String column = rule.getRuleColumn();
                if(QueryRuleEnum.SQL_RULES.getValue().equals(rule.getRuleConditions())) {
                    column = SQL_RULES_COLUMN+rule.getId();
                }
                ruleMap.put(column, rule);
            }
        }
        return ruleMap;
    }
    private static void addRuleToQueryWrapper(SysPermissionDataRuleModel dataRule, String name, Class propertyType, QueryWrapper<?> queryWrapper) {
        QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
        if(rule.equals(QueryRuleEnum.IN) && ! propertyType.equals(String.class)) {
            String[] values = dataRule.getRuleValue().split(",");
            Object[] objs = new Object[values.length];
            for (int i = 0; i < values.length; i++) {
                objs[i] = NumberUtils.parseNumber(values[i], propertyType);
            }
            addEasyQuery(queryWrapper, name, rule, objs);
        }else {
            if (propertyType.equals(String.class)) {
                addEasyQuery(queryWrapper, name, rule, converRuleValue(dataRule.getRuleValue()));
            }else if (propertyType.equals(Date.class)) {
                String dateStr =converRuleValue(dataRule.getRuleValue());
                if(dateStr.length()==10){
                    addEasyQuery(queryWrapper, name, rule, DateUtils.str2Date(dateStr,DateUtils.date_sdf.get()));
                }else{
                    addEasyQuery(queryWrapper, name, rule, DateUtils.str2Date(dateStr,DateUtils.datetimeFormat.get()));
                }
            }else {
                addEasyQuery(queryWrapper, name, rule, NumberUtils.parseNumber(dataRule.getRuleValue(), propertyType));
            }
        }
    }
    public static String converRuleValue(String ruleValue) {
        String value = JwtUtil.getUserSystemData(ruleValue,null);
        return value!= null ? value : ruleValue;
    }
    /**
    * @author: scott
    * @Description: åŽ»æŽ‰å€¼å‰åŽå•å¼•å·
    * @date: 2020/3/19 21:26
    * @param ruleValue:
    * @Return: java.lang.String
    */
    public static String trimSingleQuote(String ruleValue) {
        if (oConvertUtils.isEmpty(ruleValue)) {
            return "";
        }
        if (ruleValue.startsWith(QueryGenerator.SQL_SQ)) {
            ruleValue = ruleValue.substring(1);
        }
        if (ruleValue.endsWith(QueryGenerator.SQL_SQ)) {
            ruleValue = ruleValue.substring(0, ruleValue.length() - 1);
        }
        return ruleValue;
    }
    public static String getSqlRuleValue(String sqlRule){
        try {
            Set<String> varParams = getSqlRuleParams(sqlRule);
            for(String var:varParams){
                String tempValue = converRuleValue(var);
                sqlRule = sqlRule.replace("#{"+var+"}",tempValue);
            }
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return sqlRule;
    }
    /**
     * èŽ·å–sql中的#{key} è¿™ä¸ªkey组成的set
     */
    public static Set<String> getSqlRuleParams(String sql) {
        if(oConvertUtils.isEmpty(sql)){
            return null;
        }
        Set<String> varParams = new HashSet<String>();
        String regex = "\\#\\{\\w+\\}";
        Pattern p = Pattern.compile(regex);
        Matcher m = p.matcher(sql);
        while(m.find()){
            String var = m.group();
            varParams.add(var.substring(var.indexOf("{")+1,var.indexOf("}")));
        }
        return varParams;
    }
    /**
     * èŽ·å–æŸ¥è¯¢æ¡ä»¶
     * @param field
     * @param alias
     * @param value
     * @param isString
     * @return
     */
    public static String getSingleQueryConditionSql(String field,String alias,Object value,boolean isString) {
        return getSingleQueryConditionSql(field, alias, value, isString,null);
    }
    /**
     * æŠ¥è¡¨èŽ·å–æŸ¥è¯¢æ¡ä»¶ æ”¯æŒå¤šæ•°æ®æº
     * @param field
     * @param alias
     * @param value
     * @param isString
     * @param dataBaseType
     * @return
     */
    public static String getSingleQueryConditionSql(String field,String alias,Object value,boolean isString, String dataBaseType) {
        if (value == null) {
            return "";
        }
        field =  alias+oConvertUtils.camelToUnderline(field);
        QueryRuleEnum rule = QueryGenerator.convert2Rule(value);
        return getSingleSqlByRule(rule, field, value, isString, dataBaseType);
    }
    /**
     * èŽ·å–å•ä¸ªæŸ¥è¯¢æ¡ä»¶çš„å€¼
     * @param rule
     * @param field
     * @param value
     * @param isString
     * @param dataBaseType
     * @return
     */
    private static String getSingleSqlByRule(QueryRuleEnum rule,String field,Object value,boolean isString, String dataBaseType) {
        String res = "";
        switch (rule) {
        case GT:
            res =field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case GE:
            res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case LT:
            res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case LE:
            res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case EQ:
            res = field+rule.getValue()+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case EQ_WITH_ADD:
            res = field+" = "+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case NE:
            res = field+" <> "+getFieldConditionValue(value, isString, dataBaseType);
            break;
        case IN:
            res = field + " in "+getInConditionValue(value, isString);
            break;
        case LIKE:
            res = field + " like "+getLikeConditionValue(value);
            break;
        case LEFT_LIKE:
            res = field + " like "+getLikeConditionValue(value);
            break;
        case RIGHT_LIKE:
            res = field + " like "+getLikeConditionValue(value);
            break;
        default:
            res = field+" = "+getFieldConditionValue(value, isString, dataBaseType);
            break;
        }
        return res;
    }
    /**
     * èŽ·å–å•ä¸ªæŸ¥è¯¢æ¡ä»¶çš„å€¼
     * @param rule
     * @param field
     * @param value
     * @param isString
     * @return
     */
    private static String getSingleSqlByRule(QueryRuleEnum rule,String field,Object value,boolean isString) {
        return getSingleSqlByRule(rule, field, value, isString, null);
    }
    /**
     * èŽ·å–æŸ¥è¯¢æ¡ä»¶çš„å€¼
     * @param value
     * @param isString
     * @param dataBaseType
     * @return
     */
    private static String getFieldConditionValue(Object value,boolean isString, String dataBaseType) {
        String str = value.toString().trim();
        if(str.startsWith("!")) {
            str = str.substring(1);
        }else if(str.startsWith(">=")) {
            str = str.substring(2);
        }else if(str.startsWith("<=")) {
            str = str.substring(2);
        }else if(str.startsWith(">")) {
            str = str.substring(1);
        }else if(str.startsWith("<")) {
            str = str.substring(1);
        }else if(str.indexOf(QUERY_COMMA_ESCAPE)>0) {
            str = str.replaceAll("\\+\\+", COMMA);
        }
        if(dataBaseType==null){
            dataBaseType = getDbType();
        }
        if(isString) {
            if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(dataBaseType)){
                return " N'"+str+"' ";
            }else{
                return " '"+str+"' ";
            }
        }else {
            // å¦‚果不是字符串 æœ‰ä¸€ç§ç‰¹æ®Šæƒ…况 popup调用都走这个逻辑 å‚数传递的可能是“‘admin’”这种格式的
            if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(dataBaseType) && str.endsWith("'") && str.startsWith("'")){
                return " N"+str;
            }
            return value.toString();
        }
    }
    private static String getInConditionValue(Object value,boolean isString) {
        //update-begin-author:taoyan date:20210628 for: æŸ¥è¯¢æ¡ä»¶å¦‚果输入,导致sql报错
        String[] temp = value.toString().split(",");
        if(temp.length==0){
            return "('')";
        }
        if(isString) {
            List<String> res = new ArrayList<>();
            for (String string : temp) {
                if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
                    res.add("N'"+string+"'");
                }else{
                    res.add("'"+string+"'");
                }
            }
            return "("+String.join("," ,res)+")";
        }else {
            return "("+value.toString()+")";
        }
        //update-end-author:taoyan date:20210628 for: æŸ¥è¯¢æ¡ä»¶å¦‚果输入,导致sql报错
    }
    private static String getLikeConditionValue(Object value) {
        String str = value.toString().trim();
        if(str.startsWith("*") && str.endsWith("*")) {
            if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
                return "N'%"+str.substring(1,str.length()-1)+"%'";
            }else{
                return "'%"+str.substring(1,str.length()-1)+"%'";
            }
        }else if(str.startsWith("*")) {
            if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
                return "N'%"+str.substring(1)+"'";
            }else{
                return "'%"+str.substring(1)+"'";
            }
        }else if(str.endsWith("*")) {
            if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
                return "N'"+str.substring(0,str.length()-1)+"%'";
            }else{
                return "'"+str.substring(0,str.length()-1)+"%'";
            }
        }else {
            if(str.indexOf("%")>=0) {
                if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
                    if(str.startsWith("'") && str.endsWith("'")){
                        return "N"+str;
                    }else{
                        return "N"+"'"+str+"'";
                    }
                }else{
                    if(str.startsWith("'") && str.endsWith("'")){
                        return str;
                    }else{
                        return "'"+str+"'";
                    }
                }
            }else {
                if(DataBaseConstant.DB_TYPE_SQLSERVER.equals(getDbType())){
                    return "N'%"+str+"%'";
                }else{
                    return "'%"+str+"%'";
                }
            }
        }
    }
    /**
     *   æ ¹æ®æƒé™ç›¸å…³é…ç½®ç”Ÿæˆç›¸å…³çš„SQL è¯­å¥
     * @param clazz
     * @return
     */
    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static String installAuthJdbc(Class<?> clazz) {
        StringBuffer sb = new StringBuffer();
        //权限查询
        Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
        PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz);
        String sql_and = " and ";
        for (String c : ruleMap.keySet()) {
            if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
                sb.append(sql_and+getSqlRuleValue(ruleMap.get(c).getRuleValue()));
            }
        }
        String name, column;
        for (int i = 0; i < origDescriptors.length; i++) {
            name = origDescriptors[i].getName();
            if (judgedIsUselessField(name)) {
                continue;
            }
            if(ruleMap.containsKey(name)) {
                column = getTableFieldName(clazz, name);
                if(column==null){
                    continue;
                }
                SysPermissionDataRuleModel dataRule = ruleMap.get(name);
                QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
                Class propType = origDescriptors[i].getPropertyType();
                boolean isString = propType.equals(String.class);
                Object value;
                if(isString) {
                    value = converRuleValue(dataRule.getRuleValue());
                }else {
                    value = NumberUtils.parseNumber(dataRule.getRuleValue(),propType);
                }
                String filedSql = getSingleSqlByRule(rule, oConvertUtils.camelToUnderline(column), value,isString);
                sb.append(sql_and+filedSql);
            }
        }
        log.info("query auth sql is:"+sb.toString());
        return sb.toString();
    }
    /**
      * æ ¹æ®æƒé™ç›¸å…³é…ç½® ç»„装mp需要的权限
     * @param queryWrapper
     * @param clazz
     * @return
     */
    public static void installAuthMplus(QueryWrapper<?> queryWrapper,Class<?> clazz) {
        //权限查询
        Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
        PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(clazz);
        for (String c : ruleMap.keySet()) {
            if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
                queryWrapper.and(i ->i.apply(getSqlRuleValue(ruleMap.get(c).getRuleValue())));
            }
        }
        String name, column;
        for (int i = 0; i < origDescriptors.length; i++) {
            name = origDescriptors[i].getName();
            if (judgedIsUselessField(name)) {
                continue;
            }
            column = getTableFieldName(clazz, name);
            if(column==null){
                continue;
            }
            if(ruleMap.containsKey(name)) {
                addRuleToQueryWrapper(ruleMap.get(name), column, origDescriptors[i].getPropertyType(), queryWrapper);
            }
        }
    }
    /**
     * è½¬æ¢sql中的系统变量
     * @param sql
     * @return
     */
    public static String convertSystemVariables(String sql){
        return getSqlRuleValue(sql);
    }
    /**
     * èŽ·å–æ‰€æœ‰é…ç½®çš„æƒé™ è¿”回sql字符串 ä¸å—字段限制 é…ç½®ä»€ä¹ˆå°±æ‹¿åˆ°ä»€ä¹ˆ
     * @return
     */
    public static String getAllConfigAuth() {
        StringBuffer sb = new StringBuffer();
        //权限查询
        Map<String,SysPermissionDataRuleModel> ruleMap = getRuleMap();
        String sql_and = " and ";
        for (String c : ruleMap.keySet()) {
            SysPermissionDataRuleModel dataRule = ruleMap.get(c);
            String ruleValue = dataRule.getRuleValue();
            if(oConvertUtils.isEmpty(ruleValue)){
                continue;
            }
            if(oConvertUtils.isNotEmpty(c) && c.startsWith(SQL_RULES_COLUMN)){
                sb.append(sql_and+getSqlRuleValue(ruleValue));
            }else{
                boolean isString  = false;
                ruleValue = ruleValue.trim();
                if(ruleValue.startsWith("'") && ruleValue.endsWith("'")){
                    isString = true;
                    ruleValue = ruleValue.substring(1,ruleValue.length()-1);
                }
                QueryRuleEnum rule = QueryRuleEnum.getByValue(dataRule.getRuleConditions());
                String value = converRuleValue(ruleValue);
                String filedSql = getSingleSqlByRule(rule, c, value,isString);
                sb.append(sql_and+filedSql);
            }
        }
        log.info("query auth sql is = "+sb.toString());
        return sb.toString();
    }
    /**
     * èŽ·å–ç³»ç»Ÿæ•°æ®åº“ç±»åž‹
     */
    private static String getDbType(){
        return CommonUtils.getDatabaseType();
    }
    /**
     * èŽ·å–class的 åŒ…括父类的
     * @param clazz
     * @return
     */
    private static List<Field> getClassFields(Class<?> clazz) {
        List<Field> list = new ArrayList<Field>();
        Field[] fields;
        do{
            fields = clazz.getDeclaredFields();
            for(int i = 0;i<fields.length;i++){
                list.add(fields[i]);
            }
            clazz = clazz.getSuperclass();
        }while(clazz!= Object.class&&clazz!=null);
        return list;
    }
    /**
     * èŽ·å–è¡¨å­—æ®µå
     * @param clazz
     * @param name
     * @return
     */
    private static String getTableFieldName(Class<?> clazz, String name) {
        try {
            //如果字段加注解了@TableField(exist = false),不走DB查询
            Field field = null;
            try {
                field = clazz.getDeclaredField(name);
            } catch (NoSuchFieldException e) {
                //e.printStackTrace();
            }
            //如果为空,则去父类查找字段
            if (field == null) {
                List<Field> allFields = getClassFields(clazz);
                List<Field> searchFields = allFields.stream().filter(a -> a.getName().equals(name)).collect(Collectors.toList());
                if(searchFields!=null && searchFields.size()>0){
                    field = searchFields.get(0);
                }
            }
            if (field != null) {
                TableField tableField = field.getAnnotation(TableField.class);
                if (tableField != null){
                    if(tableField.exist() == false){
                        //如果设置了TableField false è¿™ä¸ªå­—段不需要处理
                        return null;
                    }else{
                        String column = tableField.value();
                        //如果设置了TableField value è¿™ä¸ªå­—段是实体字段
                        if(!"".equals(column)){
                            return column;
                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return name;
    }
    /**
     * mysql æ¨¡ç³ŠæŸ¥è¯¢ä¹‹ç‰¹æ®Šå­—符下划线 ï¼ˆ_、\)
     *
     * @param value:
     * @Return: java.lang.String
     */
    private static String specialStrConvert(String value) {
        if (DataBaseConstant.DB_TYPE_MYSQL.equals(getDbType()) || DataBaseConstant.DB_TYPE_MARIADB.equals(getDbType())) {
            String[] special_str = QueryGenerator.LIKE_MYSQL_SPECIAL_STRS.split(",");
            for (String str : special_str) {
                if (value.indexOf(str) !=-1) {
                    value = value.replace(str, "\\" + str);
                }
            }
        }
        return value;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/query/QueryRuleEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,73 @@
package org.jeecg.common.system.query;
import org.jeecg.common.util.oConvertUtils;
/**
 * Query è§„则 å¸¸é‡
 * @Author Scott
 * @Date 2019å¹´02月14日
 */
public enum QueryRuleEnum {
    GT(">","gt","大于"),
    GE(">=","ge","大于等于"),
    LT("<","lt","小于"),
    LE("<=","le","小于等于"),
    EQ("=","eq","等于"),
    NE("!=","ne","不等于"),
    IN("IN","in","包含"),
    LIKE("LIKE","like","全模糊"),
    LEFT_LIKE("LEFT_LIKE","left_like","左模糊"),
    RIGHT_LIKE("RIGHT_LIKE","right_like","右模糊"),
    EQ_WITH_ADD("EQWITHADD","eq_with_add","带加号等于"),
    LIKE_WITH_AND("LIKEWITHAND","like_with_and","多词模糊匹配————暂时未用上"),
    SQL_RULES("USE_SQL_RULES","ext","自定义SQL片段");
    private String value;
    private String condition;
    private String msg;
    QueryRuleEnum(String value, String condition, String msg){
        this.value = value;
        this.condition = condition;
        this.msg = msg;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public String getCondition() {
        return condition;
    }
    public void setCondition(String condition) {
        this.condition = condition;
    }
    public static QueryRuleEnum getByValue(String value){
        if(oConvertUtils.isEmpty(value)) {
            return null;
        }
        for(QueryRuleEnum val :values()){
            if (val.getValue().equals(value) || val.getCondition().equals(value)){
                return val;
            }
        }
        return  null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JeecgDataAutorUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package org.jeecg.common.system.util;
import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
/**
 * @ClassName: JeecgDataAutorUtils
 * @Description: æ•°æ®æƒé™æŸ¥è¯¢è§„则容器工具类
 * @Author: å¼ ä»£æµ©
 * @Date: 2012-12-15 ä¸‹åˆ11:27:39
 *
 */
public class JeecgDataAutorUtils {
    public static final String MENU_DATA_AUTHOR_RULES = "MENU_DATA_AUTHOR_RULES";
    public static final String MENU_DATA_AUTHOR_RULE_SQL = "MENU_DATA_AUTHOR_RULE_SQL";
    public static final String SYS_USER_INFO = "SYS_USER_INFO";
    /**
     * å¾€é“¾æŽ¥è¯·æ±‚里面,传入数据查询条件
     *
     * @param request
     * @param dataRules
     */
    public static synchronized void installDataSearchConditon(HttpServletRequest request, List<SysPermissionDataRuleModel> dataRules) {
        @SuppressWarnings("unchecked")
        List<SysPermissionDataRuleModel> list = (List<SysPermissionDataRuleModel>)loadDataSearchConditon();// 1.先从request获取MENU_DATA_AUTHOR_RULES,如果存则获取到LIST
        if (list==null) {
            // 2.如果不存在,则new一个list
            list = new ArrayList<SysPermissionDataRuleModel>();
        }
        for (SysPermissionDataRuleModel tsDataRule : dataRules) {
            list.add(tsDataRule);
        }
        request.setAttribute(MENU_DATA_AUTHOR_RULES, list); // 3.往list里面增量存指
    }
    /**
     * èŽ·å–è¯·æ±‚å¯¹åº”çš„æ•°æ®æƒé™è§„åˆ™
     *
     * @return
     */
    @SuppressWarnings("unchecked")
    public static synchronized List<SysPermissionDataRuleModel> loadDataSearchConditon() {
        return (List<SysPermissionDataRuleModel>) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULES);
    }
    /**
     * èŽ·å–è¯·æ±‚å¯¹åº”çš„æ•°æ®æƒé™SQL
     *
     * @return
     */
    public static synchronized String loadDataSearchConditonSQLString() {
        return (String) SpringContextUtils.getHttpServletRequest().getAttribute(MENU_DATA_AUTHOR_RULE_SQL);
    }
    /**
     * å¾€é“¾æŽ¥è¯·æ±‚里面,传入数据查询条件
     *
     * @param request
     * @param sql
     */
    public static synchronized void installDataSearchConditon(HttpServletRequest request, String sql) {
        String ruleSql = (String)loadDataSearchConditonSQLString();
        if (!StringUtils.hasText(ruleSql)) {
            request.setAttribute(MENU_DATA_AUTHOR_RULE_SQL,sql);
        }
    }
    /**
     * å°†ç”¨æˆ·ä¿¡æ¯å­˜åˆ°request
     * @param request
     * @param userinfo
     */
    public static synchronized void installUserInfo(HttpServletRequest request, SysUserCacheInfo userinfo) {
        request.setAttribute(SYS_USER_INFO, userinfo);
    }
    /**
     * å°†ç”¨æˆ·ä¿¡æ¯å­˜åˆ°request
     * @param userinfo
     */
    public static synchronized void installUserInfo(SysUserCacheInfo userinfo) {
        SpringContextUtils.getHttpServletRequest().setAttribute(SYS_USER_INFO, userinfo);
    }
    /**
     * ä»Žrequest获取用户信息
     * @return
     */
    public static synchronized SysUserCacheInfo loadUserInfo() {
        return (SysUserCacheInfo) SpringContextUtils.getHttpServletRequest().getAttribute(SYS_USER_INFO);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/util/JwtUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,245 @@
package org.jeecg.common.system.util;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Joiner;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Date;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
/**
 * @Author Scott
 * @Date 2018-07-12 14:23
 * @Desc JWT工具类
 **/
public class JwtUtil {
    // Token过期时间30分钟(用户登录过期时间是此时间的两倍,以token在reids缓存时间为准)
    public static final long EXPIRE_TIME = 30 * 12  * 60 * 1000;
    /**
     *
     * @param response
     * @param code
     * @param errorMsg
     */
    public static void responseError(ServletResponse response, Integer code, String errorMsg) {
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        Result jsonResult = new Result(code, errorMsg);
        OutputStream os = null;
        try {
            os = httpServletResponse.getOutputStream();
            httpServletResponse.setCharacterEncoding("UTF-8");
            httpServletResponse.setStatus(401);
            os.write(new ObjectMapper().writeValueAsString(jsonResult).getBytes("UTF-8"));
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /**
     * æ ¡éªŒtoken是否正确
     *
     * @param token  å¯†é’¥
     * @param secret ç”¨æˆ·çš„密码
     * @return æ˜¯å¦æ­£ç¡®
     */
    public static boolean verify(String token, String username, String secret) {
        try {
            // æ ¹æ®å¯†ç ç”ŸæˆJWT效验器
            Algorithm algorithm = Algorithm.HMAC256(secret);
            JWTVerifier verifier = JWT.require(algorithm).withClaim("username", username).build();
            // æ•ˆéªŒTOKEN
            DecodedJWT jwt = verifier.verify(token);
            return true;
        } catch (Exception exception) {
            return false;
        }
    }
    /**
     * èŽ·å¾—token中的信息无需secret解密也能获得
     *
     * @return token中包含的用户名
     */
    public static String getUsername(String token) {
        try {
            DecodedJWT jwt = JWT.decode(token);
            return jwt.getClaim("username").asString();
        } catch (JWTDecodeException e) {
            return null;
        }
    }
    /**
     * ç”Ÿæˆç­¾å,5min后过期
     *
     * @param username ç”¨æˆ·å
     * @param secret   ç”¨æˆ·çš„密码
     * @return åŠ å¯†çš„token
     */
    public static String sign(String username, String secret) {
        Date date = new Date(System.currentTimeMillis() + EXPIRE_TIME);
        Algorithm algorithm = Algorithm.HMAC256(secret);
        // é™„带username信息
        return JWT.create().withClaim("username", username).withExpiresAt(date).sign(algorithm);
    }
    /**
     * æ ¹æ®request中的token获取用户账号
     *
     * @param request
     * @return
     * @throws JeecgBootException
     */
    public static String getUserNameByToken(HttpServletRequest request) throws JeecgBootException {
        String accessToken = request.getHeader("X-Access-Token");
        String username = getUsername(accessToken);
        if (oConvertUtils.isEmpty(username)) {
            throw new JeecgBootException("未获取到用户");
        }
        return username;
    }
    /**
      *  ä»Žsession中获取变量
     * @param key
     * @return
     */
    public static String getSessionData(String key) {
        //${myVar}%
        //得到${} åŽé¢çš„值
        String moshi = "";
        if(key.indexOf("}")!=-1){
             moshi = key.substring(key.indexOf("}")+1);
        }
        String returnValue = null;
        if (key.contains("#{")) {
            key = key.substring(2,key.indexOf("}"));
        }
        if (oConvertUtils.isNotEmpty(key)) {
            HttpSession session = SpringContextUtils.getHttpServletRequest().getSession();
            returnValue = (String) session.getAttribute(key);
        }
        //结果加上${} åŽé¢çš„值
        if(returnValue!=null){returnValue = returnValue + moshi;}
        return returnValue;
    }
    /**
      * ä»Žå½“前用户中获取变量
     * @param key
     * @param user
     * @return
     */
    //TODO æ€¥å¾…改造 sckjkdsjsfjdk
    public static String getUserSystemData(String key,SysUserCacheInfo user) {
        if(user==null) {
            user = JeecgDataAutorUtils.loadUserInfo();
        }
        //#{sys_user_code}%
        // èŽ·å–ç™»å½•ç”¨æˆ·ä¿¡æ¯
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        String moshi = "";
        if(key.indexOf("}")!=-1){
             moshi = key.substring(key.indexOf("}")+1);
        }
        String returnValue = null;
        //针对特殊标示处理#{sysOrgCode},判断替换
        if (key.contains("#{")) {
            key = key.substring(2,key.indexOf("}"));
        } else {
            key = key;
        }
        //替换为系统登录用户帐号
        if (key.equals(DataBaseConstant.SYS_USER_CODE)|| key.toLowerCase().equals(DataBaseConstant.SYS_USER_CODE_TABLE)) {
            if(user==null) {
                returnValue = sysUser.getUsername();
            }else {
                returnValue = user.getSysUserCode();
            }
        }
        //替换为系统登录用户真实名字
        else if (key.equals(DataBaseConstant.SYS_USER_NAME)|| key.toLowerCase().equals(DataBaseConstant.SYS_USER_NAME_TABLE)) {
            if(user==null) {
                returnValue = sysUser.getRealname();
            }else {
                returnValue = user.getSysUserName();
            }
        }
        //替换为系统用户登录所使用的机构编码
        else if (key.equals(DataBaseConstant.SYS_ORG_CODE)|| key.toLowerCase().equals(DataBaseConstant.SYS_ORG_CODE_TABLE)) {
            if(user==null) {
                returnValue = sysUser.getOrgCode();
            }else {
                returnValue = user.getSysOrgCode();
            }
        }
        //替换为系统用户所拥有的所有机构编码
        else if (key.equals(DataBaseConstant.SYS_MULTI_ORG_CODE)|| key.toLowerCase().equals(DataBaseConstant.SYS_MULTI_ORG_CODE_TABLE)) {
            if(user==null){
                //TODO æš‚时使用用户登录部门,存在逻辑缺陷,不是用户所拥有的部门
                returnValue = sysUser.getOrgCode();
            }else{
                if(user.isOneDepart()) {
                    returnValue = user.getSysMultiOrgCode().get(0);
                }else {
                    returnValue = Joiner.on(",").join(user.getSysMultiOrgCode());
                }
            }
        }
        //替换为当前系统时间(年月日)
        else if (key.equals(DataBaseConstant.SYS_DATE)|| key.toLowerCase().equals(DataBaseConstant.SYS_DATE_TABLE)) {
            returnValue = DateUtils.formatDate();
        }
        //替换为当前系统时间(年月日时分秒)
        else if (key.equals(DataBaseConstant.SYS_TIME)|| key.toLowerCase().equals(DataBaseConstant.SYS_TIME_TABLE)) {
            returnValue = DateUtils.now();
        }
        //流程状态默认值(默认未发起)
        else if (key.equals(DataBaseConstant.BPM_STATUS)|| key.toLowerCase().equals(DataBaseConstant.BPM_STATUS_TABLE)) {
            returnValue = "1";
        }
        //update-begin-author:taoyan date:20210330 for:多租户ID作为系统变量
        else if (key.equals(DataBaseConstant.TENANT_ID) || key.toLowerCase().equals(DataBaseConstant.TENANT_ID_TABLE)){
            returnValue = sysUser.getRelTenantIds();
            if(oConvertUtils.isEmpty(returnValue) || (returnValue!=null && returnValue.indexOf(",")>0)){
                returnValue = SpringContextUtils.getHttpServletRequest().getHeader(CommonConstant.TENANT_ID);
            }
        }
        //update-end-author:taoyan date:20210330 for:多租户ID作为系统变量
        if(returnValue!=null){returnValue = returnValue + moshi;}
        return returnValue;
    }
//    public static void main(String[] args) {
//         String token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NjUzMzY1MTMsInVzZXJuYW1lIjoiYWRtaW4ifQ.xjhud_tWCNYBOg_aRlMgOdlZoWFFKB_givNElHNw3X0";
//         System.out.println(JwtUtil.getUsername(token));
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/ComboModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package org.jeecg.common.system.vo;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class ComboModel implements Serializable {
    private String id;
    private String title;
    /**文档管理 è¡¨å•table默认选中*/
    private boolean checked;
    /**文档管理 è¡¨å•table ç”¨æˆ·è´¦å·*/
    private String username;
    /**文档管理 è¡¨å•table ç”¨æˆ·é‚®ç®±*/
    private String email;
    /**文档管理 è¡¨å•table è§’色编码*/
    private String roleCode;
    public ComboModel(){
    };
    public ComboModel(String id,String title,boolean checked,String username){
        this.id = id;
        this.title = title;
        this.checked = false;
        this.username = username;
    };
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package org.jeecg.common.system.vo;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class DictModel implements Serializable{
    private static final long serialVersionUID = 1L;
    public DictModel() {
    }
    public DictModel(String value, String text) {
        this.value = value;
        this.text = text;
    }
    /**
     * å­—å…¸value
     */
    private String value;
    /**
     * å­—典文本
     */
    private String text;
    /**
     * ç‰¹æ®Šç”¨é€”: JgEditableTable
     * @return
     */
    public String getTitle() {
        return this.text;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictModelMany.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.common.system.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * æŸ¥è¯¢å¤šä¸ªå­—典时用到
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class DictModelMany extends DictModel {
    /**
     * å­—å…¸code,根据多个字段code查询时才用到,用于区分不同的字典选项
     */
    private String dictCode;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DictQuery.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.common.system.vo;
import lombok.Data;
/**
 * å­—典查询参数实体
 */
@Data
public class DictQuery {
    /**
     * è¡¨å
     */
    private String table;
    /**
     * å­˜å‚¨åˆ—
     */
    private String code;
    /**
     * æ˜¾ç¤ºåˆ—
     */
    private String text;
    /**
     * å…³é”®å­—查询
     */
    private String keyword;
    /**
     * å­˜å‚¨åˆ—的值 ç”¨äºŽå›žæ˜¾æŸ¥è¯¢
     */
    private String codeValue;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/DynamicDataSourceModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,54 @@
package org.jeecg.common.system.vo;
import lombok.Data;
import org.springframework.beans.BeanUtils;
@Data
public class DynamicDataSourceModel {
    public DynamicDataSourceModel() {
    }
    public DynamicDataSourceModel(Object dbSource) {
        if (dbSource != null) {
            BeanUtils.copyProperties(dbSource, this);
        }
    }
    /**
     * id
     */
    private java.lang.String id;
    /**
     * æ•°æ®æºç¼–码
     */
    private java.lang.String code;
    /**
     * æ•°æ®åº“类型
     */
    private java.lang.String dbType;
    /**
     * é©±åŠ¨ç±»
     */
    private java.lang.String dbDriver;
    /**
     * æ•°æ®æºåœ°å€
     */
    private java.lang.String dbUrl;
//    /**
//     * æ•°æ®åº“名称
//     */
//    private java.lang.String dbName;
    /**
     * ç”¨æˆ·å
     */
    private java.lang.String dbUsername;
    /**
     * å¯†ç 
     */
    private java.lang.String dbPassword;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/LoginUser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,119 @@
package org.jeecg.common.system.vo;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * <p>
 * åœ¨çº¿ç”¨æˆ·ä¿¡æ¯
 * </p>
 *
 * @Author scott
 * @since 2018-12-20
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class LoginUser {
    /**
     * ç™»å½•人id
     */
    private String id;
    /**
     * ç™»å½•人账号
     */
    private String username;
    /**
     * ç™»å½•人名字
     */
    private String realname;
    /**
     * ç™»å½•人密码
     */
    private String password;
     /**
      * å½“前登录部门code
      */
    private String orgCode;
    /**
     * å¤´åƒ
     */
    private String avatar;
    /**
     * ç”Ÿæ—¥
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    /**
     * æ€§åˆ«ï¼ˆ1:男 2:女)
     */
    private Integer sex;
    /**
     * ç”µå­é‚®ä»¶
     */
    private String email;
    /**
     * ç”µè¯
     */
    private String phone;
    /**
     * çŠ¶æ€(1:正常 2:冻结 ï¼‰
     */
    private Integer status;
    private Integer delFlag;
    /**
     * åŒæ­¥å·¥ä½œæµå¼•擎1同步0不同步
     */
    private Integer activitiSync;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     *  èº«ä»½ï¼ˆ1 æ™®é€šå‘˜å·¥ 2 ä¸Šçº§ï¼‰
     */
    private Integer userIdentity;
    /**
     * ç®¡ç†éƒ¨é—¨ids
     */
    private String departIds;
    /**
     * èŒåŠ¡ï¼Œå…³è”èŒåŠ¡è¡¨
     */
    private String post;
    /**
     * åº§æœºå·
     */
    private String telephone;
    /**多租户id配置,编辑用户的时候设置*/
    private String relTenantIds;
    /**设备id uniapp推送用*/
    private String clientId;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/RoleVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package org.jeecg.common.system.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * è§’色表
 * </p>
 *
 * @Author scott
 * @since 2018-12-19
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class RoleVO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    private String id;
    /**
     * è§’色名称
     */
    @Excel(name="角色名",width=15)
    private String roleName;
    /**
     * è§’色编码
     */
    @Excel(name="角色编码",width=15)
    private String roleCode;
    /**
          * æè¿°
     */
    @Excel(name="描述",width=60)
    private String description;
    /**
     * åˆ›å»ºäºº
     */
    private String createBy;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * æ›´æ–°äºº
     */
    private String updateBy;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysCategoryModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package org.jeecg.common.system.vo;
import org.jeecgframework.poi.excel.annotation.Excel;
/**
 * @Author qinfeng
 * @Date 2020/2/19 12:01
 * @Description:
 * @Version 1.0
 */
public class SysCategoryModel {
    /**主键*/
    private java.lang.String id;
    /**父级节点*/
    private java.lang.String pid;
    /**类型名称*/
    private java.lang.String name;
    /**类型编码*/
    private java.lang.String code;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysDepartModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,147 @@
package org.jeecg.common.system.vo;
/**
 * lvdandan éƒ¨é—¨æœºæž„model
 */
public class SysDepartModel {
    /**ID*/
    private String id;
    /**父机构ID*/
    private String parentId;
    /**机构/部门名称*/
    private String departName;
    /**英文名*/
    private String departNameEn;
    /**缩写*/
    private String departNameAbbr;
    /**排序*/
    private Integer departOrder;
    /**描述*/
    private String description;
    /**机构类别 1组织机构,2岗位*/
    private String orgCategory;
    /**机构类型*/
    private String orgType;
    /**机构编码*/
    private String orgCode;
    /**手机号*/
    private String mobile;
    /**传真*/
    private String fax;
    /**地址*/
    private String address;
    /**备注*/
    private String memo;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getParentId() {
        return parentId;
    }
    public void setParentId(String parentId) {
        this.parentId = parentId;
    }
    public String getDepartName() {
        return departName;
    }
    public void setDepartName(String departName) {
        this.departName = departName;
    }
    public String getDepartNameEn() {
        return departNameEn;
    }
    public void setDepartNameEn(String departNameEn) {
        this.departNameEn = departNameEn;
    }
    public String getDepartNameAbbr() {
        return departNameAbbr;
    }
    public void setDepartNameAbbr(String departNameAbbr) {
        this.departNameAbbr = departNameAbbr;
    }
    public Integer getDepartOrder() {
        return departOrder;
    }
    public void setDepartOrder(Integer departOrder) {
        this.departOrder = departOrder;
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description;
    }
    public String getOrgCategory() {
        return orgCategory;
    }
    public void setOrgCategory(String orgCategory) {
        this.orgCategory = orgCategory;
    }
    public String getOrgType() {
        return orgType;
    }
    public void setOrgType(String orgType) {
        this.orgType = orgType;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getFax() {
        return fax;
    }
    public void setFax(String fax) {
        this.fax = fax;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysPermissionDataRuleModel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,151 @@
package org.jeecg.common.system.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * èœå•权限规则表
 * </p>
 *
 * @Author huangzhilin
 * @since 2019-03-29
 */
public class SysPermissionDataRuleModel {
    /**
     * id
     */
    private String id;
    /**
     * å¯¹åº”的菜单id
     */
    private String permissionId;
    /**
     * è§„则名称
     */
    private String ruleName;
    /**
     * å­—段
     */
    private String ruleColumn;
    /**
     * æ¡ä»¶
     */
    private String ruleConditions;
    /**
     * è§„则值
     */
    private String ruleValue;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     * åˆ›å»ºäºº
     */
    private String createBy;
    /**
     * ä¿®æ”¹æ—¶é—´
     */
    private Date updateTime;
    /**
     * ä¿®æ”¹äºº
     */
    private String updateBy;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPermissionId() {
        return permissionId;
    }
    public void setPermissionId(String permissionId) {
        this.permissionId = permissionId;
    }
    public String getRuleName() {
        return ruleName;
    }
    public void setRuleName(String ruleName) {
        this.ruleName = ruleName;
    }
    public String getRuleColumn() {
        return ruleColumn;
    }
    public void setRuleColumn(String ruleColumn) {
        this.ruleColumn = ruleColumn;
    }
    public String getRuleConditions() {
        return ruleConditions;
    }
    public void setRuleConditions(String ruleConditions) {
        this.ruleConditions = ruleConditions;
    }
    public String getRuleValue() {
        return ruleValue;
    }
    public void setRuleValue(String ruleValue) {
        this.ruleValue = ruleValue;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getCreateBy() {
        return createBy;
    }
    public void setCreateBy(String createBy) {
        this.createBy = createBy;
    }
    public Date getUpdateTime() {
        return updateTime;
    }
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
    public String getUpdateBy() {
        return updateBy;
    }
    public void setUpdateBy(String updateBy) {
        this.updateBy = updateBy;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/SysUserCacheInfo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package org.jeecg.common.system.vo;
import java.util.List;
import org.jeecg.common.util.DateUtils;
public class SysUserCacheInfo {
    private String sysUserCode;
    private String sysUserName;
    private String sysOrgCode;
    private List<String> sysMultiOrgCode;
    private boolean oneDepart;
    public boolean isOneDepart() {
        return oneDepart;
    }
    public void setOneDepart(boolean oneDepart) {
        this.oneDepart = oneDepart;
    }
    public String getSysDate() {
        return DateUtils.formatDate();
    }
    public String getSysTime() {
        return DateUtils.now();
    }
    public String getSysUserCode() {
        return sysUserCode;
    }
    public void setSysUserCode(String sysUserCode) {
        this.sysUserCode = sysUserCode;
    }
    public String getSysUserName() {
        return sysUserName;
    }
    public void setSysUserName(String sysUserName) {
        this.sysUserName = sysUserName;
    }
    public String getSysOrgCode() {
        return sysOrgCode;
    }
    public void setSysOrgCode(String sysOrgCode) {
        this.sysOrgCode = sysOrgCode;
    }
    public List<String> getSysMultiOrgCode() {
        return sysMultiOrgCode;
    }
    public void setSysMultiOrgCode(List<String> sysMultiOrgCode) {
        this.sysMultiOrgCode = sysMultiOrgCode;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/system/vo/UserVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,179 @@
package org.jeecg.common.system.vo;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
 * ç”¨æˆ·è¡¨
 * </p>
 *
 * @Author scott
 * @since 2018-12-20
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class UserVO implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * id
     */
    private String id;
    /**
     * ç™»å½•账号
     */
    @Excel(name = "登录账号", width = 15)
    private String username;
    /**
     * çœŸå®žå§“名
     */
    @Excel(name = "真实姓名", width = 15)
    private String realname;
    /**
     * å¯†ç 
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;
    /**
     * md5密码盐
     */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String salt;
    /**
     * å¤´åƒ
     */
    @Excel(name = "头像", width = 15,type = 2)
    private String avatar;
    /**
     * ç”Ÿæ—¥
     */
    @Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
    /**
     * æ€§åˆ«ï¼ˆ1:男 2:女)
     */
    @Excel(name = "性别", width = 15,dicCode="sex")
    @Dict(dicCode = "sex")
    private Integer sex;
    /**
     * ç”µå­é‚®ä»¶
     */
    @Excel(name = "电子邮件", width = 15)
    private String email;
    /**
     * ç”µè¯
     */
    @Excel(name = "电话", width = 15)
    private String phone;
    /**
     * éƒ¨é—¨code(当前选择登录部门)
     */
    private String orgCode;
    /**部门名称*/
    private transient String orgCodeTxt;
    /**
     * çŠ¶æ€(1:正常  2:冻结 ï¼‰
     */
    @Excel(name = "状态", width = 15,dicCode="user_status")
    @Dict(dicCode = "user_status")
    private Integer status;
    /**
     * åˆ é™¤çŠ¶æ€ï¼ˆ0,正常,1已删除)
     */
    @Excel(name = "删除状态", width = 15,dicCode="del_flag")
    @TableLogic
    private Integer delFlag;
    /**
     * å·¥å·ï¼Œå”¯ä¸€é”®
     */
    @Excel(name = "工号", width = 15)
    private String workNo;
    /**
     * èŒåŠ¡ï¼Œå…³è”èŒåŠ¡è¡¨
     */
    @Excel(name = "职务", width = 15)
    @Dict(dictTable ="sys_position",dicText = "name",dicCode = "code")
    private String post;
    /**
     * åº§æœºå·
     */
    @Excel(name = "座机号", width = 15)
    private String telephone;
    /**
     * åˆ›å»ºäºº
     */
    private String createBy;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    private Date createTime;
    /**
     * æ›´æ–°äºº
     */
    private String updateBy;
    /**
     * æ›´æ–°æ—¶é—´
     */
    private Date updateTime;
    /**
     * åŒæ­¥å·¥ä½œæµå¼•擎1同步0不同步
     */
    private Integer activitiSync;
    /**
     * èº«ä»½ï¼ˆ0 æ™®é€šæˆå‘˜ 1 ä¸Šçº§ï¼‰
     */
    @Excel(name="(1普通成员 2上级)",width = 15)
    private Integer userIdentity;
    /**
     * è´Ÿè´£éƒ¨é—¨
     */
    @Excel(name="负责部门",width = 15,dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
    @Dict(dictTable ="sys_depart",dicText = "depart_name",dicCode = "id")
    private String departIds;
    /**
     * å¤šç§Ÿæˆ·id配置,编辑用户的时候设置
     */
    private String relTenantIds;
    /**设备id uniapp推送用*/
    private String clientId;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserType.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package org.jeecg.common.util;
/**
 *
 * @Author  å¼ ä»£æµ©
 *
 */
public enum BrowserType {
    IE11,IE10,IE9,IE8,IE7,IE6,Firefox,Safari,Chrome,Opera,Camino,Gecko
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/BrowserUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,206 @@
package org.jeecg.common.util;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
/**
 *
 * @Author å¼ ä»£æµ©
 *
 */
public class BrowserUtils {
    // åˆ¤æ–­æ˜¯å¦æ˜¯IE
    public static boolean isIE(HttpServletRequest request) {
        return (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0 || request
                .getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0) ? true
                : false;
    }
    /**
     * èŽ·å–IE版本
     *
     * @param request
     * @return
     */
    public static Double getIEversion(HttpServletRequest request) {
        Double version = 0.0;
        if (getBrowserType(request, IE11)) {
            version = 11.0;
        } else if (getBrowserType(request, IE10)) {
            version = 10.0;
        } else if (getBrowserType(request, IE9)) {
            version = 9.0;
        } else if (getBrowserType(request, IE8)) {
            version = 8.0;
        } else if (getBrowserType(request, IE7)) {
            version = 7.0;
        } else if (getBrowserType(request, IE6)) {
            version = 6.0;
        }
        return version;
    }
    /**
     * èŽ·å–æµè§ˆå™¨ç±»åž‹
     *
     * @param request
     * @return
     */
    public static BrowserType getBrowserType(HttpServletRequest request) {
        BrowserType browserType = null;
        if (getBrowserType(request, IE11)) {
            browserType = BrowserType.IE11;
        }
        if (getBrowserType(request, IE10)) {
            browserType = BrowserType.IE10;
        }
        if (getBrowserType(request, IE9)) {
            browserType = BrowserType.IE9;
        }
        if (getBrowserType(request, IE8)) {
            browserType = BrowserType.IE8;
        }
        if (getBrowserType(request, IE7)) {
            browserType = BrowserType.IE7;
        }
        if (getBrowserType(request, IE6)) {
            browserType = BrowserType.IE6;
        }
        if (getBrowserType(request, FIREFOX)) {
            browserType = BrowserType.Firefox;
        }
        if (getBrowserType(request, SAFARI)) {
            browserType = BrowserType.Safari;
        }
        if (getBrowserType(request, CHROME)) {
            browserType = BrowserType.Chrome;
        }
        if (getBrowserType(request, OPERA)) {
            browserType = BrowserType.Opera;
        }
        if (getBrowserType(request, "Camino")) {
            browserType = BrowserType.Camino;
        }
        return browserType;
    }
    private static boolean getBrowserType(HttpServletRequest request,
            String brosertype) {
        return request.getHeader("USER-AGENT").toLowerCase()
                .indexOf(brosertype) > 0 ? true : false;
    }
    private final static String IE11 = "rv:11.0";
    private final static String IE10 = "MSIE 10.0";
    private final static String IE9 = "MSIE 9.0";
    private final static String IE8 = "MSIE 8.0";
    private final static String IE7 = "MSIE 7.0";
    private final static String IE6 = "MSIE 6.0";
    private final static String MAXTHON = "Maxthon";
    private final static String QQ = "QQBrowser";
    private final static String GREEN = "GreenBrowser";
    private final static String SE360 = "360SE";
    private final static String FIREFOX = "Firefox";
    private final static String OPERA = "Opera";
    private final static String CHROME = "Chrome";
    private final static String SAFARI = "Safari";
    private final static String OTHER = "其它";
    public static String checkBrowse(HttpServletRequest request) {
        String userAgent = request.getHeader("USER-AGENT");
        if (regex(OPERA, userAgent)) {
            return OPERA;
        }
        if (regex(CHROME, userAgent)) {
            return CHROME;
        }
        if (regex(FIREFOX, userAgent)) {
            return FIREFOX;
        }
        if (regex(SAFARI, userAgent)) {
            return SAFARI;
        }
        if (regex(SE360, userAgent)) {
            return SE360;
        }
        if (regex(GREEN, userAgent)) {
            return GREEN;
        }
        if (regex(QQ, userAgent)) {
            return QQ;
        }
        if (regex(MAXTHON, userAgent)) {
            return MAXTHON;
        }
        if (regex(IE11, userAgent)) {
            return IE11;
        }
        if (regex(IE10, userAgent)) {
            return IE10;
        }
        if (regex(IE9, userAgent)) {
            return IE9;
        }
        if (regex(IE8, userAgent)) {
            return IE8;
        }
        if (regex(IE7, userAgent)) {
            return IE7;
        }
        if (regex(IE6, userAgent)) {
            return IE6;
        }
        return OTHER;
    }
    public static boolean regex(String regex, String str) {
        Pattern p = Pattern.compile(regex, Pattern.MULTILINE);
        Matcher m = p.matcher(str);
        return m.find();
    }
    private static Map<String, String> langMap = new HashMap<String, String>();
    private final static String ZH = "zh";
    private final static String ZH_CN = "zh-cn";
    private final static String EN = "en";
    private final static String EN_US = "en";
    static
    {
        langMap.put(ZH, ZH_CN);
        langMap.put(EN, EN_US);
    }
    public static String getBrowserLanguage(HttpServletRequest request) {
        String browserLang = request.getLocale().getLanguage();
        String browserLangCode = (String)langMap.get(browserLang);
        if(browserLangCode == null)
        {
            browserLangCode = EN_US;
        }
        return browserLangCode;
    }
    /** åˆ¤æ–­è¯·æ±‚是否来自电脑端 */
    public static boolean isDesktop(HttpServletRequest request) {
        return !isMobile(request);
    }
    /** åˆ¤æ–­è¯·æ±‚是否来自移动端 */
    public static boolean isMobile(HttpServletRequest request) {
        String ua = request.getHeader("User-Agent").toLowerCase();
        Pattern pattern = Pattern.compile("(phone|pad|pod|iphone|ipod|ios|ipad|android|mobile|blackberry|iemobile|mqqbrowser|juc|fennec|wosbrowser|browserng|webos|symbian|windows phone)");
        return pattern.matcher(ua).find();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/CommonUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,285 @@
package org.jeecg.common.util;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.util.filter.FileTypeFilter;
import org.jeecg.common.util.oss.OssBootUtil;
import org.jeecgframework.poi.util.PoiPublicUtil;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.multipart.MultipartFile;
import javax.sql.DataSource;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
public class CommonUtils {
   //中文正则
    private static Pattern ZHONGWEN_PATTERN = Pattern.compile("[\u4e00-\u9fa5]");
    public static String uploadOnlineImage(byte[] data,String basePath,String bizPath,String uploadType){
        String dbPath = null;
        String fileName = "image" + Math.round(Math.random() * 100000000000L);
        fileName += "." + PoiPublicUtil.getFileExtendName(data);
        try {
            if(CommonConstant.UPLOAD_TYPE_LOCAL.equals(uploadType)){
                File file = new File(basePath + File.separator + bizPath + File.separator );
                if (!file.exists()) {
                    file.mkdirs();// åˆ›å»ºæ–‡ä»¶æ ¹ç›®å½•
                }
                String savePath = file.getPath() + File.separator + fileName;
                File savefile = new File(savePath);
                FileCopyUtils.copy(data, savefile);
                dbPath = bizPath + File.separator + fileName;
            }else {
                InputStream in = new ByteArrayInputStream(data);
                String relativePath = bizPath+"/"+fileName;
                if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
                    dbPath = MinioUtil.upload(in,relativePath);
                }else if(CommonConstant.UPLOAD_TYPE_OSS.equals(uploadType)){
                    dbPath = OssBootUtil.upload(in,relativePath);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dbPath;
    }
    /**
     * åˆ¤æ–­æ–‡ä»¶åæ˜¯å¦å¸¦ç›˜ç¬¦ï¼Œé‡æ–°å¤„理
     * @param fileName
     * @return
     */
    public static String getFileName(String fileName){
        //判断是否带有盘符信息
        // Check for Unix-style path
        int unixSep = fileName.lastIndexOf('/');
        // Check for Windows-style path
        int winSep = fileName.lastIndexOf('\\');
        // Cut off at latest possible point
        int pos = (winSep > unixSep ? winSep : unixSep);
        if (pos != -1)  {
            // Any sort of path separator found...
            fileName = fileName.substring(pos + 1);
        }
        //替换上传文件名字的特殊字符
        fileName = fileName.replace("=","").replace(",","").replace("&","")
                .replace("#", "").replace("“", "").replace("”", "");
        //替换上传文件名字中的空格
        fileName=fileName.replaceAll("\\s","");
        return fileName;
    }
    // java åˆ¤æ–­å­—符串里是否包含中文字符
    public static boolean ifContainChinese(String str) {
        if(str.getBytes().length == str.length()){
            return false;
        }else{
            Matcher m = ZHONGWEN_PATTERN.matcher(str);
            if (m.find()) {
                return true;
            }
            return false;
        }
    }
    /**
     * ç»Ÿä¸€å…¨å±€ä¸Šä¼ 
     * @Return: java.lang.String
     */
    public static String upload(MultipartFile file, String bizPath, String uploadType) {
        String url = "";
        if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
            url = MinioUtil.upload(file,bizPath);
        }else{
            url = OssBootUtil.upload(file,bizPath);
        }
        return url;
    }
    /**
     * æœ¬åœ°æ–‡ä»¶ä¸Šä¼ 
     * @param mf æ–‡ä»¶
     * @param bizPath  è‡ªå®šä¹‰è·¯å¾„
     * @return
     */
    public static String uploadLocal(MultipartFile mf,String bizPath,String uploadpath){
        try {
            //update-begin-author:liusq date:20210809 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶ç±»åž‹
            FileTypeFilter.fileTypeFilter(mf);
            //update-end-author:liusq date:20210809 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶ç±»åž‹
            String fileName = null;
            File file = new File(uploadpath + File.separator + bizPath + File.separator );
            if (!file.exists()) {
                file.mkdirs();// åˆ›å»ºæ–‡ä»¶æ ¹ç›®å½•
            }
            String orgName = mf.getOriginalFilename();// èŽ·å–æ–‡ä»¶å
            orgName = CommonUtils.getFileName(orgName);
            if(orgName.indexOf(".")!=-1){
                fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."));
            }else{
                fileName = orgName+ "_" + System.currentTimeMillis();
            }
            String savePath = file.getPath() + File.separator + fileName;
            File savefile = new File(savePath);
            FileCopyUtils.copy(mf.getBytes(), savefile);
            String dbpath = null;
            if(oConvertUtils.isNotEmpty(bizPath)){
                dbpath = bizPath + File.separator + fileName;
            }else{
                dbpath = fileName;
            }
            if (dbpath.contains("\\")) {
                dbpath = dbpath.replace("\\", "/");
            }
            return dbpath;
        } catch (IOException e) {
            log.error(e.getMessage(), e);
        }catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return "";
    }
    /**
     * ç»Ÿä¸€å…¨å±€ä¸Šä¼  å¸¦æ¡¶
     * @Return: java.lang.String
     */
    public static String upload(MultipartFile file, String bizPath, String uploadType, String customBucket) {
        String url = "";
        if(CommonConstant.UPLOAD_TYPE_MINIO.equals(uploadType)){
            url = MinioUtil.upload(file,bizPath,customBucket);
        }else{
            url = OssBootUtil.upload(file,bizPath,customBucket);
        }
        return url;
    }
    /** å½“前系统数据库类型 */
    private static String DB_TYPE = "";
    private static DbType dbTypeEnum = null;
    /**
     * å…¨å±€èŽ·å–å¹³å°æ•°æ®åº“ç±»åž‹ï¼ˆä½œåºŸäº†ï¼‰
     * @return
     */
    @Deprecated
    public static String getDatabaseType() {
        if(oConvertUtils.isNotEmpty(DB_TYPE)){
            return DB_TYPE;
        }
        DataSource dataSource = SpringContextUtils.getApplicationContext().getBean(DataSource.class);
        try {
            return getDatabaseTypeByDataSource(dataSource);
        } catch (SQLException e) {
            //e.printStackTrace();
            log.warn(e.getMessage(),e);
            return "";
        }
    }
    /**
     * å…¨å±€èŽ·å–å¹³å°æ•°æ®åº“ç±»åž‹ï¼ˆå¯¹åº”mybaisPlus枚举)
     * @return
     */
    public static DbType getDatabaseTypeEnum() {
        if (oConvertUtils.isNotEmpty(dbTypeEnum)) {
            return dbTypeEnum;
        }
        try {
            DataSource dataSource = SpringContextUtils.getApplicationContext().getBean(DataSource.class);
            dbTypeEnum = JdbcUtils.getDbType(dataSource.getConnection().getMetaData().getURL());
            return dbTypeEnum;
        } catch (SQLException e) {
            log.warn(e.getMessage(), e);
            return null;
        }
    }
    /**
     * æ ¹æ®æ•°æ®æºkey获取DataSourceProperty
     * @param sourceKey
     * @return
     */
    public static DataSourceProperty getDataSourceProperty(String sourceKey){
        DynamicDataSourceProperties prop = SpringContextUtils.getApplicationContext().getBean(DynamicDataSourceProperties.class);
        Map<String, DataSourceProperty> map = prop.getDatasource();
        DataSourceProperty db = (DataSourceProperty)map.get(sourceKey);
        return db;
    }
    /**
     * æ ¹æ®sourceKey èŽ·å–æ•°æ®æºè¿žæŽ¥
     * @param sourceKey
     * @return
     * @throws SQLException
     */
    public static Connection getDataSourceConnect(String sourceKey) throws SQLException {
        if (oConvertUtils.isEmpty(sourceKey)) {
            sourceKey = "master";
        }
        DynamicDataSourceProperties prop = SpringContextUtils.getApplicationContext().getBean(DynamicDataSourceProperties.class);
        Map<String, DataSourceProperty> map = prop.getDatasource();
        DataSourceProperty db = (DataSourceProperty)map.get(sourceKey);
        if(db==null){
            return null;
        }
        DriverManagerDataSource ds = new DriverManagerDataSource ();
        ds.setDriverClassName(db.getDriverClassName());
        ds.setUrl(db.getUrl());
        ds.setUsername(db.getUsername());
        ds.setPassword(db.getPassword());
        return ds.getConnection();
    }
    /**
     * èŽ·å–æ•°æ®åº“ç±»åž‹
     * @param dataSource
     * @return
     * @throws SQLException
     */
    private static String getDatabaseTypeByDataSource(DataSource dataSource) throws SQLException{
        if("".equals(DB_TYPE)) {
            Connection connection = dataSource.getConnection();
            try {
                DatabaseMetaData md = connection.getMetaData();
                String dbType = md.getDatabaseProductName().toLowerCase();
                if(dbType.indexOf("mysql")>=0) {
                    DB_TYPE = DataBaseConstant.DB_TYPE_MYSQL;
                }else if(dbType.indexOf("oracle")>=0 ||dbType.indexOf("dm")>=0) {
                    DB_TYPE = DataBaseConstant.DB_TYPE_ORACLE;
                }else if(dbType.indexOf("sqlserver")>=0||dbType.indexOf("sql server")>=0) {
                    DB_TYPE = DataBaseConstant.DB_TYPE_SQLSERVER;
                }else if(dbType.indexOf("postgresql")>=0) {
                    DB_TYPE = DataBaseConstant.DB_TYPE_POSTGRESQL;
                }else if(dbType.indexOf("mariadb")>=0) {
                    DB_TYPE = DataBaseConstant.DB_TYPE_MARIADB;
                }else {
                    log.error("数据库类型:[" + dbType + "]不识别!");
                    //throw new JeecgBootException("数据库类型:["+dbType+"]不识别!");
                }
            } catch (Exception e) {
                log.error(e.getMessage(), e);
            }finally {
                connection.close();
            }
        }
        return DB_TYPE;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DataUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package org.jeecg.common.util;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.formula.functions.T;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.common.system.base.entity.JeecgEntity;
import org.jeecg.common.system.vo.LoginUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
@Component
public class DataUtil {
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,1318 @@
package org.jeecg.common.util;
import java.beans.PropertyEditorSupport;
import java.sql.Timestamp;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.springframework.util.StringUtils;
/**
 * ç±»æè¿°ï¼šæ—¶é—´æ“ä½œå®šä¹‰ç±»
 *
 * @Author: å¼ ä»£æµ©
 * @Date:2012-12-8 12:15:03
 * @Version 1.0
 */
public class DateUtils extends PropertyEditorSupport {
    public static ThreadLocal<SimpleDateFormat> date_sdf = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd");
        }
    };
    public static ThreadLocal<SimpleDateFormat> date_year = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyy");
        }
    };
    public static ThreadLocal<SimpleDateFormat> date_month = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("MM");
        }
    };
    public static ThreadLocal<SimpleDateFormat> yyyyMMdd = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyyMMdd");
        }
    };
    public static ThreadLocal<SimpleDateFormat> date_sdf_wz = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyyå¹´MM月dd日");
        }
    };
    public static ThreadLocal<SimpleDateFormat> time_sdf = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm");
        }
    };
    public static ThreadLocal<SimpleDateFormat> yyyymmddhhmmss = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyyMMddHHmmss");
        }
    };
    public static ThreadLocal<SimpleDateFormat> short_time_sdf = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("HH:mm");
        }
    };
    public static ThreadLocal<SimpleDateFormat> datetimeFormat = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };
    public static ThreadLocal<SimpleDateFormat> timeFormat = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("HHmmss");
        }
    };
    public static ThreadLocal<SimpleDateFormat> monDayFormat = new ThreadLocal<SimpleDateFormat>() {
        @Override
        protected SimpleDateFormat initialValue() {
            return new SimpleDateFormat("MM月dd日");
        }
    };
    // ä»¥æ¯«ç§’表示的时间
    private static final long DAY_IN_MILLIS = 24 * 3600 * 1000;
    private static final long HOUR_IN_MILLIS = 3600 * 1000;
    private static final long MINUTE_IN_MILLIS = 60 * 1000;
    private static final long SECOND_IN_MILLIS = 1000;
    // æŒ‡å®šæ¨¡å¼çš„æ—¶é—´æ ¼å¼
    private static SimpleDateFormat getSDFormat(String pattern) {
        return new SimpleDateFormat(pattern);
    }
    /**
     * å½“前日历,这里用中国时间表示
     *
     * @return ä»¥å½“地时区表示的系统当前日历
     */
    public static Calendar getCalendar() {
        return Calendar.getInstance();
    }
    /**
     * æŒ‡å®šæ¯«ç§’数表示的日历
     *
     * @param millis æ¯«ç§’æ•°
     * @return æŒ‡å®šæ¯«ç§’数表示的日历
     */
    public static Calendar getCalendar(long millis) {
        Calendar cal = Calendar.getInstance();
        // --------------------cal.setTimeInMillis(millis);
        cal.setTime(new Date(millis));
        return cal;
    }
    // ////////////////////////////////////////////////////////////////////////////
    // getDate
    // å„种方式获取的Date
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * å½“前日期
     *
     * @return ç³»ç»Ÿå½“前时间
     */
    public static Date getDate() {
        return new Date();
    }
    /**
     * æŒ‡å®šæ¯«ç§’数表示的日期
     *
     * @param millis æ¯«ç§’æ•°
     * @return æŒ‡å®šæ¯«ç§’数表示的日期
     */
    public static Date getDate(long millis) {
        return new Date(millis);
    }
    /**
     * æ—¶é—´æˆ³è½¬æ¢ä¸ºå­—符串
     *
     * @param time
     * @return
     */
    public static String timestamptoStr(Timestamp time) {
        Date date = null;
        if (null != time) {
            date = new Date(time.getTime());
        }
        return date2Str(date_sdf.get());
    }
    /**
     * å­—符串转换时间戳
     *
     * @param str
     * @return
     */
    public static Timestamp str2Timestamp(String str) {
        Date date = str2Date(str, date_sdf.get());
        return new Timestamp(date.getTime());
    }
    /**
     * å­—符串转换成日期
     *
     * @param str
     * @param sdf
     * @return
     */
    public static Date str2Date(String str, SimpleDateFormat sdf) {
        if (null == str || "".equals(str)) {
            return null;
        }
        Date date = null;
        try {
            date = sdf.parse(str);
            return date;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * æ—¥æœŸè½¬æ¢ä¸ºå­—符串
     *
     * @param date_sdf æ—¥æœŸæ ¼å¼
     * @return å­—符串
     */
    public static String date2Str(SimpleDateFormat date_sdf) {
        Date date = getDate();
        if (null == date) {
            return null;
        }
        return date_sdf.format(date);
    }
    /**
     * æ ¼å¼åŒ–æ—¶é—´
     *
     * @param date
     * @param format
     * @return
     */
    public static String dateformat(String date, String format) {
        SimpleDateFormat sformat = new SimpleDateFormat(format);
        Date _date = null;
        try {
            _date = sformat.parse(date);
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sformat.format(_date);
    }
    /**
     * æ—¥æœŸè½¬æ¢ä¸ºå­—符串
     *
     * @param date     æ—¥æœŸ
     * @param date_sdf æ—¥æœŸæ ¼å¼
     * @return å­—符串
     */
    public static String date2Str(Date date, SimpleDateFormat date_sdf) {
        if (null == date) {
            return null;
        }
        return date_sdf.format(date);
    }
    /**
     * æ—¥æœŸè½¬æ¢ä¸ºå­—符串
     *
     * @param format æ—¥æœŸæ ¼å¼
     * @return å­—符串
     */
    public static String getDate(String format) {
        Date date = new Date();
        if (null == date) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }
    /**
     * æŒ‡å®šæ¯«ç§’数的时间戳
     *
     * @param millis æ¯«ç§’æ•°
     * @return æŒ‡å®šæ¯«ç§’数的时间戳
     */
    public static Timestamp getTimestamp(long millis) {
        return new Timestamp(millis);
    }
    /**
     * ä»¥å­—符形式表示的时间戳
     *
     * @param time æ¯«ç§’æ•°
     * @return ä»¥å­—符形式表示的时间戳
     */
    public static Timestamp getTimestamp(String time) {
        return new Timestamp(Long.parseLong(time));
    }
    /**
     * ç³»ç»Ÿå½“前的时间戳
     *
     * @return ç³»ç»Ÿå½“前的时间戳
     */
    public static Timestamp getTimestamp() {
        return new Timestamp(System.currentTimeMillis());
    }
    /**
     * å½“前时间,格式 yyyy-MM-dd HH:mm:ss
     *
     * @return å½“前时间的标准形式字符串
     */
    public static String now() {
        return datetimeFormat.get().format(getCalendar().getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„æ—¶é—´æˆ³
     *
     * @param date æŒ‡å®šæ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸçš„æ—¶é—´æˆ³
     */
    public static Timestamp getTimestamp(Date date) {
        return new Timestamp(date.getTime());
    }
    /**
     * æŒ‡å®šæ—¥åŽ†çš„æ—¶é—´æˆ³
     *
     * @param cal æŒ‡å®šæ—¥åކ
     * @return æŒ‡å®šæ—¥åŽ†çš„æ—¶é—´æˆ³
     */
    public static Timestamp getCalendarTimestamp(Calendar cal) {
        // ---------------------return new Timestamp(cal.getTimeInMillis());
        return new Timestamp(cal.getTime().getTime());
    }
    public static Timestamp gettimestamp() {
        Date dt = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String nowTime = df.format(dt);
        java.sql.Timestamp buydate = java.sql.Timestamp.valueOf(nowTime);
        return buydate;
    }
    // ////////////////////////////////////////////////////////////////////////////
    // getMillis
    // å„种方式获取的Millis
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * ç³»ç»Ÿæ—¶é—´çš„æ¯«ç§’æ•°
     *
     * @return ç³»ç»Ÿæ—¶é—´çš„æ¯«ç§’æ•°
     */
    public static long getMillis() {
        return System.currentTimeMillis();
    }
    /**
     * æŒ‡å®šæ—¥åŽ†çš„æ¯«ç§’æ•°
     *
     * @param cal æŒ‡å®šæ—¥åކ
     * @return æŒ‡å®šæ—¥åŽ†çš„æ¯«ç§’æ•°
     */
    public static long getMillis(Calendar cal) {
        // --------------------return cal.getTimeInMillis();
        return cal.getTime().getTime();
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„æ¯«ç§’æ•°
     *
     * @param date æŒ‡å®šæ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸçš„æ¯«ç§’æ•°
     */
    public static long getMillis(Date date) {
        return date.getTime();
    }
    /**
     * æŒ‡å®šæ—¶é—´æˆ³çš„æ¯«ç§’æ•°
     *
     * @param ts æŒ‡å®šæ—¶é—´æˆ³
     * @return æŒ‡å®šæ—¶é—´æˆ³çš„æ¯«ç§’æ•°
     */
    public static long getMillis(Timestamp ts) {
        return ts.getTime();
    }
    // ////////////////////////////////////////////////////////////////////////////
    // formatDate
    // å°†æ—¥æœŸæŒ‰ç…§ä¸€å®šçš„æ ¼å¼è½¬åŒ–为字符串
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * é»˜è®¤æ–¹å¼è¡¨ç¤ºçš„系统当前日期,具体格式:年-月-日
     *
     * @return é»˜è®¤æ—¥æœŸæŒ‰â€œå¹´-月-日“格式显示
     */
    public static String formatDate() {
        return date_sdf.get().format(getCalendar().getTime());
    }
    /**
     * é»˜è®¤æ–¹å¼è¡¨ç¤ºçš„系统当前日期,具体格式:yyyy-MM-dd HH:mm:ss
     *
     * @return é»˜è®¤æ—¥æœŸæŒ‰â€œyyyy-MM-dd HH:mm:ss“格式显示
     */
    public static String formatDateTime() {
        return datetimeFormat.get().format(getCalendar().getTime());
    }
    /**
     * èŽ·å–æ—¶é—´å­—ç¬¦ä¸²
     */
    public static String getDataString(SimpleDateFormat formatstr) {
        return formatstr.format(getCalendar().getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„默认显示,具体格式:年-月-日
     *
     * @param cal æŒ‡å®šçš„æ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸæŒ‰â€œå¹´-月-日“格式显示
     */
    public static String formatDate(Calendar cal) {
        return date_sdf.get().format(cal.getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„默认显示,具体格式:年-月-日
     *
     * @param date æŒ‡å®šçš„æ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸæŒ‰â€œå¹´-月-日“格式显示
     */
    public static String formatDate(Date date) {
        return date_sdf.get().format(date);
    }
    /**
     * æŒ‡å®šæ¯«ç§’数表示日期的默认显示,具体格式:年-月-日
     *
     * @param millis æŒ‡å®šçš„æ¯«ç§’æ•°
     * @return æŒ‡å®šæ¯«ç§’数表示日期按“年-月-日“格式显示
     */
    public static String formatDate(long millis) {
        return date_sdf.get().format(new Date(millis));
    }
    /**
     * é»˜è®¤æ—¥æœŸæŒ‰æŒ‡å®šæ ¼å¼æ˜¾ç¤º
     *
     * @param pattern æŒ‡å®šçš„æ ¼å¼
     * @return é»˜è®¤æ—¥æœŸæŒ‰æŒ‡å®šæ ¼å¼æ˜¾ç¤º
     */
    public static String formatDate(String pattern) {
        return getSDFormat(pattern).format(getCalendar().getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸæŒ‰æŒ‡å®šæ ¼å¼æ˜¾ç¤º
     *
     * @param cal     æŒ‡å®šçš„æ—¥æœŸ
     * @param pattern æŒ‡å®šçš„æ ¼å¼
     * @return æŒ‡å®šæ—¥æœŸæŒ‰æŒ‡å®šæ ¼å¼æ˜¾ç¤º
     */
    public static String formatDate(Calendar cal, String pattern) {
        return getSDFormat(pattern).format(cal.getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸæŒ‰æŒ‡å®šæ ¼å¼æ˜¾ç¤º
     *
     * @param date    æŒ‡å®šçš„æ—¥æœŸ
     * @param pattern æŒ‡å®šçš„æ ¼å¼
     * @return æŒ‡å®šæ—¥æœŸæŒ‰æŒ‡å®šæ ¼å¼æ˜¾ç¤º
     */
    public static String formatDate(Date date, String pattern) {
        return getSDFormat(pattern).format(date);
    }
    // ////////////////////////////////////////////////////////////////////////////
    // formatTime
    // å°†æ—¥æœŸæŒ‰ç…§ä¸€å®šçš„æ ¼å¼è½¬åŒ–为字符串
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * é»˜è®¤æ–¹å¼è¡¨ç¤ºçš„系统当前日期,具体格式:年-月-日 æ—¶ï¼šåˆ†
     *
     * @return é»˜è®¤æ—¥æœŸæŒ‰â€œå¹´-月-日 æ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatTime() {
        return time_sdf.get().format(getCalendar().getTime());
    }
    /**
     * æŒ‡å®šæ¯«ç§’数表示日期的默认显示,具体格式:年-月-日 æ—¶ï¼šåˆ†
     *
     * @param millis æŒ‡å®šçš„æ¯«ç§’æ•°
     * @return æŒ‡å®šæ¯«ç§’数表示日期按“年-月-日 æ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatTime(long millis) {
        return time_sdf.get().format(new Date(millis));
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„默认显示,具体格式:年-月-日 æ—¶ï¼šåˆ†
     *
     * @param cal æŒ‡å®šçš„æ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸæŒ‰â€œå¹´-月-日 æ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatTime(Calendar cal) {
        return time_sdf.get().format(cal.getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„默认显示,具体格式:年-月-日 æ—¶ï¼šåˆ†
     *
     * @param date æŒ‡å®šçš„æ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸæŒ‰â€œå¹´-月-日 æ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatTime(Date date) {
        return time_sdf.get().format(date);
    }
    // ////////////////////////////////////////////////////////////////////////////
    // formatShortTime
    // å°†æ—¥æœŸæŒ‰ç…§ä¸€å®šçš„æ ¼å¼è½¬åŒ–为字符串
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * é»˜è®¤æ–¹å¼è¡¨ç¤ºçš„系统当前日期,具体格式:时:分
     *
     * @return é»˜è®¤æ—¥æœŸæŒ‰â€œæ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatShortTime() {
        return short_time_sdf.get().format(getCalendar().getTime());
    }
    /**
     * æŒ‡å®šæ¯«ç§’数表示日期的默认显示,具体格式:时:分
     *
     * @param millis æŒ‡å®šçš„æ¯«ç§’æ•°
     * @return æŒ‡å®šæ¯«ç§’数表示日期按“时:分“格式显示
     */
    public static String formatShortTime(long millis) {
        return short_time_sdf.get().format(new Date(millis));
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„默认显示,具体格式:时:分
     *
     * @param cal æŒ‡å®šçš„æ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸæŒ‰â€œæ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatShortTime(Calendar cal) {
        return short_time_sdf.get().format(cal.getTime());
    }
    /**
     * æŒ‡å®šæ—¥æœŸçš„默认显示,具体格式:时:分
     *
     * @param date æŒ‡å®šçš„æ—¥æœŸ
     * @return æŒ‡å®šæ—¥æœŸæŒ‰â€œæ—¶ï¼šåˆ†â€œæ ¼å¼æ˜¾ç¤º
     */
    public static String formatShortTime(Date date) {
        return short_time_sdf.get().format(date);
    }
    // ////////////////////////////////////////////////////////////////////////////
    // parseDate
    // parseCalendar
    // parseTimestamp
    // å°†å­—符串按照一定的格式转化为日期或时间
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * æ ¹æ®æŒ‡å®šçš„æ ¼å¼å°†å­—符串转换成Date å¦‚输入:2003-11-19 11:20:20将按照这个转成时间
     *
     * @param src     å°†è¦è½¬æ¢çš„原始字符窜
     * @param pattern è½¬æ¢çš„匹配格式
     * @return å¦‚果转换成功则返回转换后的日期
     * @throws ParseException
     */
    public static Date parseDate(String src, String pattern) throws ParseException {
        return getSDFormat(pattern).parse(src);
    }
    /**
     * æ ¹æ®æŒ‡å®šçš„æ ¼å¼å°†å­—符串转换成Date å¦‚输入:2003-11-19 11:20:20将按照这个转成时间
     *
     * @param src     å°†è¦è½¬æ¢çš„原始字符窜
     * @param pattern è½¬æ¢çš„匹配格式
     * @return å¦‚果转换成功则返回转换后的日期
     * @throws ParseException
     */
    public static Calendar parseCalendar(String src, String pattern) throws ParseException {
        Date date = parseDate(src, pattern);
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        return cal;
    }
    public static String formatAddDate(String src, String pattern, int amount) throws ParseException {
        Calendar cal;
        cal = parseCalendar(src, pattern);
        cal.add(Calendar.DATE, amount);
        return formatDate(cal);
    }
    /**
     * æ ¹æ®æŒ‡å®šçš„æ ¼å¼å°†å­—符串转换成Date å¦‚输入:2003-11-19 11:20:20将按照这个转成时间
     *
     * @param src     å°†è¦è½¬æ¢çš„原始字符窜
     * @param pattern è½¬æ¢çš„匹配格式
     * @return å¦‚果转换成功则返回转换后的时间戳
     * @throws ParseException
     */
    public static Timestamp parseTimestamp(String src, String pattern) throws ParseException {
        Date date = parseDate(src, pattern);
        return new Timestamp(date.getTime());
    }
    // ////////////////////////////////////////////////////////////////////////////
    // dateDiff
    // è®¡ç®—两个日期之间的差值
    // ////////////////////////////////////////////////////////////////////////////
    /**
     * è®¡ç®—两个时间之间的差值,根据标志的不同而不同
     *
     * @param flag   è®¡ç®—标志,表示按照年/月/日/时/分/秒等计算
     * @param calSrc å‡æ•°
     * @param calDes è¢«å‡æ•°
     * @return ä¸¤ä¸ªæ—¥æœŸä¹‹é—´çš„差值
     */
    public static int dateDiff(char flag, Calendar calSrc, Calendar calDes) {
        long millisDiff = getMillis(calSrc) - getMillis(calDes);
        if (flag == 'y') {
            return (calSrc.get(Calendar.YEAR) - calDes.get(Calendar.YEAR));
        }
        if (flag == 'd') {
            return (int) (millisDiff / DAY_IN_MILLIS);
        }
        if (flag == 'h') {
            return (int) (millisDiff / HOUR_IN_MILLIS);
        }
        if (flag == 'm') {
            return (int) (millisDiff / MINUTE_IN_MILLIS);
        }
        if (flag == 's') {
            return (int) (millisDiff / SECOND_IN_MILLIS);
        }
        return 0;
    }
    public static Long getCurrentTimestamp() {
        return Long.valueOf(DateUtils.yyyymmddhhmmss.get().format(new Date()));
    }
    /**
     * String类型 è½¬æ¢ä¸ºDate, å¦‚果参数长度为10 è½¬æ¢æ ¼å¼â€yyyy-MM-dd“ å¦‚果参数长度为19 è½¬æ¢æ ¼å¼â€yyyy-MM-dd
     * HH:mm:ss“ * @param text String类型的时间值
     */
    @Override
    public void setAsText(String text) throws IllegalArgumentException {
        if (StringUtils.hasText(text)) {
            try {
                if (text.indexOf(":") == -1 && text.length() == 10) {
                    setValue(DateUtils.date_sdf.get().parse(text));
                } else if (text.indexOf(":") > 0 && text.length() == 19) {
                    setValue(DateUtils.datetimeFormat.get().parse(text));
                } else {
                    throw new IllegalArgumentException("Could not parse date, date format is error ");
                }
            } catch (ParseException ex) {
                IllegalArgumentException iae = new IllegalArgumentException("Could not parse date: " + ex.getMessage());
                iae.initCause(ex);
                throw iae;
            }
        } else {
            setValue(null);
        }
    }
    public static int getYear(Date date) {
        GregorianCalendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        return calendar.get(Calendar.YEAR);
    }
    public static int getMonth(Date date) {
        GregorianCalendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        return calendar.get(Calendar.MONTH)+1;
    }
    //计算两个日期相差天数
    public static int daysBetween(Date smdate, Date bdate) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        smdate = sdf.parse(sdf.format(smdate));
        bdate = sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();
        cal.setTime(smdate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(bdate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(between_days));
    }
    //获取上周的开始时间
    public static Date getBeginDayOfLastWeek() {
        Date date = new Date();
        if (date == null) {
            return null;
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
        if (dayofweek == 1) {
            dayofweek += 7;
        }
        cal.add(Calendar.DATE, 2 - dayofweek - 7);
        return getDayStartTime(cal.getTime());
    }
    //获取上周的结束时间
    public static Date getEndDayOfLastWeek() {
        Calendar cal = Calendar.getInstance();
        cal.setTime(getBeginDayOfLastWeek());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        Date weekEndSta = cal.getTime();
        return getDayEndTime(weekEndSta);
    }
    //获取某个日期的开始时间
    public static Timestamp getDayStartTime(Date d) {
        Calendar calendar = Calendar.getInstance();
        if (null != d) calendar.setTime(d);
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return new Timestamp(calendar.getTimeInMillis());
    }
    //获取某个日期的结束时间
    public static Timestamp getDayEndTime(Date d) {
        Calendar calendar = Calendar.getInstance();
        if (null != d) calendar.setTime(d);
        calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return new Timestamp(calendar.getTimeInMillis());
    }
    public static int getCurYear() {
        Calendar calendar = Calendar.getInstance();
        return calendar.get(Calendar.YEAR);//获得当前的年
    }
    public static int getCurMonth() {
        Calendar calendar = Calendar.getInstance();
        return calendar.get(Calendar.MONTH);//获得当前的月
    }
    public static int getCurWeek() {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
        calendar.setMinimalDaysInFirstWeek(7);//可以不用设置
        calendar.setTimeInMillis(System.currentTimeMillis());//获得当前的时间戳
        int weekYear = calendar.get(Calendar.YEAR);//获得当前的年
        int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);//获得当前日期属于今年的第几周
        return weekOfYear;
    }
    // èŽ·å¾—æœ¬å‘¨ä¸€ä¸Žå½“å‰æ—¥æœŸç›¸å·®çš„å¤©æ•°
    public static int getMondayPlus() {
        Calendar cd = Calendar.getInstance();
        int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
        //由于Calendar提供的都是以星期日作为周一的开始时间
        if (dayOfWeek == 1) {
            return -6;
        } else {
            return 2 - dayOfWeek;
        }
    }
    // èŽ·å¾—å½“å‰å‘¨,周一的日期
    public static Date getCurrentMonday() {
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus);
        Date monday = currentDate.getTime();
        return monday;
    }
    // èŽ·å¾—å½“å‰å‘¨,周日的日期
    public static Date getPreviousSunday() {
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
        Date monday = currentDate.getTime();
        return monday;
    }
    /**
     * èŽ·å–ä¸‹å‘¨ä¸€æ—¶é—´
     */
    public static Date getNextWeekMonday() {
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
        Date monday = currentDate.getTime();
        return monday;
    }
    /**
     * èŽ·å–ä¸‹å‘¨æ—¥æ—¶é—´
     */
    public static Date getNextWeekSunday() {
        int mondayPlus = getMondayPlus();
        GregorianCalendar currentDate = new GregorianCalendar();
        currentDate.add(GregorianCalendar.DATE, mondayPlus + 13);
        Date monday = currentDate.getTime();
        return monday;
    }
    /**
     * ä¸Šå‘¨å¼€å§‹æ—¶é—´string
     *
     * @return
     */
    public static String lastWeekStart() {
        return date2Str(getBeginDayOfLastWeek(), monDayFormat.get());
    }
    /**
     * ä¸Šç»“束时间string
     *
     * @return
     */
    public static String lastWeekEnd() {
        return date2Str(getEndDayOfLastWeek(), monDayFormat.get());
    }
    /**
     * æœ¬å‘¨å¼€å§‹æ—¶é—´string
     *
     * @return
     */
    public static String thisWeekStart() {
        return date2Str(getCurrentMonday(), monDayFormat.get());
    }
    /**
     * æœ¬å‘¨ç»“束时间string
     *
     * @return
     */
    public static String thisWeekEnd() {
        return date2Str(getPreviousSunday(), monDayFormat.get());
    }
    // æ ¹æ®year年的第week周,查询本周的起止时间
    public static Date weekToDayStartDate(int week) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        System.out.println("开始日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        // calendar.add(Calendar.DAY_OF_YEAR, 6);
        // System.out.println("结束日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        return calendar.getTime();
    }
    // æ ¹æ®year年的第week周,查询本周的起止时间
    public static Date weekToDayEndDate(int week) {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        System.out.println("开始日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        calendar.add(Calendar.DAY_OF_YEAR, 6);
        System.out.println("结束日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        return calendar.getTime();
    }
    // æ ¹æ®å½“前年的第week周,查询本周的起止时间
    public static String weekToDayStartStr(int week) {
      /*  Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        // calendar.add(Calendar.DAY_OF_YEAR, 6);
        // System.out.println("结束日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        return new SimpleDateFormat("MM月dd日").format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat("MM月dd日");
        Calendar cal=Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
       return  beginDate;
    }
    public static String weekToDayStartStr(int year,int week) {
      /*  Calendar calendar = Calendar.getInstance();
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        // calendar.add(Calendar.DAY_OF_YEAR, 6);
        // System.out.println("结束日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        return new SimpleDateFormat("MM月dd日").format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat("MM月dd日");
        Calendar cal=Calendar.getInstance();
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return beginDate;
    }
    public static String weekToDayStartStr(int year,int week,String fomat) {
        /*Calendar calendar = Calendar.getInstance();
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        // calendar.add(Calendar.DAY_OF_YEAR, 6);
        // System.out.println("结束日期:" + new SimpleDateFormat("yyyy-MM-dd").format(calendar.getTime()));
        return new SimpleDateFormat(fomat).format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat(fomat);
        Calendar cal=Calendar.getInstance();
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return beginDate;
    }
    // æ ¹æ®year年的第week周,查询本周的起止时间
    public static String weekToDayEndStr(int week) {
       /* Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
        calendar.add(Calendar.DAY_OF_YEAR, 6);
        return new SimpleDateFormat("MM月dd日").format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat("MM月dd日");
        Calendar cal=Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return  endDate;
    }
    public static String weekToDayEndStr(int year,int week) {
   /*     Calendar calendar = Calendar.getInstance();
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
        calendar.add(Calendar.DAY_OF_YEAR, 6);
        return new SimpleDateFormat("MM月dd日").format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat("MM月dd日");
        Calendar cal=Calendar.getInstance();
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return  endDate;
    }
    /**
     *
     * @param year
     * @param week
     * @param format
     * @return
     */
    public static String weekToDayEndStr(int year,int week,String format) {
        /*Calendar calendar = Calendar.getInstance();
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
        calendar.add(Calendar.DAY_OF_YEAR, 6);
        return new SimpleDateFormat(format).format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat(format);
        Calendar cal=Calendar.getInstance();
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return  endDate;
    }
    // æ ¹æ®year的第week周,查询本周属于哪个月
    public static Integer yearweekInMonth(int year, int week) {
        SimpleDateFormat sdf=new SimpleDateFormat("MM");
        Calendar cal=Calendar.getInstance();
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 6);
        String endDate = sdf.format(cal.getTime());
        return  Integer.parseInt(endDate);
    }
    /**
     *
     * @param year
     * @param week
     * @param format
     * @return
     */
    public static String weekToFriDayEndStr(int year,int week,String format) {
        /*Calendar calendar = Calendar.getInstance();
        // â‘ .设置该年份的开始日期:第一个月的第一天
        calendar.set(year, 0, 1);
        // â‘¡.计算出第一周还剩几天:+1是因为1号是1天
        int dayOfWeek = 7 - calendar.get(Calendar.DAY_OF_WEEK) + 2;
        // â‘¢.周数减去第一周再减去要得到的周
        week = week - 2;
        // â‘£.计算起止日期
        calendar.add(Calendar.DAY_OF_YEAR, week * 7 + dayOfWeek);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);//设置星期一为一周开始的第一天
        calendar.add(Calendar.DAY_OF_YEAR, 6);
        return new SimpleDateFormat(format).format(calendar.getTime());*/
        SimpleDateFormat sdf=new SimpleDateFormat(format);
        Calendar cal=Calendar.getInstance();
        // è®¾ç½®æ¯å‘¨çš„开始日期
        cal.setFirstDayOfWeek(Calendar.MONDAY);
        cal.setMinimalDaysInFirstWeek(7);
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.WEEK_OF_YEAR, week);
        cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
        String beginDate = sdf.format(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 4);
        String endDate = sdf.format(cal.getTime());
        return  endDate;
    }
    /**
     * æ ¹æ®æŒ‡å®šæ—¥æœŸèŽ·å–å‘¨
     * @param date
     * @return
     */
    public static Integer getWeekNoByDate(Date date)  {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        calendar.setTime(date);
        //Calendar.MONTH从0开始,12月对应的是数字11
        calendar.setMinimalDaysInFirstWeek(7);
        Integer weekNumbe = calendar.get(Calendar.WEEK_OF_YEAR);
        if (calendar.get(Calendar.MONTH)>=11 && weekNumbe<=1 ){
            weekNumbe +=52;
        }
        return weekNumbe;
    }
    public static Date getTomorrow() {
        // èŽ·å–å½“å‰æ—¶é—´
        Date date = new Date();
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);
        // æŠŠæ—¥æœŸå¾€åŽå¢žåР䏀天,整数  å¾€åŽæŽ¨,负数往前移动
        calendar.add(Calendar.DATE, 1);
        // è¿™ä¸ªæ—¶é—´å°±æ˜¯æ—¥æœŸå¾€åŽæŽ¨ä¸€å¤©çš„结果
        date = calendar.getTime();
        return date;
    }
    /**
     * èŽ·å–æŒ‡å®šæ—¥æœŸæ˜¯æ˜ŸæœŸå‡ 
     * @param date
     * @return
     */
    public static int  getWeekNo(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        return calendar.get(Calendar.DAY_OF_WEEK)-1;
    }
    public static String getWeekInMonth(Date date){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.setFirstDayOfWeek(Calendar.MONDAY);
        //设置第一周所需的最少天数  TODO é‡è¦
        calendar.setMinimalDaysInFirstWeek(7);
        int week = calendar.get(Calendar.WEEK_OF_MONTH);
        int month = calendar.get(Calendar.MONTH)+1;
        int year = calendar.get(Calendar.YEAR);
        return year+"å¹´"+month+"月第"+week+"周";
    }
    public static Integer getWeekInMonth(String str){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = dateFormat.parse(str);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.setFirstDayOfWeek(Calendar.MONDAY);
            int month = calendar.get(Calendar.MONTH)+1;
            if(month==1){
                calendar.setMinimalDaysInFirstWeek(7);
            }
            //设置第一周所需的最少天数  TODO é‡è¦ ç‰¹æ®Šï¼Œè¿™é‡Œæ ¹æ®å•个日期计算一个月有多少周。只用写1
            int week = calendar.get(Calendar.WEEK_OF_MONTH);
            int year = calendar.get(Calendar.YEAR);
            return week;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public static String getWeekInMonth(String str,Integer type){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = null;
        try {
            date = dateFormat.parse(str);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.setFirstDayOfWeek(Calendar.MONDAY);
            //设置第一周所需的最少天数  TODO é‡è¦ ç‰¹æ®Šï¼Œè¿™é‡Œæ ¹æ®å•个日期计算一个月有多少周。只用写1
            calendar.setMinimalDaysInFirstWeek(1);
            int week = calendar.get(Calendar.WEEK_OF_MONTH);
            int month = calendar.get(Calendar.MONTH)+1;
            int year = calendar.get(Calendar.YEAR);
            return year +"å¹´"+ month +"月第" +week+"周";
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    public static Date minusSeconds(int second){
        // èŽ·å–å½“å‰æ—¶é—´
        LocalDateTime currentTime = LocalDateTime.now();
        // å‡åŽ»ä¸€ç§’
        LocalDateTime newTime = currentTime.minusSeconds(second);
        // å°†LocalDateTime转换为Date
        Date currentDate = java.sql.Timestamp.valueOf(newTime);
        return currentDate;
    }
    /**
     * ç§’钟转时分秒
     * @param time ç§’
     * @return æ—¶åˆ†ç§’
     */
    public static   String secToTime(int time) {
        String timeStr = null;
        int hour = 0;
        int minute = 0;
        int second = 0;
        if (time <= 0) return "00分00秒";
        else {
            minute = time / 60;
            if (minute < 60) {
                second = time % 60 ;
                timeStr = unitFormat(minute) + "分" + unitFormat(second) + "秒";
            } else {
                hour = minute / 60;
                //if (hour > 99) return "99时59分59秒";
                minute = minute % 60;
                second = time - hour * 3600 - minute * 60 + 1;
                timeStr = unitFormat(hour) + "时" + unitFormat(minute) + "分" + unitFormat(second) + "秒";
            }
        }
        return timeStr;
    }
    /**
     * ä¿æŒä¸¤ä½æ•°å­—
     * @param i
     * @return
     */
    public static   String unitFormat(int i) {
        String retStr = null;
        if (i >= 0 && i < 10) retStr = "0" + Integer.toString(i);
        else retStr = "" + i;
        return retStr;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package org.jeecg.common.util;
import org.apache.commons.lang3.StringUtils;
public enum DySmsEnum {
    LOGIN_TEMPLATE_CODE("SMS_175435174","JEECG","code"),
    FORGET_PASSWORD_TEMPLATE_CODE("SMS_175435174","JEECG","code"),
    REGISTER_TEMPLATE_CODE("SMS_175430166","JEECG","code"),
    /**会议通知*/
    MEET_NOTICE_TEMPLATE_CODE("SMS_201480469","H5活动之家","username,title,minute,time"),
    /**我的计划通知*/
    PLAN_NOTICE_TEMPLATE_CODE("SMS_201470515","H5活动之家","username,title,time");
    /**
     * çŸ­ä¿¡æ¨¡æ¿ç¼–码
     */
    private String templateCode;
    /**
     * ç­¾å
     */
    private String signName;
    /**
     * çŸ­ä¿¡æ¨¡æ¿å¿…需的数据名称,多个key以逗号分隔,此处配置作为校验
     */
    private String keys;
    private DySmsEnum(String templateCode,String signName,String keys) {
        this.templateCode = templateCode;
        this.signName = signName;
        this.keys = keys;
    }
    public String getTemplateCode() {
        return templateCode;
    }
    public void setTemplateCode(String templateCode) {
        this.templateCode = templateCode;
    }
    public String getSignName() {
        return signName;
    }
    public void setSignName(String signName) {
        this.signName = signName;
    }
    public String getKeys() {
        return keys;
    }
    public void setKeys(String keys) {
        this.keys = keys;
    }
    public static DySmsEnum toEnum(String templateCode) {
        if(StringUtils.isEmpty(templateCode)){
            return null;
        }
        for(DySmsEnum item : DySmsEnum.values()) {
            if(item.getTemplateCode().equals(templateCode)) {
                return item;
            }
        }
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/DySmsHelper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,122 @@
package org.jeecg.common.util;
import org.jeecg.config.StaticConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
/**
 * Created on 17/6/7.
 * çŸ­ä¿¡API产品的DEMO程序,工程中包含了一个SmsDemo类,直接通过
 * æ‰§è¡Œmain函数即可体验短信产品API功能(只需要将AK替换成开通了云通信-短信产品功能的AK即可)
 * å·¥ç¨‹ä¾èµ–了2个jar包(存放在工程的libs目录下)
 * 1:aliyun-java-sdk-core.jar
 * 2:aliyun-java-sdk-dysmsapi.jar
 *
 * å¤‡æ³¨:Demo工程编码采用UTF-8
 * å›½é™…短信发送请勿参照此DEMO
 */
public class DySmsHelper {
    private final static Logger logger=LoggerFactory.getLogger(DySmsHelper.class);
    //产品名称:云通信短信API产品,开发者无需替换
    static final String product = "Dysmsapi";
    //产品域名,开发者无需替换
    static final String domain = "dysmsapi.aliyuncs.com";
    // TODO æ­¤å¤„需要替换成开发者自己的AK(在阿里云访问控制台寻找)
    static  String accessKeyId;
    static  String accessKeySecret;
    public static void setAccessKeyId(String accessKeyId) {
        DySmsHelper.accessKeyId = accessKeyId;
    }
    public static void setAccessKeySecret(String accessKeySecret) {
        DySmsHelper.accessKeySecret = accessKeySecret;
    }
    public static String getAccessKeyId() {
        return accessKeyId;
    }
    public static String getAccessKeySecret() {
        return accessKeySecret;
    }
    public static boolean sendSms(String phone,JSONObject templateParamJson,DySmsEnum dySmsEnum) throws ClientException {
        //可自助调整超时时间
        System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
        System.setProperty("sun.net.client.defaultReadTimeout", "10000");
        //update-begin-author:taoyan date:20200811 for:配置类数据获取
        StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
        setAccessKeyId(staticConfig.getAccessKeyId());
        setAccessKeySecret(staticConfig.getAccessKeySecret());
        //update-end-author:taoyan date:20200811 for:配置类数据获取
        //初始化acsClient,暂不支持region化
        IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);
        DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);
        IAcsClient acsClient = new DefaultAcsClient(profile);
        //验证json参数
        validateParam(templateParamJson,dySmsEnum);
        //组装请求对象-具体描述见控制台-文档部分内容
        SendSmsRequest request = new SendSmsRequest();
        //必填:待发送手机号
        request.setPhoneNumbers(phone);
        //必填:短信签名-可在短信控制台中找到
        request.setSignName(dySmsEnum.getSignName());
        //必填:短信模板-可在短信控制台中找到
        request.setTemplateCode(dySmsEnum.getTemplateCode());
        //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为
        request.setTemplateParam(templateParamJson.toJSONString());
        //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
        //request.setSmsUpExtendCode("90997");
        //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
        //request.setOutId("yourOutId");
        boolean result = false;
        //hint æ­¤å¤„可能会抛出异常,注意catch
        SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);
        logger.info("短信接口返回的数据----------------");
        logger.info("{Code:" + sendSmsResponse.getCode()+",Message:" + sendSmsResponse.getMessage()+",RequestId:"+ sendSmsResponse.getRequestId()+",BizId:"+sendSmsResponse.getBizId()+"}");
        if ("OK".equals(sendSmsResponse.getCode())) {
            result = true;
        }
        return result;
    }
    private static void validateParam(JSONObject templateParamJson,DySmsEnum dySmsEnum) {
        String keys = dySmsEnum.getKeys();
        String [] keyArr = keys.split(",");
        for(String item :keyArr) {
            if(!templateParamJson.containsKey(item)) {
                throw new RuntimeException("模板缺少参数:"+item);
            }
        }
    }
//    public static void main(String[] args) throws ClientException, InterruptedException {
//        JSONObject obj = new JSONObject();
//        obj.put("code", "1234");
//        sendSms("13800138000", obj, DySmsEnum.FORGET_PASSWORD_TEMPLATE_CODE);
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/FillRuleUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package org.jeecg.common.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.handler.IFillRuleHandler;
/**
 * è§„则值自动生成工具类
 *
 * @author qinfeng
 * @举例: è‡ªåŠ¨ç”Ÿæˆè®¢å•å·ï¼›è‡ªåŠ¨ç”Ÿæˆå½“å‰æ—¥æœŸ
 */
@Slf4j
public class FillRuleUtil {
    /**
     * @param ruleCode ruleCode
     * @return
     */
    @SuppressWarnings("unchecked")
    public static Object executeRule(String ruleCode, JSONObject formData) {
        if (!StringUtils.isEmpty(ruleCode)) {
            try {
                // èŽ·å– Service
                ServiceImpl impl = (ServiceImpl) SpringContextUtils.getBean("sysFillRuleServiceImpl");
                // æ ¹æ® ruleCode æŸ¥è¯¢å‡ºå®žä½“
                QueryWrapper queryWrapper = new QueryWrapper();
                queryWrapper.eq("rule_code", ruleCode);
                JSONObject entity = JSON.parseObject(JSON.toJSONString(impl.getOne(queryWrapper)));
                if (entity == null) {
                    log.warn("填值规则:" + ruleCode + " ä¸å­˜åœ¨");
                    return null;
                }
                // èŽ·å–å¿…è¦çš„å‚æ•°
                String ruleClass = entity.getString("ruleClass");
                JSONObject params = entity.getJSONObject("ruleParams");
                if (params == null) {
                    params = new JSONObject();
                }
                if (formData == null) {
                    formData = new JSONObject();
                }
                // é€šè¿‡åå°„执行配置的类里的方法
                IFillRuleHandler ruleHandler = (IFillRuleHandler) Class.forName(ruleClass).newInstance();
                return ruleHandler.execute(params, formData);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HTMLUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package org.jeecg.common.util;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.util.HtmlUtils;
import java.util.Random;
/**
 * HTML å·¥å…·ç±»
 */
public class HTMLUtils {
    /**
     * èŽ·å–HTML内的文本,不包含标签
     *
     * @param html HTML ä»£ç 
     */
    public static String getInnerText(String html) {
        if (StringUtils.isNotBlank(html)) {
            //去掉 html çš„æ ‡ç­¾
            String content = html.replaceAll("</?[^>]+>", "");
            // å°†å¤šä¸ªç©ºæ ¼åˆå¹¶æˆä¸€ä¸ªç©ºæ ¼
            content = content.replaceAll("(&nbsp;)+", "&nbsp;");
            // åå‘转义字符
            content = HtmlUtils.htmlUnescape(content);
            return content.trim();
        }
        return "";
    }
    /**
     * èŽ·å–åå…­è¿›åˆ¶çš„é¢œè‰²ä»£ç .例如  "#6E36B4" , For HTML ,
     *
     * @return String
     */
    public static String getRandColorCode() {
        String r, g, b;
        Random random = new Random();
        r = Integer.toHexString(random.nextInt(256)).toUpperCase();
        g = Integer.toHexString(random.nextInt(256)).toUpperCase();
        b = Integer.toHexString(random.nextInt(256)).toUpperCase();
        r = r.length() == 1 ? "0" + r : r;
        g = g.length() == 1 ? "0" + g : g;
        b = b.length() == 1 ? "0" + b : b;
        return "#" + r + g + b;
    }
    /**
     * @param index
     * @return
     */
    public static String getColor(int index) {
        String colors[] = {"#1890ff", "#05aa87", "#EF5362", "#FE6D4B", "#FFCF47", "#9FD661", "#3FD0AD", "#AC8FEF", "#EE85C1", "#31BDF3"};
        if (index >= colors.length) index = index % 10;
        return colors[index];
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/HolidayUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package org.jeecg.common.util;
import com.nlf.calendar.Holiday;
import com.nlf.calendar.util.HolidayUtil;
import java.util.*;
/**
 * èŠ‚å‡æ—¥å·¥å…·ç±»
 */
public class HolidayUtils {
    public static void main(String[] args) {
        Map<Integer, Integer> holidayWeek = getHolidayWeek(2024);
        System.out.println(holidayWeek);
    }
    /**
     * èŽ·å–æŒ‡å®šå¹´ä»½çš„èŠ‚å‡æ—¥
     * @param year
     * @return
     */
    public static Map<Integer, Integer> getHolidayWeek(int year) {
        //统计一周有几天,一周有5天假期则不计算绩效
        Map<Integer, Integer> weekMap = new HashMap<>();
        List<Holiday> holidays = HolidayUtil.getHolidays(year);
        holidays.forEach(item -> {
            if (item.getName().equals("春节") || item.getName().equals("劳动节") || item.getName().equals("国庆节")) {
                if (item.isWork()) return;
                String day = item.getDay();
                Date date = DateUtils.str2Date(day, DateUtils.date_sdf.get());
                Calendar calendar = Calendar.getInstance();
                calendar.setTime(date);
                int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; // å°†æ˜ŸæœŸæ—¥ä»Ž1映射为0
                Integer weekNoByDate = DateUtils.getWeekNoByDate(date);
//                System.out.println("假期:" + item.getName() + "日期:" + item.getDay());
//                System.out.println("星期 " + dayOfWeek);
//                System.out.println("这一天是一年的第 " + weekNoByDate + " å‘¨");
//                System.out.println("-----------------------");
                //排除周末(统计一周5天都是假期的周号)
                if (dayOfWeek != 6 && dayOfWeek != 0) {
                    if (weekMap.containsKey(weekNoByDate)) {
                        weekMap.put(weekNoByDate, weekMap.get(weekNoByDate) + 1);
                    } else {
                        weekMap.put(weekNoByDate, 1);
                    }
                }
            }
        });
        weekMap.entrySet().removeIf(entry -> entry.getValue() < 5);
        return weekMap;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/IPUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,58 @@
package org.jeecg.common.util;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
 * IP地址
 *
 * @Author scott
 * @email jeecgos@163.com
 * @Date 2019å¹´01月14日
 */
public class IPUtils {
    private static Logger logger = LoggerFactory.getLogger(IPUtils.class);
    /**
     * èŽ·å–IP地址
     *
     * ä½¿ç”¨Nginx等反向代理软件, åˆ™ä¸èƒ½é€šè¿‡request.getRemoteAddr()获取IP地址
     * å¦‚果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
     */
    public static String getIpAddr(HttpServletRequest request) {
        String ip = null;
        try {
            ip = request.getHeader("x-forwarded-for");
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("WL-Proxy-Client-IP");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_CLIENT_IP");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("HTTP_X_FORWARDED_FOR");
            }
            if (StringUtils.isEmpty(ip) || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getRemoteAddr();
            }
        } catch (Exception e) {
            logger.error("IPUtils ERROR ", e);
        }
//        //使用代理,则获取第一个IP地址
//        if(StringUtils.isEmpty(ip) && ip.length() > 15) {
//            if(ip.indexOf(",") > 0) {
//                ip = ip.substring(0, ip.indexOf(","));
//            }
//        }
        return ip;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ImportExcelUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,96 @@
package org.jeecg.common.util;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import java.io.File;
import java.io.IOException;
import java.util.List;
/**
 * å¯¼å‡ºè¿”回信息
 */
@Slf4j
public class ImportExcelUtil {
    public static Result<?> imporReturnRes(int errorLines,int successLines,List<String> errorMessage) throws IOException {
        if (errorLines == 0) {
            return Result.ok("共" + successLines + "行数据全部导入成功!");
        } else {
            JSONObject result = new JSONObject(5);
            int totalCount = successLines + errorLines;
            result.put("totalCount", totalCount);
            result.put("errorCount", errorLines);
            result.put("successCount", successLines);
            result.put("msg", "总上传行数:" + totalCount + ",已导入行数:" + successLines + ",错误行数:" + errorLines);
            String fileUrl = PmsUtil.saveErrorTxtByList(errorMessage, "userImportExcelErrorLog");
            int lastIndex = fileUrl.lastIndexOf(File.separator);
            String fileName = fileUrl.substring(lastIndex + 1);
            result.put("fileUrl", "/sys/common/static/" + fileUrl);
            result.put("fileName", fileName);
            Result res = Result.ok(result);
            res.setCode(201);
            res.setMessage("文件导入成功,但有错误。");
            return res;
        }
    }
    public static List<String> importDateSave(List<?> list, Class serviceClass, List<String> errorMessage, String errorFlag)  {
        IService bean =(IService) SpringContextUtils.getBean(serviceClass);
        for (int i = 0; i < list.size(); i++) {
            try {
                boolean save = bean.save(list.get(i));
                if(!save){
                    throw new Exception(errorFlag);
                }
            } catch (Exception e) {
                String message = e.getMessage().toLowerCase();
                int lineNumber = i + 1;
                // é€šè¿‡ç´¢å¼•名判断出错信息
                if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_ROLE_CODE)) {
                    errorMessage.add("第 " + lineNumber + " è¡Œï¼šè§’色编码已经存在,忽略导入。");
                } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_JOB_CLASS_NAME)) {
                    errorMessage.add("第 " + lineNumber + " è¡Œï¼šä»»åŠ¡ç±»åå·²ç»å­˜åœ¨ï¼Œå¿½ç•¥å¯¼å…¥ã€‚");
                }else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_CODE)) {
                    errorMessage.add("第 " + lineNumber + " è¡Œï¼šèŒåŠ¡ç¼–ç å·²ç»å­˜åœ¨ï¼Œå¿½ç•¥å¯¼å…¥ã€‚");
                }else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_DEPART_ORG_CODE)) {
                    errorMessage.add("第 " + lineNumber + " è¡Œï¼šéƒ¨é—¨ç¼–码已经存在,忽略导入。");
                }else {
                    errorMessage.add("第 " + lineNumber + " è¡Œï¼šæœªçŸ¥é”™è¯¯ï¼Œå¿½ç•¥å¯¼å…¥");
                    log.error(e.getMessage(), e);
                }
            }
        }
        return errorMessage;
    }
    public static List<String> importDateSaveOne(Object obj, Class serviceClass,List<String> errorMessage,int i,String errorFlag)  {
        IService bean =(IService) SpringContextUtils.getBean(serviceClass);
        try {
            boolean save = bean.save(obj);
            if(!save){
                throw new Exception(errorFlag);
            }
        } catch (Exception e) {
            String message = e.getMessage().toLowerCase();
            int lineNumber = i + 1;
            // é€šè¿‡ç´¢å¼•名判断出错信息
            if (message.contains(CommonConstant.SQL_INDEX_UNIQ_SYS_ROLE_CODE)) {
                errorMessage.add("第 " + lineNumber + " è¡Œï¼šè§’色编码已经存在,忽略导入。");
            } else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_JOB_CLASS_NAME)) {
                errorMessage.add("第 " + lineNumber + " è¡Œï¼šä»»åŠ¡ç±»åå·²ç»å­˜åœ¨ï¼Œå¿½ç•¥å¯¼å…¥ã€‚");
            }else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_CODE)) {
                errorMessage.add("第 " + lineNumber + " è¡Œï¼šèŒåŠ¡ç¼–ç å·²ç»å­˜åœ¨ï¼Œå¿½ç•¥å¯¼å…¥ã€‚");
            }else if (message.contains(CommonConstant.SQL_INDEX_UNIQ_DEPART_ORG_CODE)) {
                errorMessage.add("第 " + lineNumber + " è¡Œï¼šéƒ¨é—¨ç¼–码已经存在,忽略导入。");
            }else {
                errorMessage.add("第 " + lineNumber + " è¡Œï¼šæœªçŸ¥é”™è¯¯ï¼Œå¿½ç•¥å¯¼å…¥");
                log.error(e.getMessage(), e);
            }
        }
        return errorMessage;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MD5Util.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package org.jeecg.common.util;
import java.io.File;
import java.io.FileInputStream;
import java.math.BigInteger;
import java.security.MessageDigest;
public class MD5Util {
    public static String byteArrayToHexString(byte b[]) {
        StringBuffer resultSb = new StringBuffer();
        for (int i = 0; i < b.length; i++){
            resultSb.append(byteToHexString(b[i]));
        }
        return resultSb.toString();
    }
    private static String byteToHexString(byte b) {
        int n = b;
        if (n < 0) {
            n += 256;
        }
        int d1 = n / 16;
        int d2 = n % 16;
        return hexDigits[d1] + hexDigits[d2];
    }
    public static String MD5Encode(String origin, String charsetname) {
        String resultString = null;
        try {
            resultString = new String(origin);
            MessageDigest md = MessageDigest.getInstance("MD5");
            if (charsetname == null || "".equals(charsetname)) {
                resultString = byteArrayToHexString(md.digest(resultString.getBytes()));
            } else {
                resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));
            }
        } catch (Exception exception) {
        }
        return resultString;
    }
    private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
            "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
    /**
     * èŽ·å–å•ä¸ªæ–‡ä»¶çš„MD5值!
     * @param file
     * @return
     */
    public static String getFileMD5(File file) {
        if (!file.isFile()){
            return null;
        }
        MessageDigest digest = null;
        FileInputStream in=null;
        byte buffer[] = new byte[1024];
        int len;
        try {
            digest = MessageDigest.getInstance("MD5");
            in = new FileInputStream(file);
            while ((len = in.read(buffer, 0, 1024)) != -1) {
                digest.update(buffer, 0, len);
            }
            in.close();
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        BigInteger bigInt = new BigInteger(1, digest.digest());
        return bigInt.toString(16);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MinioUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,217 @@
package org.jeecg.common.util;
import io.minio.*;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.filter.FileTypeFilter;
import org.jeecg.common.util.filter.StrAttackFilter;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.net.URLDecoder;
/**
 * minio文件上传工具类
 */
@Slf4j
public class MinioUtil {
    private static String minioUrl;
    private static String minioName;
    private static String minioPass;
    private static String bucketName;
    public static void setMinioUrl(String minioUrl) {
        MinioUtil.minioUrl = minioUrl;
    }
    public static void setMinioName(String minioName) {
        MinioUtil.minioName = minioName;
    }
    public static void setMinioPass(String minioPass) {
        MinioUtil.minioPass = minioPass;
    }
    public static void setBucketName(String bucketName) {
        MinioUtil.bucketName = bucketName;
    }
    public static String getMinioUrl() {
        return minioUrl;
    }
    public static String getBucketName() {
        return bucketName;
    }
    private static MinioClient minioClient = null;
    /**
     * ä¸Šä¼ æ–‡ä»¶
     * @param file
     * @return
     */
    public static String upload(MultipartFile file, String bizPath, String customBucket) {
        String file_url = "";
        //update-begin-author:wangshuai date:20201012 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶å¤¹åç‰¹æ®Šå­—符,防止攻击
        bizPath=StrAttackFilter.filter(bizPath);
        //update-end-author:wangshuai date:20201012 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶å¤¹åç‰¹æ®Šå­—符,防止攻击
        String newBucket = bucketName;
        if(oConvertUtils.isNotEmpty(customBucket)){
            newBucket = customBucket;
        }
        try {
            initMinio(minioUrl, minioName,minioPass);
            // æ£€æŸ¥å­˜å‚¨æ¡¶æ˜¯å¦å·²ç»å­˜åœ¨
            if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(newBucket).build())) {
                log.info("Bucket already exists.");
            } else {
                // åˆ›å»ºä¸€ä¸ªåä¸ºota的存储桶
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(newBucket).build());
                log.info("create a new bucket.");
            }
            //update-begin-author:liusq date:20210809 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶ç±»åž‹
            FileTypeFilter.fileTypeFilter(file);
            //update-end-author:liusq date:20210809 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶ç±»åž‹
            InputStream stream = file.getInputStream();
            // èŽ·å–æ–‡ä»¶å
            String orgName = file.getOriginalFilename();
            if("".equals(orgName)){
                orgName=file.getName();
            }
            orgName = CommonUtils.getFileName(orgName);
            String objectName = bizPath+"/"
                                +( orgName.indexOf(".")==-1
                                   ?orgName + "_" + System.currentTimeMillis()
                                   :orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."))
                                 );
            // ä½¿ç”¨putObject上传一个本地文件到存储桶中。
            if(objectName.startsWith("/")){
                objectName = objectName.substring(1);
            }
            PutObjectArgs objectArgs = PutObjectArgs.builder().object(objectName)
                    .bucket(newBucket)
                    .contentType("application/octet-stream")
                    .stream(stream,stream.available(),-1).build();
            minioClient.putObject(objectArgs);
            stream.close();
            file_url = minioUrl+newBucket+"/"+objectName;
        }catch (Exception e){
            log.error(e.getMessage(), e);
        }
        return file_url;
    }
    /**
     * æ–‡ä»¶ä¸Šä¼ 
     * @param file
     * @param bizPath
     * @return
     */
    public static String upload(MultipartFile file, String bizPath) {
        return  upload(file,bizPath,null);
    }
    /**
     * èŽ·å–æ–‡ä»¶æµ
     * @param bucketName
     * @param objectName
     * @return
     */
    public static InputStream getMinioFile(String bucketName,String objectName){
        InputStream inputStream = null;
        try {
            initMinio(minioUrl, minioName, minioPass);
            GetObjectArgs objectArgs = GetObjectArgs.builder().object(objectName)
                    .bucket(bucketName).build();
            inputStream = minioClient.getObject(objectArgs);
        } catch (Exception e) {
            log.info("文件获取失败" + e.getMessage());
        }
        return inputStream;
    }
    /**
     * åˆ é™¤æ–‡ä»¶
     * @param bucketName
     * @param objectName
     * @throws Exception
     */
    public static void removeObject(String bucketName, String objectName) {
        try {
            initMinio(minioUrl, minioName,minioPass);
            RemoveObjectArgs objectArgs = RemoveObjectArgs.builder().object(objectName)
                    .bucket(bucketName).build();
            minioClient.removeObject(objectArgs);
        }catch (Exception e){
            log.info("文件删除失败" + e.getMessage());
        }
    }
    /**
     * èŽ·å–æ–‡ä»¶å¤–é“¾
     * @param bucketName
     * @param objectName
     * @param expires
     * @return
     */
    public static String getObjectURL(String bucketName, String objectName, Integer expires) {
        initMinio(minioUrl, minioName,minioPass);
        try{
            GetPresignedObjectUrlArgs objectArgs = GetPresignedObjectUrlArgs.builder().object(objectName)
                    .bucket(bucketName)
                    .expiry(expires).build();
            String url = minioClient.getPresignedObjectUrl(objectArgs);
            return URLDecoder.decode(url,"UTF-8");
        }catch (Exception e){
            log.info("文件路径获取失败" + e.getMessage());
        }
        return null;
    }
    /**
     * åˆå§‹åŒ–客户端
     * @param minioUrl
     * @param minioName
     * @param minioPass
     * @return
     */
    private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
        if (minioClient == null) {
            try {
                minioClient = MinioClient.builder()
                        .endpoint(minioUrl)
                        .credentials(minioName, minioPass)
                        .build();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return minioClient;
    }
    /**
     * ä¸Šä¼ æ–‡ä»¶åˆ°minio
     * @param stream
     * @param relativePath
     * @return
     */
    public static String upload(InputStream stream,String relativePath) throws Exception {
        initMinio(minioUrl, minioName,minioPass);
        if(minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
            log.info("Bucket already exists.");
        } else {
            // åˆ›å»ºä¸€ä¸ªåä¸ºota的存储桶
            minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
            log.info("create a new bucket.");
        }
        PutObjectArgs objectArgs = PutObjectArgs.builder().object(relativePath)
                .bucket(bucketName)
                .contentType("application/octet-stream")
                .stream(stream,stream.available(),-1).build();
        minioClient.putObject(objectArgs);
        stream.close();
        return minioUrl+bucketName+"/"+relativePath;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/MyClassLoader.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package org.jeecg.common.util;
/**
 * @Author  å¼ ä»£æµ©
 */
public class MyClassLoader extends ClassLoader {
    public static Class getClassByScn(String className) {
        Class myclass = null;
        try {
            myclass = Class.forName(className);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            throw new RuntimeException(className+" not found!");
        }
        return myclass;
    }
    // èŽ·å¾—ç±»çš„å…¨åï¼ŒåŒ…æ‹¬åŒ…å
    public static String getPackPath(Object object) {
        // æ£€æŸ¥ç”¨æˆ·ä¼ å…¥çš„参数是否为空
        if (object == null) {
            throw new java.lang.IllegalArgumentException("参数不能为空!");
        }
        // èŽ·å¾—ç±»çš„å…¨åï¼ŒåŒ…æ‹¬åŒ…å
        String clsName = object.getClass().getName();
        return clsName;
    }
    public static String getAppPath(Class cls) {
        // æ£€æŸ¥ç”¨æˆ·ä¼ å…¥çš„参数是否为空
        if (cls == null) {
            throw new java.lang.IllegalArgumentException("参数不能为空!");
        }
        ClassLoader loader = cls.getClassLoader();
        // èŽ·å¾—ç±»çš„å…¨åï¼ŒåŒ…æ‹¬åŒ…å
        String clsName = cls.getName() + ".class";
        // èŽ·å¾—ä¼ å…¥å‚æ•°æ‰€åœ¨çš„åŒ…
        Package pack = cls.getPackage();
        String path = "";
        // å¦‚果不是匿名包,将包名转化为路径
        if (pack != null) {
            String packName = pack.getName();
            // æ­¤å¤„简单判定是否是Java基础类库,防止用户传入JDK内置的类库
            if (packName.startsWith("java.") || packName.startsWith("javax.")) {
                throw new java.lang.IllegalArgumentException("不要传送系统类!");
            }
            // åœ¨ç±»çš„名称中,去掉包名的部分,获得类的文件名
            clsName = clsName.substring(packName.length() + 1);
            // åˆ¤å®šåŒ…名是否是简单包名,如果是,则直接将包名转换为路径,
            if (packName.indexOf(".") < 0) {
                path = packName + "/";
            } else {// å¦åˆ™æŒ‰ç…§åŒ…名的组成部分,将包名转换为路径
                int start = 0, end = 0;
                end = packName.indexOf(".");
                while (end != -1) {
                    path = path + packName.substring(start, end) + "/";
                    start = end + 1;
                    end = packName.indexOf(".", start);
                }
                path = path + packName.substring(start) + "/";
            }
        }
        // è°ƒç”¨ClassLoader的getResource方法,传入包含路径信息的类文件名
        java.net.URL url = loader.getResource(path + clsName);
        // ä»ŽURL对象中获取路径信息
        String realPath = url.getPath();
        // åŽ»æŽ‰è·¯å¾„ä¿¡æ¯ä¸­çš„åè®®å"file:"
        int pos = realPath.indexOf("file:");
        if (pos > -1) {
            realPath = realPath.substring(pos + 5);
        }
        // åŽ»æŽ‰è·¯å¾„ä¿¡æ¯æœ€åŽåŒ…å«ç±»æ–‡ä»¶ä¿¡æ¯çš„éƒ¨åˆ†ï¼Œå¾—åˆ°ç±»æ‰€åœ¨çš„è·¯å¾„
        pos = realPath.indexOf(path + clsName);
        realPath = realPath.substring(0, pos - 1);
        // å¦‚果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名
        if (realPath.endsWith("!")) {
            realPath = realPath.substring(0, realPath.lastIndexOf("/"));
        }
        /*------------------------------------------------------------
         ClassLoader的getResource方法使用了utf-8对路径信息进行了编码,当路径
          ä¸­å­˜åœ¨ä¸­æ–‡å’Œç©ºæ ¼æ—¶ï¼Œä»–会对这些字符进行转换,这样,得到的往往不是我们想要
          çš„真实路径,在此,调用了URLDecoder的decode方法进行解码,以便得到原始的
          ä¸­æ–‡åŠç©ºæ ¼è·¯å¾„
        -------------------------------------------------------------*/
        try {
            realPath = java.net.URLDecoder.decode(realPath, "utf-8");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return realPath;
    }// getAppPath定义结束
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PasswordUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,180 @@
package org.jeecg.common.util;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec;
public class PasswordUtil {
    /**
     * JAVA6支持以下任意一种算法 PBEWITHMD5ANDDES PBEWITHMD5ANDTRIPLEDES
     * PBEWITHSHAANDDESEDE PBEWITHSHA1ANDRC2_40 PBKDF2WITHHMACSHA1
     * */
    /**
     * å®šä¹‰ä½¿ç”¨çš„算法为:PBEWITHMD5andDES算法
     */
    public static final String ALGORITHM = "PBEWithMD5AndDES";//加密算法
    public static final String Salt = "63293188";//密钥
    /**
     * å®šä¹‰è¿­ä»£æ¬¡æ•°ä¸º1000次
     */
    private static final int ITERATIONCOUNT = 1000;
    /**
     * èŽ·å–åŠ å¯†ç®—æ³•ä¸­ä½¿ç”¨çš„ç›å€¼,解密中使用的盐值必须与加密中使用的相同才能完成操作. ç›é•¿åº¦å¿…须为8字节
     *
     * @return byte[] ç›å€¼
     * */
    public static byte[] getSalt() throws Exception {
        // å®žä¾‹åŒ–安全随机数
        SecureRandom random = new SecureRandom();
        // äº§å‡ºç›
        return random.generateSeed(8);
    }
    public static byte[] getStaticSalt() {
        // äº§å‡ºç›
        return Salt.getBytes();
    }
    /**
     * æ ¹æ®PBE密码生成一把密钥
     *
     * @param password
     *            ç”Ÿæˆå¯†é’¥æ—¶æ‰€ä½¿ç”¨çš„密码
     * @return Key PBE算法密钥
     * */
    private static Key getPBEKey(String password) {
        // å®žä¾‹åŒ–使用的算法
        SecretKeyFactory keyFactory;
        SecretKey secretKey = null;
        try {
            keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
            // è®¾ç½®PBE密钥参数
            PBEKeySpec keySpec = new PBEKeySpec(password.toCharArray());
            // ç”Ÿæˆå¯†é’¥
            secretKey = keyFactory.generateSecret(keySpec);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return secretKey;
    }
    /**
     * åŠ å¯†æ˜Žæ–‡å­—ç¬¦ä¸²
     *
     * @param plaintext
     *            å¾…加密的明文字符串
     * @param password
     *            ç”Ÿæˆå¯†é’¥æ—¶æ‰€ä½¿ç”¨çš„密码
     * @param salt
     *            ç›å€¼
     * @return åŠ å¯†åŽçš„å¯†æ–‡å­—ç¬¦ä¸²
     * @throws Exception
     */
    public static String encrypt(String plaintext, String password, String salt) {
        Key key = getPBEKey(password);
        byte[] encipheredData = null;
        PBEParameterSpec parameterSpec = new PBEParameterSpec(salt.getBytes(), ITERATIONCOUNT);
        try {
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.ENCRYPT_MODE, key, parameterSpec);
            //update-begin-author:sccott date:20180815 for:中文作为用户名时,加密的密码windows和linux会得到不同的结果 gitee/issues/IZUD7
            encipheredData = cipher.doFinal(plaintext.getBytes("utf-8"));
            //update-end-author:sccott date:20180815 for:中文作为用户名时,加密的密码windows和linux会得到不同的结果 gitee/issues/IZUD7
        } catch (Exception e) {
        }
        return bytesToHexString(encipheredData);
    }
    /**
     * è§£å¯†å¯†æ–‡å­—符串
     *
     * @param ciphertext
     *            å¾…解密的密文字符串
     * @param password
     *            ç”Ÿæˆå¯†é’¥æ—¶æ‰€ä½¿ç”¨çš„密码(如需解密,该参数需要与加密时使用的一致)
     * @param salt
     *            ç›å€¼(如需解密,该参数需要与加密时使用的一致)
     * @return è§£å¯†åŽçš„æ˜Žæ–‡å­—符串
     * @throws Exception
     */
    public static String decrypt(String ciphertext, String password, String salt) {
        Key key = getPBEKey(password);
        byte[] passDec = null;
        PBEParameterSpec parameterSpec = new PBEParameterSpec(salt.getBytes(), ITERATIONCOUNT);
        try {
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            cipher.init(Cipher.DECRYPT_MODE, key, parameterSpec);
            passDec = cipher.doFinal(hexStringToBytes(ciphertext));
        }
        catch (Exception e) {
            // TODO: handle exception
        }
        return new String(passDec);
    }
    /**
     * å°†å­—节数组转换为十六进制字符串
     *
     * @param src
     *            å­—节数组
     * @return
     */
    public static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
    /**
     * å°†åå…­è¿›åˆ¶å­—符串转换为字节数组
     *
     * @param hexString
     *            åå…­è¿›åˆ¶å­—符串
     * @return
     */
    public static byte[] hexStringToBytes(String hexString) {
        if (hexString == null || hexString.equals("")) {
            return null;
        }
        hexString = hexString.toUpperCase();
        int length = hexString.length() / 2;
        char[] hexChars = hexString.toCharArray();
        byte[] d = new byte[length];
        for (int i = 0; i < length; i++) {
            int pos = i * 2;
            d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
        }
        return d;
    }
    private static byte charToByte(char c) {
        return (byte) "0123456789ABCDEF".indexOf(c);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PathMatcherUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
package org.jeecg.common.util;
import java.util.Collection;
import java.util.Map;
import org.springframework.util.AntPathMatcher;
/**
 * ä½¿ç”¨Spring自身提供的地址匹配工具匹配URL
 */
public class PathMatcherUtil {
    public static void main(String[] args) {
        String url = "/sys/dict/loadDictOrderByValue/tree,s2,2";
        String p = "/sys/dict/loadDictOrderByValue/*";
        System.out.println(PathMatcherUtil.match(p,url));
    }
    /**
     * å®žé™…验证路径匹配权限
     *
     * @param matchPath æƒé™url
     * @param path      è®¿é—®è·¯å¾„
     * @return æ˜¯å¦æ‹¥æœ‰æƒé™
     */
    public static boolean match(String matchPath, String path) {
        SpringAntMatcher springAntMatcher = new SpringAntMatcher(matchPath, true);
        return springAntMatcher.matches(path);
    }
    /**
     * å®žé™…验证路径匹配权限
     *
     * @param list æƒé™url
     * @param path è®¿é—®è·¯å¾„
     * @return æ˜¯å¦æ‹¥æœ‰æƒé™
     */
    public static boolean matches(Collection<String> list, String path) {
        for (String s : list) {
            SpringAntMatcher springAntMatcher = new SpringAntMatcher(s, true);
            if (springAntMatcher.matches(path)) {
                return true;
            }
        }
        return false;
    }
    /**
     * åœ°å€è¡¨è¾¾å¼åŒ¹é…å·¥å…·
     */
    private static class SpringAntMatcher implements Matcher {
        private final AntPathMatcher antMatcher;
        private final String pattern;
        private SpringAntMatcher(String pattern, boolean caseSensitive) {
            this.pattern = pattern;
            this.antMatcher = createMatcher(caseSensitive);
        }
        @Override
        public boolean matches(String path) {
            return this.antMatcher.match(this.pattern, path);
        }
        @Override
        public Map<String, String> extractUriTemplateVariables(String path) {
            return this.antMatcher.extractUriTemplateVariables(this.pattern, path);
        }
        private static AntPathMatcher createMatcher(boolean caseSensitive) {
            AntPathMatcher matcher = new AntPathMatcher();
            matcher.setTrimTokens(false);
            matcher.setCaseSensitive(caseSensitive);
            return matcher;
        }
    }
    private interface Matcher {
        boolean matches(String var1);
        Map<String, String> extractUriTemplateVariables(String var1);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/PmsUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,61 @@
package org.jeecg.common.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.util.Date;
import java.util.List;
@Slf4j
@Component
public class PmsUtil {
    private static String uploadPath;
    @Value("${jeecg.path.upload}")
    public void setUploadPath(String uploadPath) {
        PmsUtil.uploadPath = uploadPath;
    }
    public static String saveErrorTxtByList(List<String> msg, String name) {
        Date d = new Date();
        String saveDir = "logs" + File.separator + DateUtils.yyyyMMdd.get().format(d) + File.separator;
        String saveFullDir = uploadPath + File.separator + saveDir;
        File saveFile = new File(saveFullDir);
        if (!saveFile.exists()) {
            saveFile.mkdirs();
        }
        name += DateUtils.yyyymmddhhmmss.get().format(d) + Math.round(Math.random() * 10000);
        String saveFilePath = saveFullDir + name + ".txt";
        try {
            //封装目的地
            BufferedWriter bw = new BufferedWriter(new FileWriter(saveFilePath));
            //遍历集合
            for (String s : msg) {
                //写数据
                if (s.indexOf("_") > 0) {
                    String arr[] = s.split("_");
                    bw.write("第" + arr[0] + "行:" + arr[1]);
                } else {
                    bw.write(s);
                }
                //bw.newLine();
                bw.write("\r\n");
            }
            //释放资源
            bw.flush();
            bw.close();
        } catch (Exception e) {
            log.info("excel导入生成错误日志文件异常:" + e.getMessage());
        }
        return saveDir + name + ".txt";
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/ReflectHelper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,255 @@
package org.jeecg.common.util;
import lombok.extern.slf4j.Slf4j;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.*;
import java.util.Map.Entry;
import java.util.regex.Pattern;
/**
 * @author å¼ ä»£æµ©
 * @desc é€šè¿‡åå°„来动态调用get å’Œ set æ–¹æ³•
 */
@Slf4j
public class ReflectHelper {
    private Class cls;
    /**
     * ä¼ è¿‡æ¥çš„对象
     */
    private Object obj;
    /**
     * å­˜æ”¾get方法
     */
    private Hashtable<String, Method> getMethods = null;
    /**
     * å­˜æ”¾set方法
     */
    private Hashtable<String, Method> setMethods = null;
    /**
     * å®šä¹‰æž„造方法 -- ä¸€èˆ¬æ¥è¯´æ˜¯ä¸ªpojo
     *
     * @param o ç›®æ ‡å¯¹è±¡
     */
    public ReflectHelper(Object o) {
        obj = o;
        initMethods();
    }
    /**
     * @desc åˆå§‹åŒ–
     */
    public void initMethods() {
        getMethods = new Hashtable<String, Method>();
        setMethods = new Hashtable<String, Method>();
        cls = obj.getClass();
        Method[] methods = cls.getMethods();
        // å®šä¹‰æ­£åˆ™è¡¨è¾¾å¼ï¼Œä»Žæ–¹æ³•中过滤出getter / setter å‡½æ•°.
        String gs = "get(\\w+)";
        Pattern getM = Pattern.compile(gs);
        String ss = "set(\\w+)";
        Pattern setM = Pattern.compile(ss);
        // æŠŠæ–¹æ³•中的"set" æˆ–者 "get" åŽ»æŽ‰
        String rapl = "$1";
        String param;
        for (int i = 0; i < methods.length; ++i) {
            Method m = methods[i];
            String methodName = m.getName();
            if (Pattern.matches(gs, methodName)) {
                param = getM.matcher(methodName).replaceAll(rapl).toLowerCase();
                getMethods.put(param, m);
            } else if (Pattern.matches(ss, methodName)) {
                param = setM.matcher(methodName).replaceAll(rapl).toLowerCase();
                setMethods.put(param, m);
            } else {
                // logger.info(methodName + " ä¸æ˜¯getter,setter方法!");
            }
        }
    }
    /**
     * @desc è°ƒç”¨set方法
     */
    public boolean setMethodValue(String property, Object object) {
        Method m = setMethods.get(property.toLowerCase());
        if (m != null) {
            try {
                // è°ƒç”¨ç›®æ ‡ç±»çš„setter函数
                m.invoke(obj, object);
                return true;
            } catch (Exception ex) {
                log.info("invoke getter on " + property + " error: " + ex.toString());
                return false;
            }
        }
        return false;
    }
    /**
     * @desc è°ƒç”¨set方法
     */
    public Object getMethodValue(String property) {
        Object value = null;
        Method m = getMethods.get(property.toLowerCase());
        if (m != null) {
            try {
                /*
                 * è°ƒç”¨obj类的setter函数
                 */
                value = m.invoke(obj, new Object[]{});
            } catch (Exception ex) {
                log.info("invoke getter on " + property + " error: " + ex.toString());
            }
        }
        return value;
    }
    /**
     * æŠŠmap中的内容全部注入到obj中
     *
     * @param data
     * @return
     */
    public Object setAll(Map<String, Object> data) {
        if (data == null || data.keySet().size() <= 0) {
            return null;
        }
        for (Entry<String, Object> entry : data.entrySet()) {
            this.setMethodValue(entry.getKey(), entry.getValue());
        }
        return obj;
    }
    /**
     * æŠŠmap中的内容全部注入到obj中
     *
     * @param o
     * @param data
     * @return
     */
    public static Object setAll(Object o, Map<String, Object> data) {
        ReflectHelper reflectHelper = new ReflectHelper(o);
        reflectHelper.setAll(data);
        return o;
    }
    /**
     * æŠŠmap中的内容全部注入到新实例中
     *
     * @param clazz
     * @param data
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> T setAll(Class<T> clazz, Map<String, Object> data) {
        T o = null;
        try {
            o = clazz.newInstance();
        } catch (Exception e) {
            e.printStackTrace();
            o = null;
            return o;
        }
        return (T) setAll(o, data);
    }
    /**
     * æ ¹æ®ä¼ å…¥çš„class将mapList转换为实体类list
     *
     * @param mapist
     * @param clazz
     * @return
     */
    public static <T> List<T> transList2Entrys(List<Map<String, Object>> mapist, Class<T> clazz) {
        List<T> list = new ArrayList<T>();
        if (mapist != null && mapist.size() > 0) {
            for (Map<String, Object> data : mapist) {
                list.add(ReflectHelper.setAll(clazz, data));
            }
        }
        return list;
    }
    /**
     * æ ¹æ®å±žæ€§åèŽ·å–å±žæ€§å€¼
     */
    public static Object getFieldValueByName(String fieldName, Object o) {
        try {
            String firstLetter = fieldName.substring(0, 1).toUpperCase();
            String getter = "get" + firstLetter + fieldName.substring(1);
            Method method = o.getClass().getMethod(getter, new Class[]{});
            Object value = method.invoke(o, new Object[]{});
            return value;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * èŽ·å–å±žæ€§å€¼
     */
    public static Object getFieldVal(String fieldName, Object o) {
        try {
            // æš´åŠ›åå°„èŽ·å–å±žæ€§
            Field filed = o.getClass().getDeclaredField(fieldName);
            // è®¾ç½®åå°„时取消Java的访问检查,暴力访问
            filed.setAccessible(true);
            Object val = filed.get(o);
            return val;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * èŽ·å–å±žæ€§åæ•°ç»„
     */
    public static String[] getFiledName(Object o) {
        Field[] fields = o.getClass().getDeclaredFields();
        String[] fieldNames = new String[fields.length];
        for (int i = 0; i < fields.length; i++) {
            //log.info(fields[i].getType());
            fieldNames[i] = fields[i].getName();
        }
        return fieldNames;
    }
    /**
     * èŽ·å–å±žæ€§ç±»åž‹(type),属性名(name),属性值(value)的map组成的list
     */
    public static List<Map> getFiledsInfo(Object o) {
        Field[] fields = o.getClass().getDeclaredFields();
        String[] fieldNames = new String[fields.length];
        List<Map> list = new ArrayList<Map>();
        Map<String, Object> infoMap = null;
        for (int i = 0; i < fields.length; i++) {
            infoMap = new HashMap<String, Object>();
            infoMap.put("type", fields[i].getType().toString());
            infoMap.put("name", fields[i].getName());
            infoMap.put("value", getFieldValueByName(fields[i].getName(), o));
            list.add(infoMap);
        }
        return list;
    }
    /**
     * èŽ·å–å¯¹è±¡çš„æ‰€æœ‰å±žæ€§å€¼ï¼Œè¿”å›žä¸€ä¸ªå¯¹è±¡æ•°ç»„
     */
    public static Object[] getFiledValues(Object o) {
        String[] fieldNames = getFiledName(o);
        Object[] value = new Object[fieldNames.length];
        for (int i = 0; i < fieldNames.length; i++) {
            value[i] = getFieldValueByName(fieldNames[i], o);
        }
        return value;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestDesformUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
package org.jeecg.common.util;
import com.alibaba.fastjson.JSONObject;
import org.jeecg.common.api.vo.Result;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
/**
 * é€šè¿‡ RESTful é£Žæ ¼çš„æŽ¥å£æ“çºµ desform é‡Œçš„æ•°æ®
 *
 * @author sunjianlei
 */
public class RestDesformUtil {
    private static String domain = null;
    private static String path = null;
    static {
        domain = SpringContextUtils.getDomain();
        path = oConvertUtils.getString(SpringContextUtils.getApplicationContext().getEnvironment().getProperty("server.servlet.context-path"));
    }
    /**
     * æŸ¥è¯¢æ•°æ®
     *
     * @param desformCode
     * @param dataId
     * @param token
     * @return
     */
    public static Result queryOne(String desformCode, String dataId, String token) {
        String url = getBaseUrl(desformCode, dataId).toString();
        HttpHeaders headers = getHeaders(token);
        ResponseEntity<JSONObject> result = RestUtil.request(url, HttpMethod.GET, headers, null, null, JSONObject.class);
        return packageReturn(result);
    }
    /**
     * æ–°å¢žæ•°æ®
     *
     * @param desformCode
     * @param formData
     * @param token
     * @return
     */
    public static Result addOne(String desformCode, JSONObject formData, String token) {
        return addOrEditOne(desformCode, formData, token, HttpMethod.POST);
    }
    /**
     * ä¿®æ”¹æ•°æ®
     *
     * @param desformCode
     * @param formData
     * @param token
     * @return
     */
    public static Result editOne(String desformCode, JSONObject formData, String token) {
        return addOrEditOne(desformCode, formData, token, HttpMethod.PUT);
    }
    private static Result addOrEditOne(String desformCode, JSONObject formData, String token, HttpMethod method) {
        String url = getBaseUrl(desformCode).toString();
        HttpHeaders headers = getHeaders(token);
        ResponseEntity<JSONObject> result = RestUtil.request(url, method, headers, null, formData, JSONObject.class);
        return packageReturn(result);
    }
    /**
     * åˆ é™¤æ•°æ®
     *
     * @param desformCode
     * @param dataId
     * @param token
     * @return
     */
    public static Result removeOne(String desformCode, String dataId, String token) {
        String url = getBaseUrl(desformCode, dataId).toString();
        HttpHeaders headers = getHeaders(token);
        ResponseEntity<JSONObject> result = RestUtil.request(url, HttpMethod.DELETE, headers, null, null, JSONObject.class);
        return packageReturn(result);
    }
    private static Result packageReturn(ResponseEntity<JSONObject> result) {
        if (result.getBody() != null) {
            return result.getBody().toJavaObject(Result.class);
        }
        return Result.error("操作失败");
    }
    private static StringBuilder getBaseUrl() {
        StringBuilder builder = new StringBuilder(domain).append(path);
        builder.append("/desform/api");
        return builder;
    }
    private static StringBuilder getBaseUrl(String desformCode, String dataId) {
        StringBuilder builder = getBaseUrl();
        builder.append("/").append(desformCode);
        if (dataId != null) {
            builder.append("/").append(dataId);
        }
        return builder;
    }
    private static StringBuilder getBaseUrl(String desformCode) {
        return getBaseUrl(desformCode, null);
    }
    private static HttpHeaders getHeaders(String token) {
        HttpHeaders headers = new HttpHeaders();
        String mediaType = MediaType.APPLICATION_JSON_UTF8_VALUE;
        headers.setContentType(MediaType.parseMediaType(mediaType));
        headers.set("Accept", mediaType);
        headers.set("X-Access-Token", token);
        return headers;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/RestUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,263 @@
package org.jeecg.common.util;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.http.*;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.web.client.RestTemplate;
import java.nio.charset.StandardCharsets;
import java.util.Iterator;
import java.util.Map;
/**
 * è°ƒç”¨ Restful æŽ¥å£ Util
 *
 * @author sunjianlei
 */
@Slf4j
public class RestUtil {
    private static String domain = null;
    public static String getDomain() {
        if (domain == null) {
            domain = SpringContextUtils.getDomain();
            // issues/2959
            // å¾®æœåŠ¡ç‰ˆé›†æˆä¼ä¸šå¾®ä¿¡å•ç‚¹ç™»å½•
            // å› ä¸ºå¾®æœåŠ¡ç‰ˆæ²¡æœ‰ç«¯å£å·ï¼Œå¯¼è‡´ SpringContextUtils.getDomain() æ–¹æ³•获取的域名的端口号变成了:-1所以出问题了,只需要把这个-1给去掉就可以了。
            if (domain.endsWith(":-1")) {
                domain = domain.substring(0, domain.length() - 3);
            }
        }
        return domain;
    }
    public static String path = null;
    public static String getPath() {
        if (path == null) {
            path = SpringContextUtils.getApplicationContext().getEnvironment().getProperty("server.servlet.context-path");
        }
        return oConvertUtils.getString(path);
    }
    public static String getBaseUrl() {
        String basepath = getDomain() + getPath();
        log.info(" RestUtil.getBaseUrl: " + basepath);
        return basepath;
    }
    /**
     * RestAPI è°ƒç”¨å™¨
     */
    private final static RestTemplate RT;
    static {
        SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory();
        requestFactory.setConnectTimeout(3000);
        requestFactory.setReadTimeout(3000);
        RT = new RestTemplate(requestFactory);
        // è§£å†³ä¹±ç é—®é¢˜
        RT.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8));
    }
    public static RestTemplate getRestTemplate() {
        return RT;
    }
    /**
     * å‘送 get è¯·æ±‚
     */
    public static JSONObject get(String url) {
        return getNative(url, null, null).getBody();
    }
    /**
     * å‘送 get è¯·æ±‚
     */
    public static JSONObject get(String url, JSONObject variables) {
        return getNative(url, variables, null).getBody();
    }
    /**
     * å‘送 get è¯·æ±‚
     */
    public static JSONObject get(String url, JSONObject variables, JSONObject params) {
        return getNative(url, variables, params).getBody();
    }
    /**
     * å‘送 get è¯·æ±‚,返回原生 ResponseEntity å¯¹è±¡
     */
    public static ResponseEntity<JSONObject> getNative(String url, JSONObject variables, JSONObject params) {
        return request(url, HttpMethod.GET, variables, params);
    }
    /**
     * å‘送 Post è¯·æ±‚
     */
    public static JSONObject post(String url) {
        return postNative(url, null, null).getBody();
    }
    /**
     * å‘送 Post è¯·æ±‚
     */
    public static JSONObject post(String url, JSONObject params) {
        return postNative(url, null, params).getBody();
    }
    /**
     * å‘送 Post è¯·æ±‚
     */
    public static JSONObject post(String url, JSONObject variables, JSONObject params) {
        return postNative(url, variables, params).getBody();
    }
    /**
     * å‘送 POST è¯·æ±‚,返回原生 ResponseEntity å¯¹è±¡
     */
    public static ResponseEntity<JSONObject> postNative(String url, JSONObject variables, JSONObject params) {
        return request(url, HttpMethod.POST, variables, params);
    }
    /**
     * å‘送 put è¯·æ±‚
     */
    public static JSONObject put(String url) {
        return putNative(url, null, null).getBody();
    }
    /**
     * å‘送 put è¯·æ±‚
     */
    public static JSONObject put(String url, JSONObject params) {
        return putNative(url, null, params).getBody();
    }
    /**
     * å‘送 put è¯·æ±‚
     */
    public static JSONObject put(String url, JSONObject variables, JSONObject params) {
        return putNative(url, variables, params).getBody();
    }
    /**
     * å‘送 put è¯·æ±‚,返回原生 ResponseEntity å¯¹è±¡
     */
    public static ResponseEntity<JSONObject> putNative(String url, JSONObject variables, JSONObject params) {
        return request(url, HttpMethod.PUT, variables, params);
    }
    /**
     * å‘送 delete è¯·æ±‚
     */
    public static JSONObject delete(String url) {
        return deleteNative(url, null, null).getBody();
    }
    /**
     * å‘送 delete è¯·æ±‚
     */
    public static JSONObject delete(String url, JSONObject variables, JSONObject params) {
        return deleteNative(url, variables, params).getBody();
    }
    /**
     * å‘送 delete è¯·æ±‚,返回原生 ResponseEntity å¯¹è±¡
     */
    public static ResponseEntity<JSONObject> deleteNative(String url, JSONObject variables, JSONObject params) {
        return request(url, HttpMethod.DELETE, null, variables, params, JSONObject.class);
    }
    /**
     * å‘送请求
     */
    public static ResponseEntity<JSONObject> request(String url, HttpMethod method, JSONObject variables, JSONObject params) {
        return request(url, method, getHeaderApplicationJson(), variables, params, JSONObject.class);
    }
    /**
     * å‘送请求
     *
     * @param url          è¯·æ±‚地址
     * @param method       è¯·æ±‚方式
     * @param headers      è¯·æ±‚头  å¯ç©º
     * @param variables    è¯·æ±‚url参数 å¯ç©º
     * @param params       è¯·æ±‚body参数 å¯ç©º
     * @param responseType è¿”回类型
     * @return ResponseEntity<responseType>
     */
    public static <T> ResponseEntity<T> request(String url, HttpMethod method, HttpHeaders headers, JSONObject variables, Object params, Class<T> responseType) {
        log.info(" RestUtil  --- request ---  url = "+ url);
        if (StringUtils.isEmpty(url)) {
            throw new RuntimeException("url ä¸èƒ½ä¸ºç©º");
        }
        if (method == null) {
            throw new RuntimeException("method ä¸èƒ½ä¸ºç©º");
        }
        if (headers == null) {
            headers = new HttpHeaders();
        }
        // è¯·æ±‚体
        String body = "";
        if (params != null) {
            if (params instanceof JSONObject) {
                body = ((JSONObject) params).toJSONString();
            } else {
                body = params.toString();
            }
        }
        // æ‹¼æŽ¥ url å‚æ•°
        if (variables != null) {
            url += ("?" + asUrlVariables(variables));
        }
        // å‘送请求
        HttpEntity<String> request = new HttpEntity<>(body, headers);
        return RT.exchange(url, method, request, responseType);
    }
    /**
     * èŽ·å–JSON请求头
     */
    public static HttpHeaders getHeaderApplicationJson() {
        return getHeader(MediaType.APPLICATION_JSON_UTF8_VALUE);
    }
    /**
     * èŽ·å–è¯·æ±‚å¤´
     */
    public static HttpHeaders getHeader(String mediaType) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.parseMediaType(mediaType));
        headers.add("Accept", mediaType);
        return headers;
    }
    /**
     * å°† JSONObject è½¬ä¸º a=1&b=2&c=3...&n=n çš„形式
     */
    public static String asUrlVariables(JSONObject variables) {
        Map<String, Object> source = variables.getInnerMap();
        Iterator<String> it = source.keySet().iterator();
        StringBuilder urlVariables = new StringBuilder();
        while (it.hasNext()) {
            String key = it.next();
            String value = "";
            Object object = source.get(key);
            if (object != null) {
                if (!StringUtils.isEmpty(object.toString())) {
                    value = object.toString();
                }
            }
            urlVariables.append("&").append(key).append("=").append(value);
        }
        // åŽ»æŽ‰ç¬¬ä¸€ä¸ª&
        return urlVariables.substring(1);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SpringContextUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package org.jeecg.common.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.constant.ServiceNameConstants;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@Component
public class SpringContextUtils implements ApplicationContextAware {
    /**
     * ä¸Šä¸‹æ–‡å¯¹è±¡å®žä¾‹
     */
    private static ApplicationContext applicationContext;
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        SpringContextUtils.applicationContext = applicationContext;
    }
    /**
     * èŽ·å–applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
    /**
      * èŽ·å–HttpServletRequest
     */
    public static HttpServletRequest getHttpServletRequest() {
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
    }
    /**
     * èŽ·å–HttpServletResponse
     */
    public static HttpServletResponse getHttpServletResponse() {
        return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
    }
    /**
    *  èŽ·å–é¡¹ç›®æ ¹è·¯å¾„ basePath
    */
    public static String getDomain(){
        HttpServletRequest request = getHttpServletRequest();
        StringBuffer url = request.getRequestURL();
        //微服务情况下,获取gateway的basePath
        String basePath = request.getHeader(ServiceNameConstants.X_GATEWAY_BASE_PATH);
        if(oConvertUtils.isNotEmpty(basePath)){
            return basePath;
        }else{
            return url.delete(url.length() - request.getRequestURI().length(), url.length()).toString();
        }
    }
    public static String getOrigin(){
        HttpServletRequest request = getHttpServletRequest();
        return request.getHeader("Origin");
    }
    /**
     * é€šè¿‡name获取 Bean.
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
    /**
     * é€šè¿‡class获取Bean.
     *
     * @param clazz
     * @param       <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
    /**
     * é€šè¿‡name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param       <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SqlInjectionUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
package org.jeecg.common.util;
import cn.hutool.crypto.SecureUtil;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import javax.servlet.http.HttpServletRequest;
/**
 * sql注入处理工具类
 *
 * @author zhoujf
 */
@Slf4j
public class SqlInjectionUtil {
    /**
     * sign ç”¨äºŽè¡¨å­—典加签的盐值【SQL漏洞】
     * ï¼ˆä¸Šçº¿ä¿®æ”¹å€¼ 20200501,同步修改前端的盐值)
     */
    private final static String TABLE_DICT_SIGN_SALT = "20200501";
    private final static String xssStr = "'|and |exec |insert |select |delete |update |drop |count |chr |mid |master |truncate |char |declare |;|or |+";
    /*
    * é’ˆå¯¹è¡¨å­—典进行额外的sign签名校验(增加安全机制)
    * @param dictCode:
    * @param sign:
    * @param request:
    * @Return: void
    */
    public static void checkDictTableSign(String dictCode, String sign, HttpServletRequest request) {
        //表字典SQL注入漏洞,签名校验
        String accessToken = request.getHeader("X-Access-Token");
        String signStr = dictCode + SqlInjectionUtil.TABLE_DICT_SIGN_SALT + accessToken;
        String javaSign = SecureUtil.md5(signStr);
        if (!javaSign.equals(sign)) {
            log.error("表字典,SQL注入漏洞签名校验失败 ï¼š" + sign + "!=" + javaSign+ ",dictCode=" + dictCode);
            throw new JeecgBootException("无权限访问!");
        }
        log.info(" è¡¨å­—典,SQL注入漏洞签名校验成功!sign=" + sign + ",dictCode=" + dictCode);
    }
    /**
     * sql注入过滤处理,遇到注入关键字抛异常
     *
     * @param value
     * @return
     */
    public static void filterContent(String value) {
        if (value == null || "".equals(value)) {
            return;
        }
        // ç»Ÿä¸€è½¬ä¸ºå°å†™
        value = value.toLowerCase();
        String[] xssArr = xssStr.split("\\|");
        for (int i = 0; i < xssArr.length; i++) {
            if (value.indexOf(xssArr[i]) > -1) {
                log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]);
                log.error("请注意,值可能存在SQL注入风险!---> {}", value);
                throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
            }
        }
        return;
    }
    /**
     * sql注入过滤处理,遇到注入关键字抛异常
     *
     * @param values
     * @return
     */
    public static void filterContent(String[] values) {
        String[] xssArr = xssStr.split("\\|");
        for (String value : values) {
            if (value == null || "".equals(value)) {
                return;
            }
            // ç»Ÿä¸€è½¬ä¸ºå°å†™
            value = value.toLowerCase();
            for (int i = 0; i < xssArr.length; i++) {
                if (value.indexOf(xssArr[i]) > -1) {
                    log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]);
                    log.error("请注意,值可能存在SQL注入风险!---> {}", value);
                    throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
                }
            }
        }
        return;
    }
    /**
     * @特殊方法(不通用) ä»…用于字典条件SQL参数,注入过滤
     * @param value
     * @return
     */
    @Deprecated
    public static void specialFilterContent(String value) {
        String specialXssStr = " exec | insert | select | delete | update | drop | count | chr | mid | master | truncate | char | declare |;|+|";
        String[] xssArr = specialXssStr.split("\\|");
        if (value == null || "".equals(value)) {
            return;
        }
        // ç»Ÿä¸€è½¬ä¸ºå°å†™
        value = value.toLowerCase();
        for (int i = 0; i < xssArr.length; i++) {
            if (value.indexOf(xssArr[i]) > -1 || value.startsWith(xssArr[i].trim())) {
                log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]);
                log.error("请注意,值可能存在SQL注入风险!---> {}", value);
                throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
            }
        }
        return;
    }
    /**
     * @特殊方法(不通用) ä»…用于Online报表SQL解析,注入过滤
     * @param value
     * @return
     */
    @Deprecated
    public static void specialFilterContentForOnlineReport(String value) {
        String specialXssStr = " exec | insert | delete | update | drop | chr | mid | master | truncate | char | declare |";
        String[] xssArr = specialXssStr.split("\\|");
        if (value == null || "".equals(value)) {
            return;
        }
        // ç»Ÿä¸€è½¬ä¸ºå°å†™
        value = value.toLowerCase();
        for (int i = 0; i < xssArr.length; i++) {
            if (value.indexOf(xssArr[i]) > -1 || value.startsWith(xssArr[i].trim())) {
                log.error("请注意,存在SQL注入关键词---> {}", xssArr[i]);
                log.error("请注意,值可能存在SQL注入风险!---> {}", value);
                throw new RuntimeException("请注意,值可能存在SQL注入风险!--->" + value);
            }
        }
        return;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/SysAnnmentTypeEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,70 @@
package org.jeecg.common.util;
/**
 * ç³»ç»Ÿå…¬å‘Šè‡ªå®šä¹‰è·³è½¬æ–¹å¼
 */
public enum SysAnnmentTypeEnum {
    /**
     * é‚®ä»¶è·³è½¬ç»„ä»¶
     */
    EMAIL("email", "component", "modules/eoa/email/modals/EoaEmailInForm"),
    /**
     * å·¥ä½œæµè·³è½¬é“¾æŽ¥æˆ‘的办公
     */
    BPM("bpm", "url", "/activiti/todoManage");
    /**
     * ä¸šåŠ¡ç±»åž‹(email:邮件 bpm:流程)
     */
    private String type;
    /**
     * æ‰“开方式 ç»„件:component è·¯ç”±ï¼šurl
     */
    private String openType;
    /**
     * ç»„ä»¶/路由 åœ°å€
     */
    private String openPage;
    SysAnnmentTypeEnum(String type, String openType, String openPage) {
        this.type = type;
        this.openType = openType;
        this.openPage = openPage;
    }
    public String getType() {
        return type;
    }
    public void setType(String type) {
        this.type = type;
    }
    public String getOpenType() {
        return openType;
    }
    public void setOpenType(String openType) {
        this.openType = openType;
    }
    public String getOpenPage() {
        return openPage;
    }
    public void setOpenPage(String openPage) {
        this.openPage = openPage;
    }
    public static SysAnnmentTypeEnum getByType(String type) {
        if (oConvertUtils.isEmpty(type)) {
            return null;
        }
        for (SysAnnmentTypeEnum val : values()) {
            if (val.getType().equals(type)) {
                return val;
            }
        }
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/TokenUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,128 @@
package org.jeecg.common.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBoot401Exception;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.LoginUser;
import javax.servlet.http.HttpServletRequest;
/**
 * @Author scott
 * @Date 2019/9/23 14:12
 * @Description: ç¼–程校验token有效性
 */
@Slf4j
public class TokenUtils {
    /**
     * èŽ·å– request é‡Œä¼ é€’çš„ token
     *
     * @param request
     * @return
     */
    public static String getTokenByRequest(HttpServletRequest request) {
        String token = request.getParameter("token");
        if (token == null) {
            token = request.getHeader("X-Access-Token");
        }
        return token;
    }
    /**
     * éªŒè¯Token
     */
    public static boolean verifyToken(HttpServletRequest request, CommonAPI commonAPI, RedisUtil redisUtil) {
        log.debug(" -- url --" + request.getRequestURL());
        String token = getTokenByRequest(request);
        if (StringUtils.isBlank(token)) {
            throw new JeecgBoot401Exception("Token不能为空!");
        }
        // è§£å¯†èŽ·å¾—username,用于和数据库进行对比
        String username = JwtUtil.getUsername(token);
        if (username == null) {
            throw new JeecgBoot401Exception("Token非法无效!");
        }
        // æŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
        LoginUser user = commonAPI.getUserByName(username);
        if (user == null) {
            throw new JeecgBoot401Exception("用户不存在!");
        }
        // åˆ¤æ–­ç”¨æˆ·çŠ¶æ€
        if (user.getStatus() != 1) {
            throw new JeecgBoot401Exception("账号已锁定,请联系管理员!");
        }
        // æ ¡éªŒtoken是否超时失效 & æˆ–者账号密码是否错误
        if (!jwtTokenRefresh(token, username, user.getPassword(), redisUtil)) {
            throw new JeecgBoot401Exception("Token失效,请重新登录");
        }
        return true;
    }
    /**
     * éªŒè¯Token
     */
    public static boolean verifyToken(String token, CommonAPI commonAPI, RedisUtil redisUtil) {
        if (StringUtils.isBlank(token)) {
            throw new JeecgBoot401Exception("token不能为空!");
        }
        // è§£å¯†èŽ·å¾—username,用于和数据库进行对比
        String username = JwtUtil.getUsername(token);
        if (username == null) {
            throw new JeecgBoot401Exception("token非法无效!");
        }
        // æŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
        LoginUser user = commonAPI.getUserByName(username);
        if (user == null) {
            throw new JeecgBoot401Exception("用户不存在!");
        }
        // åˆ¤æ–­ç”¨æˆ·çŠ¶æ€
        if (user.getStatus() != 1) {
            throw new JeecgBoot401Exception("账号已被锁定,请联系管理员!");
        }
        // æ ¡éªŒtoken是否超时失效 & æˆ–者账号密码是否错误
        if (!jwtTokenRefresh(token, username, user.getPassword(), redisUtil)) {
            throw new JeecgBoot401Exception(CommonConstant.TOKEN_IS_INVALID_MSG);
        }
        return true;
    }
    /**
     * åˆ·æ–°token(保证用户在线操作不掉线)
     * @param token
     * @param userName
     * @param passWord
     * @param redisUtil
     * @return
     */
    private static boolean jwtTokenRefresh(String token, String userName, String passWord, RedisUtil redisUtil) {
        String cacheToken = String.valueOf(redisUtil.get(CommonConstant.PREFIX_USER_TOKEN + token));
        if (oConvertUtils.isNotEmpty(cacheToken)) {
            // æ ¡éªŒtoken有效性
            if (!JwtUtil.verify(cacheToken, userName, passWord)) {
                String newAuthorization = JwtUtil.sign(userName, passWord);
                // è®¾ç½®Toekn缓存有效时间
                redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, newAuthorization);
                redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME*2 / 1000);
            }
            //update-begin--Author:scott  Date:20191005  for:解决每次请求,都重写redis中 token缓存问题
//            else {
//                redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, cacheToken);
//                // è®¾ç½®è¶…æ—¶æ—¶é—´
//                redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME / 1000);
//            }
            //update-end--Author:scott  Date:20191005  for:解决每次请求,都重写redis中 token缓存问题
            return true;
        }
        return false;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/UUIDGenerator.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package org.jeecg.common.util;
import java.net.InetAddress;
/**
 *
 * @Author  å¼ ä»£æµ©
 *
 */
public class UUIDGenerator {
    /**
     * äº§ç”Ÿä¸€ä¸ª32位的UUID
     *
     * @return
     */
    public static String generate() {
        return new StringBuilder(32).append(format(getIP())).append(
                format(getJVM())).append(format(getHiTime())).append(
                format(getLoTime())).append(format(getCount())).toString();
    }
    private static final int IP;
    static {
        int ipadd;
        try {
            ipadd = toInt(InetAddress.getLocalHost().getAddress());
        } catch (Exception e) {
            ipadd = 0;
        }
        IP = ipadd;
    }
    private static short counter = (short) 0;
    private static final int JVM = (int) (System.currentTimeMillis() >>> 8);
    private final static String format(int intval) {
        String formatted = Integer.toHexString(intval);
        StringBuilder buf = new StringBuilder("00000000");
        buf.replace(8 - formatted.length(), 8, formatted);
        return buf.toString();
    }
    private final static String format(short shortval) {
        String formatted = Integer.toHexString(shortval);
        StringBuilder buf = new StringBuilder("0000");
        buf.replace(4 - formatted.length(), 4, formatted);
        return buf.toString();
    }
    private final static int getJVM() {
        return JVM;
    }
    private final static short getCount() {
        synchronized (UUIDGenerator.class) {
            if (counter < 0) {
                counter = 0;
            }
            return counter++;
        }
    }
    /**
     * Unique in a local network
     */
    private final static int getIP() {
        return IP;
    }
    /**
     * Unique down to millisecond
     */
    private final static short getHiTime() {
        return (short) (System.currentTimeMillis() >>> 32);
    }
    private final static int getLoTime() {
        return (int) System.currentTimeMillis();
    }
    private final static int toInt(byte[] bytes) {
        int result = 0;
        for (int i = 0; i < 4; i++) {
            result = (result << 8) - Byte.MIN_VALUE + (int) bytes[i];
        }
        return result;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/YouBianCodeUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,173 @@
package org.jeecg.common.util;
import io.netty.util.internal.StringUtil;
/**
 * æµæ°´å·ç”Ÿæˆè§„则(按默认规则递增,数字从1-99开始递增,数字到99,递增字母;位数不够增加位数)
 * A001
 * A001A002
 * @Author zhangdaihao
 *
 */
public class YouBianCodeUtil {
    // æ•°å­—位数(默认生成3位的数字)
    private static final int numLength = 2;//代表数字位数
    public static final int zhanweiLength = 1+numLength;
    /**
     * æ ¹æ®å‰ä¸€ä¸ªcode,获取同级下一个code
     * ä¾‹å¦‚:当前最大code为D01A04,下一个code为:D01A05
     *
     * @param code
     * @return
     */
    public static synchronized String getNextYouBianCode(String code) {
        String newcode = "";
        if (oConvertUtils.isEmpty(code)) {
            String zimu = "A";
            String num = getStrNum(1);
            newcode = zimu + num;
        } else {
            String before_code = code.substring(0, code.length() - 1- numLength);
            String after_code = code.substring(code.length() - 1 - numLength,code.length());
            char after_code_zimu = after_code.substring(0, 1).charAt(0);
            Integer after_code_num = Integer.parseInt(after_code.substring(1));
//            org.jeecgframework.core.util.LogUtil.info(after_code);
//            org.jeecgframework.core.util.LogUtil.info(after_code_zimu);
//            org.jeecgframework.core.util.LogUtil.info(after_code_num);
            String nextNum = "";
            char nextZimu = 'A';
            // å…ˆåˆ¤æ–­æ•°å­—等于999*,则计数从1重新开始,递增
            if (after_code_num == getMaxNumByLength(numLength)) {
                nextNum = getNextStrNum(0);
            } else {
                nextNum = getNextStrNum(after_code_num);
            }
            // å…ˆåˆ¤æ–­æ•°å­—等于999*,则字母从A重新开始,递增
            if(after_code_num == getMaxNumByLength(numLength)) {
                nextZimu = getNextZiMu(after_code_zimu);
            }else{
                nextZimu = after_code_zimu;
            }
            // ä¾‹å¦‚Z99,下一个code就是Z99A01
            if ('Z' == after_code_zimu && getMaxNumByLength(numLength) == after_code_num) {
                newcode = code + (nextZimu + nextNum);
            } else {
                newcode = before_code + (nextZimu + nextNum);
            }
        }
        return newcode;
    }
    /**
     * æ ¹æ®çˆ¶äº²code,获取下级的下一个code
     *
     * ä¾‹å¦‚:父亲CODE:A01
     *       å½“前CODE:A01B03
     *       èŽ·å–çš„code:A01B04
     *
     * @param parentCode   ä¸Šçº§code
     * @param localCode    åŒçº§code
     * @return
     */
    public static synchronized String getSubYouBianCode(String parentCode,String localCode) {
        if(localCode!=null && localCode!=""){
//            return parentCode + getNextYouBianCode(localCode);
            return getNextYouBianCode(localCode);
        }else{
            parentCode = parentCode + "A"+ getNextStrNum(0);
        }
        return parentCode;
    }
    /**
     * å°†æ•°å­—前面位数补零
     *
     * @param num
     * @return
     */
    private static String getNextStrNum(int num) {
        return getStrNum(getNextNum(num));
    }
    /**
     * å°†æ•°å­—前面位数补零
     *
     * @param num
     * @return
     */
    private static String getStrNum(int num) {
        String s = String.format("%0" + numLength + "d", num);
        return s;
    }
    /**
     * é€’增获取下个数字
     *
     * @param num
     * @return
     */
    private static int getNextNum(int num) {
        num++;
        return num;
    }
    /**
     * é€’增获取下个字母
     *
     * @param num
     * @return
     */
    private static char getNextZiMu(char zimu) {
        if (zimu == 'Z') {
            return 'A';
        }
        zimu++;
        return zimu;
    }
    /**
     * æ ¹æ®æ•°å­—位数获取最大值
     * @param length
     * @return
     */
    private static int getMaxNumByLength(int length){
        if(length==0){
            return 0;
        }
        String max_num = "";
        for (int i=0;i<length;i++){
            max_num = max_num + "9";
        }
        return Integer.parseInt(max_num);
    }
    public static String[] cutYouBianCode(String code){
        if(code==null || StringUtil.isNullOrEmpty(code)){
            return null;
        }else{
            //获取标准长度为numLength+1,截取的数量为code.length/numLength+1
            int c = code.length()/(numLength+1);
            String[] cutcode = new String[c];
            for(int i =0 ; i <c;i++){
                cutcode[i] = code.substring(0,(i+1)*(numLength+1));
            }
            return cutcode;
        }
    }
//    public static void main(String[] args) {
//        // org.jeecgframework.core.util.LogUtil.info(getNextZiMu('C'));
//        // org.jeecgframework.core.util.LogUtil.info(getNextNum(8));
//        // org.jeecgframework.core.util.LogUtil.info(cutYouBianCode("C99A01B01")[2]);
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DataSourceCachePool.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package org.jeecg.common.util.dynamic.db;
import com.alibaba.druid.pool.DruidDataSource;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.common.system.vo.DynamicDataSourceModel;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.SpringContextUtils;
import org.springframework.data.redis.core.RedisTemplate;
import java.util.HashMap;
import java.util.Map;
/**
 * æ•°æ®æºç¼“存池
 */
public class DataSourceCachePool {
    /** æ•°æ®æºè¿žæŽ¥æ± ç¼“存【本地 class缓存 - ä¸æ”¯æŒåˆ†å¸ƒå¼ã€‘ */
    private static Map<String, DruidDataSource> dbSources = new HashMap<>();
    private static RedisTemplate<String, Object> redisTemplate;
    private static RedisTemplate<String, Object> getRedisTemplate() {
        if (redisTemplate == null) {
            redisTemplate = (RedisTemplate<String, Object>) SpringContextUtils.getBean("redisTemplate");
        }
        return redisTemplate;
    }
    /**
     * èŽ·å–å¤šæ•°æ®æºç¼“å­˜
     *
     * @param dbKey
     * @return
     */
    public static DynamicDataSourceModel getCacheDynamicDataSourceModel(String dbKey) {
        String redisCacheKey = CacheConstant.SYS_DYNAMICDB_CACHE + dbKey;
        if (getRedisTemplate().hasKey(redisCacheKey)) {
            return (DynamicDataSourceModel) getRedisTemplate().opsForValue().get(redisCacheKey);
        }
        CommonAPI commonAPI = SpringContextUtils.getBean(CommonAPI.class);
        DynamicDataSourceModel dbSource = commonAPI.getDynamicDbSourceByCode(dbKey);
        if (dbSource != null) {
            getRedisTemplate().opsForValue().set(redisCacheKey, dbSource);
        }
        return dbSource;
    }
    public static DruidDataSource getCacheBasicDataSource(String dbKey) {
        return dbSources.get(dbKey);
    }
    /**
     * put æ•°æ®æºç¼“å­˜
     *
     * @param dbKey
     * @param db
     */
    public static void putCacheBasicDataSource(String dbKey, DruidDataSource db) {
        dbSources.put(dbKey, db);
    }
    /**
     * æ¸…空数据源缓存
     */
    public static void cleanAllCache() {
        //关闭数据源连接
        for(Map.Entry<String, DruidDataSource> entry : dbSources.entrySet()){
            String dbkey = entry.getKey();
            DruidDataSource druidDataSource = entry.getValue();
            if(druidDataSource!=null && druidDataSource.isEnable()){
                druidDataSource.close();
            }
            //清空redis缓存
            getRedisTemplate().delete(CacheConstant.SYS_DYNAMICDB_CACHE + dbkey);
        }
        //清空缓存
        dbSources.clear();
    }
    public static void removeCache(String dbKey) {
        //关闭数据源连接
        DruidDataSource druidDataSource = dbSources.get(dbKey);
        if(druidDataSource!=null && druidDataSource.isEnable()){
            druidDataSource.close();
        }
        //清空redis缓存
        getRedisTemplate().delete(CacheConstant.SYS_DYNAMICDB_CACHE + dbKey);
        //清空缓存
        dbSources.remove(dbKey);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DbTypeUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package org.jeecg.common.util.dynamic.db;
import com.baomidou.mybatisplus.annotation.DbType;
import org.jeecg.common.constant.DataBaseConstant;
import java.util.HashMap;
import java.util.Map;
/**
 * æ•°æ®åº“类型判断
 * ã€æœ‰äº›æ•°æ®åº“引擎是一样的,以达到复用目的】
 */
public class DbTypeUtils {
    public static Map<String, String> dialectMap = new HashMap<String, String>();
    static{
        dialectMap.put("mysql", "org.hibernate.dialect.MySQL5InnoDBDialect");
        dialectMap.put("mariadb", "org.hibernate.dialect.MariaDBDialect");// 1  --
        dialectMap.put("oracle", "org.hibernate.dialect.OracleDialect");//1
        dialectMap.put("oracle12c", "org.hibernate.dialect.OracleDialect"); // TODO æ²¡æ‰¾åˆ°ä¸ç¡®å®š
        dialectMap.put("db2", "org.hibernate.dialect.DB2390Dialect"); // 1xx
        dialectMap.put("h2", "org.hibernate.dialect.HSQLDialect");// H2数据库
        dialectMap.put("hsql", "org.hibernate.dialect.HSQLDialect");// HSQL数据库  1
        dialectMap.put("sqlite", "org.jeecg.modules.online.config.dialect.SQLiteDialect");    //SQLite数据库 åº”用平台mobile
        dialectMap.put("postgresql", "org.hibernate.dialect.PostgreSQLDialect"); //1  --
        dialectMap.put("sqlserver2005", "org.hibernate.dialect.SQLServer2005Dialect");
        dialectMap.put("sqlserver", "org.hibernate.dialect.SQLServerDialect"); //1
        dialectMap.put("dm", "org.hibernate.dialect.OracleDialect");//达梦数据库 [国产] 1--
        dialectMap.put("xugu", "org.hibernate.dialect.HSQLDialect"); //虚谷数据库
        dialectMap.put("kingbasees", "org.hibernate.dialect.PostgreSQLDialect");  //人大金仓 [国产] 1
        dialectMap.put("phoenix", "org.hibernate.dialect.HSQLDialect"); // Phoenix HBase数据库
        dialectMap.put("zenith", "org.hibernate.dialect.PostgreSQLDialect"); // Gauss æ•°æ®åº“
        dialectMap.put("clickhouse", "org.hibernate.dialect.MySQLDialect");  //阿里云PolarDB
        dialectMap.put("gbase", "org.hibernate.dialect.PostgreSQLDialect");  // å—大通用数据库 TODO æ²¡æ‰¾åˆ°ä¸ç¡®å®š
        dialectMap.put("oscar", "org.hibernate.dialect.PostgreSQLDialect");  //神通数据库 [国产] TODO æ²¡æ‰¾åˆ°ä¸ç¡®å®š
        dialectMap.put("sybase", "org.hibernate.dialect.SybaseDialect");  //Sybase ASE æ•°æ®åº“
        dialectMap.put("oceanbase", "org.hibernate.dialect.PostgreSQLDialect");  //OceanBase æ•°æ®åº“ TODO æ²¡æ‰¾åˆ°ä¸ç¡®å®š
        dialectMap.put("Firebird", "org.hibernate.dialect.FirebirdDialect");
        dialectMap.put("highgo", "org.hibernate.dialect.HSQLDialect"); //瀚高数据库
        dialectMap.put("other", "org.hibernate.dialect.PostgreSQLDialect");
    }
    public static boolean dbTypeIsMySQL(DbType dbType) {
        return dbTypeIf(dbType, DbType.MYSQL, DbType.MARIADB, DbType.CLICK_HOUSE, DbType.SQLITE);
    }
    public static boolean dbTypeIsOracle(DbType dbType) {
        return dbTypeIf(dbType, DbType.ORACLE, DbType.ORACLE_12C, DbType.DM);
    }
    public static boolean dbTypeIsSQLServer(DbType dbType) {
        return dbTypeIf(dbType, DbType.SQL_SERVER, DbType.SQL_SERVER2005);
    }
    public static boolean dbTypeIsPostgre(DbType dbType) {
        return dbTypeIf(dbType, DbType.POSTGRE_SQL, DbType.KINGBASE_ES, DbType.GAUSS);
    }
    /**
     *  æ ¹æ®æžšä¸¾ç±» èŽ·å–æ•°æ®åº“ç±»åž‹çš„å­—ç¬¦ä¸²
     * @param dbType
     * @return
     */
    public static String getDbTypeString(DbType dbType){
        if(DbType.DB2.equals(dbType)){
            return DataBaseConstant.DB_TYPE_DB2;
        }else if(DbType.HSQL.equals(dbType)){
            return DataBaseConstant.DB_TYPE_HSQL;
        }else if(dbTypeIsOracle(dbType)){
            return DataBaseConstant.DB_TYPE_ORACLE;
        }else if(dbTypeIsSQLServer(dbType)){
            return DataBaseConstant.DB_TYPE_SQLSERVER;
        }else if(dbTypeIsPostgre(dbType)){
            return DataBaseConstant.DB_TYPE_POSTGRESQL;
        }
        return DataBaseConstant.DB_TYPE_MYSQL;
    }
    /**
     *  æ ¹æ®æžšä¸¾ç±» èŽ·å–æ•°æ®åº“æ–¹è¨€å­—ç¬¦ä¸²
     * @param dbType
     * @return
     */
    public static String getDbDialect(DbType dbType){
        return dialectMap.get(dbType.getDb());
    }
    /**
     * åˆ¤æ–­æ•°æ®åº“类型
     */
    public static boolean dbTypeIf(DbType dbType, DbType... correctTypes) {
        for (DbType type : correctTypes) {
            if (type.equals(dbType)) {
                return true;
            }
        }
        return false;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/DynamicDBUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,336 @@
package org.jeecg.common.util.dynamic.db;
import com.alibaba.druid.pool.DruidDataSource;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ArrayUtils;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.DynamicDataSourceModel;
import org.jeecg.common.util.ReflectHelper;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import javax.sql.DataSource;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * Spring JDBC å®žæ—¶æ•°æ®åº“访问
 *
 * @author chenguobin
 * @version 1.0
 * @date 2014-09-05
 */
@Slf4j
public class DynamicDBUtil {
    /**
     * èŽ·å–æ•°æ®æºã€æœ€åº•å±‚æ–¹æ³•ï¼Œä¸è¦éšä¾¿è°ƒç”¨ã€‘
     *
     * @param dbSource
     * @return
     */
    private static DruidDataSource getJdbcDataSource(final DynamicDataSourceModel dbSource) {
        DruidDataSource dataSource = new DruidDataSource();
        String driverClassName = dbSource.getDbDriver();
        String url = dbSource.getDbUrl();
        String dbUser = dbSource.getDbUsername();
        String dbPassword = dbSource.getDbPassword();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        //dataSource.setValidationQuery("SELECT 1 FROM DUAL");
        dataSource.setTestWhileIdle(true);
        dataSource.setTestOnBorrow(false);
        dataSource.setTestOnReturn(false);
        dataSource.setBreakAfterAcquireFailure(true);
        dataSource.setConnectionErrorRetryAttempts(0);
        dataSource.setUsername(dbUser);
        dataSource.setMaxWait(30000);
        dataSource.setPassword(dbPassword);
        log.info("******************************************");
        log.info("*                                        *");
        log.info("*====【"+dbSource.getCode()+"】=====Druid连接池已启用 ====*");
        log.info("*                                        *");
        log.info("******************************************");
        return dataSource;
    }
    /**
     * é€šè¿‡ dbKey ,获取数据源
     *
     * @param dbKey
     * @return
     */
    public static DruidDataSource getDbSourceByDbKey(final String dbKey) {
        //获取多数据源配置
        DynamicDataSourceModel dbSource = DataSourceCachePool.getCacheDynamicDataSourceModel(dbKey);
        //先判断缓存中是否存在数据库链接
        DruidDataSource cacheDbSource = DataSourceCachePool.getCacheBasicDataSource(dbKey);
        if (cacheDbSource != null && !cacheDbSource.isClosed()) {
            log.debug("--------getDbSourceBydbKey------------------从缓存中获取DB连接-------------------");
            return cacheDbSource;
        } else {
            DruidDataSource dataSource = getJdbcDataSource(dbSource);
            if(dataSource!=null && dataSource.isEnable()){
                DataSourceCachePool.putCacheBasicDataSource(dbKey, dataSource);
            }else{
                throw new JeecgBootException("动态数据源连接失败,dbKey:"+dbKey);
            }
            log.info("--------getDbSourceBydbKey------------------创建DB数据库连接-------------------");
            return dataSource;
        }
    }
    /**
     * å…³é—­æ•°æ®åº“连接池
     *
     * @param dbKey
     * @return
     */
    public static void closeDbKey(final String dbKey) {
        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
        try {
            if (dataSource != null && !dataSource.isClosed()) {
                dataSource.getConnection().commit();
                dataSource.getConnection().close();
                dataSource.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    private static JdbcTemplate getJdbcTemplate(String dbKey) {
        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
        return new JdbcTemplate(dataSource);
    }
    /**
     * æ ¹æ®æ•°æ®æºèŽ·å–NamedParameterJdbcTemplate
     * @param dbKey
     * @return
     */
    private static NamedParameterJdbcTemplate getNamedParameterJdbcTemplate(String dbKey) {
        DruidDataSource dataSource = getDbSourceByDbKey(dbKey);
        return new NamedParameterJdbcTemplate(dataSource);
    }
    /**
     * Executes the SQL statement in this <code>PreparedStatement</code> object,
     * which must be an SQL Data Manipulation Language (DML) statement, such as <code>INSERT</code>, <code>UPDATE</code> or
     * <code>DELETE</code>; or an SQL statement that returns nothing,
     * such as a DDL statement.
     */
    public static int update(final String dbKey, String sql, Object... param) {
        int effectCount;
        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
        if (ArrayUtils.isEmpty(param)) {
            effectCount = jdbcTemplate.update(sql);
        } else {
            effectCount = jdbcTemplate.update(sql, param);
        }
        return effectCount;
    }
    /**
     * æ”¯æŒminiDao语法操作的Update
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持minidao语法逻辑
     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
     * @return
     */
    public static int updateByHash(final String dbKey, String sql, HashMap<String, Object> data) {
        int effectCount;
        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
        //根据模板获取sql
        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
        effectCount = namedParameterJdbcTemplate.update(sql, data);
        return effectCount;
    }
    public static Object findOne(final String dbKey, String sql, Object... param) {
        List<Map<String, Object>> list;
        list = findList(dbKey, sql, param);
        if (oConvertUtils.listIsEmpty(list)) {
            log.error("Except one, but not find actually");
            return null;
        }
        if (list.size() > 1) {
            log.error("Except one, but more than one actually");
        }
        return list.get(0);
    }
    /**
     * æ”¯æŒminiDao语法操作的查询 è¿”回HashMap
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持minidao语法逻辑
     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
     * @return
     */
    public static Object findOneByHash(final String dbKey, String sql, HashMap<String, Object> data) {
        List<Map<String, Object>> list;
        list = findListByHash(dbKey, sql, data);
        if (oConvertUtils.listIsEmpty(list)) {
            log.error("Except one, but not find actually");
        }
        if (list.size() > 1) {
            log.error("Except one, but more than one actually");
        }
        return list.get(0);
    }
    /**
     * ç›´æŽ¥sql查询 æ ¹æ®clazz返回单个实例
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句
     * @param clazz è¿”回实例的Class
     * @param param
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> Object findOne(final String dbKey, String sql, Class<T> clazz, Object... param) {
        Map<String, Object> map = (Map<String, Object>) findOne(dbKey, sql, param);
        return ReflectHelper.setAll(clazz, map);
    }
    /**
     * æ”¯æŒminiDao语法操作的查询 è¿”回单个实例
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持minidao语法逻辑
     * @param clazz è¿”回实例的Class
     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
     * @return
     */
    @SuppressWarnings("unchecked")
    public static <T> Object findOneByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
        Map<String, Object> map = (Map<String, Object>) findOneByHash(dbKey, sql, data);
        return ReflectHelper.setAll(clazz, map);
    }
    public static List<Map<String, Object>> findList(final String dbKey, String sql, Object... param) {
        List<Map<String, Object>> list;
        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
        if (ArrayUtils.isEmpty(param)) {
            list = jdbcTemplate.queryForList(sql);
        } else {
            list = jdbcTemplate.queryForList(sql, param);
        }
        return list;
    }
    /**
     * æŸ¥è¯¢æ•°é‡
     * @param dbKey
     * @param sql
     * @param param
     * @return
     */
    public static Map<String, Object> queryCount(String dbKey, String sql, Map<String, Object> param){
        NamedParameterJdbcTemplate npJdbcTemplate = getNamedParameterJdbcTemplate(dbKey);
        return npJdbcTemplate.queryForMap(sql, param);
    }
    /**
     * æŸ¥è¯¢åˆ—表数据
     * @param dbKey
     * @param sql
     * @param param
     * @return
     */
    public static List<Map<String, Object>> findListByNamedParam(final String dbKey, String sql, Map<String, Object> param) {
        NamedParameterJdbcTemplate npJdbcTemplate = getNamedParameterJdbcTemplate(dbKey);
        List<Map<String, Object>> list = npJdbcTemplate.queryForList(sql, param);
        return list;
    }
    /**
     * æ”¯æŒminiDao语法操作的查询
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持minidao语法逻辑
     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
     * @return
     */
    public static List<Map<String, Object>> findListByHash(final String dbKey, String sql, HashMap<String, Object> data) {
        List<Map<String, Object>> list;
        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
        //根据模板获取sql
        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
        list = namedParameterJdbcTemplate.queryForList(sql, data);
        return list;
    }
    //此方法只能返回单列,不能返回实体类
    public static <T> List<T> findList(final String dbKey, String sql, Class<T> clazz, Object... param) {
        List<T> list;
        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
        if (ArrayUtils.isEmpty(param)) {
            list = jdbcTemplate.queryForList(sql, clazz);
        } else {
            list = jdbcTemplate.queryForList(sql, clazz, param);
        }
        return list;
    }
    /**
     * æ”¯æŒminiDao语法操作的查询 è¿”回单列数据list
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持minidao语法逻辑
     * @param clazz ç±»åž‹Long、String等
     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
     * @return
     */
    public static <T> List<T> findListByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
        List<T> list;
        JdbcTemplate jdbcTemplate = getJdbcTemplate(dbKey);
        //根据模板获取sql
        sql = FreemarkerParseFactory.parseTemplateContent(sql, data);
        NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate.getDataSource());
        list = namedParameterJdbcTemplate.queryForList(sql, data, clazz);
        return list;
    }
    /**
     * ç›´æŽ¥sql查询 è¿”回实体类列表
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持 minidao è¯­æ³•逻辑
     * @param clazz è¿”回实体类列表的class
     * @param param sql拼接注入中需要的数据
     * @return
     */
    public static <T> List<T> findListEntities(final String dbKey, String sql, Class<T> clazz, Object... param) {
        List<Map<String, Object>> queryList = findList(dbKey, sql, param);
        return ReflectHelper.transList2Entrys(queryList, clazz);
    }
    /**
     * æ”¯æŒminiDao语法操作的查询 è¿”回实体类列表
     *
     * @param dbKey æ•°æ®æºæ ‡è¯†
     * @param sql   æ‰§è¡Œsql语句,sql支持minidao语法逻辑
     * @param clazz è¿”回实体类列表的class
     * @param data  sql语法中需要判断的数据及sql拼接注入中需要的数据
     * @return
     */
    public static <T> List<T> findListEntitiesByHash(final String dbKey, String sql, Class<T> clazz, HashMap<String, Object> data) {
        List<Map<String, Object>> queryList = findListByHash(dbKey, sql, data);
        return ReflectHelper.transList2Entrys(queryList, clazz);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/dynamic/db/FreemarkerParseFactory.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,171 @@
package org.jeecg.common.util.dynamic.db;
import freemarker.cache.StringTemplateLoader;
import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.Template;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.codegenerate.generate.util.SimpleFormat;
import java.io.StringWriter;
import java.util.Map;
import java.util.regex.Pattern;
/**
 * @author èµµä¿Šå¤«
 * @version V1.0
 * @Title:FreemarkerHelper
 * @description:Freemarker引擎协助类
 * @date Jul 5, 2013 2:58:29 PM
 */
@Slf4j
public class FreemarkerParseFactory {
    private static final String ENCODE = "utf-8";
    /**
     * å‚数格式化工具类
     */
    private static final String MINI_DAO_FORMAT = "DaoFormat";
    /**
     * æ–‡ä»¶ç¼“å­˜
     */
    private static final Configuration _tplConfig = new Configuration();
    /**
     * SQL ç¼“å­˜
     */
    private static final Configuration _sqlConfig = new Configuration();
    private static StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
    // ä½¿ç”¨å†…嵌的(?ms)打开单行和多行模式
    private final static Pattern p = Pattern
            .compile("(?ms)/\\*.*?\\*/|^\\s*//.*?$");
    static {
        _tplConfig.setClassForTemplateLoading(
                new FreemarkerParseFactory().getClass(), "/");
        _tplConfig.setNumberFormat("0.#####################");
        _sqlConfig.setTemplateLoader(stringTemplateLoader);
        _sqlConfig.setNumberFormat("0.#####################");
        //classic_compatible设置,解决报空指针错误
        _sqlConfig.setClassicCompatible(true);
    }
    /**
     * åˆ¤æ–­æ¨¡æ¿æ˜¯å¦å­˜åœ¨
     *
     * @throws Exception
     */
    public static boolean isExistTemplate(String tplName) throws Exception {
        try {
            Template mytpl = _tplConfig.getTemplate(tplName, "UTF-8");
            if (mytpl == null) {
                return false;
            }
        } catch (Exception e) {
            //update-begin--Author:scott  Date:20180320 for:解决问题 - é”™è¯¯æç¤ºsql文件不存在,实际问题是sql freemarker用法错误-----
            if (e instanceof ParseException) {
                log.error(e.getMessage(), e.fillInStackTrace());
                throw new Exception(e);
            }
            log.debug("----isExistTemplate----" + e.toString());
            //update-end--Author:scott  Date:20180320 for:解决问题 - é”™è¯¯æç¤ºsql文件不存在,实际问题是sql freemarker用法错误------
            return false;
        }
        return true;
    }
    /**
     * è§£æžftl模板
     *
     * @param tplName æ¨¡æ¿å
     * @param paras   å‚æ•°
     * @return
     */
    public static String parseTemplate(String tplName, Map<String, Object> paras) {
        try {
            log.debug(" minidao sql templdate : " + tplName);
            StringWriter swriter = new StringWriter();
            Template mytpl = _tplConfig.getTemplate(tplName, ENCODE);
            if (paras.containsKey(MINI_DAO_FORMAT)) {
                throw new RuntimeException("DaoFormat æ˜¯ minidao ä¿ç•™å…³é”®å­—,不允许使用 ï¼Œè¯·æ›´æ”¹å‚数定义!");
            }
            paras.put(MINI_DAO_FORMAT, new SimpleFormat());
            mytpl.process(paras, swriter);
            String sql = getSqlText(swriter.toString());
            paras.remove(MINI_DAO_FORMAT);
            return sql;
        } catch (Exception e) {
            log.error(e.getMessage(), e.fillInStackTrace());
            log.error("发送一次的模板key:{ " + tplName + " }");
            //System.err.println(e.getMessage());
            //System.err.println("模板名:{ "+ tplName +" }");
            throw new RuntimeException("解析SQL模板异常");
        }
    }
    /**
     * è§£æžftl
     *
     * @param tplContent æ¨¡æ¿å†…容
     * @param paras      å‚æ•°
     * @return String æ¨¡æ¿è§£æžåŽå†…容
     */
    public static String parseTemplateContent(String tplContent,
                                              Map<String, Object> paras) {
        try {
            StringWriter swriter = new StringWriter();
            if (stringTemplateLoader.findTemplateSource("sql_" + tplContent.hashCode()) == null) {
                stringTemplateLoader.putTemplate("sql_" + tplContent.hashCode(), tplContent);
            }
            Template mytpl = _sqlConfig.getTemplate("sql_" + tplContent.hashCode(), ENCODE);
            if (paras.containsKey(MINI_DAO_FORMAT)) {
                throw new RuntimeException("DaoFormat æ˜¯ minidao ä¿ç•™å…³é”®å­—,不允许使用 ï¼Œè¯·æ›´æ”¹å‚数定义!");
            }
            paras.put(MINI_DAO_FORMAT, new SimpleFormat());
            mytpl.process(paras, swriter);
            String sql = getSqlText(swriter.toString());
            paras.remove(MINI_DAO_FORMAT);
            return sql;
        } catch (Exception e) {
            log.error(e.getMessage(), e.fillInStackTrace());
            log.error("发送一次的模板key:{ " + tplContent + " }");
            //System.err.println(e.getMessage());
            //System.err.println("模板内容:{ "+ tplContent +" }");
            throw new RuntimeException("解析SQL模板异常");
        }
    }
    /**
     * é™¤åŽ»æ— æ•ˆå­—æ®µï¼ŒåŽ»æŽ‰æ³¨é‡Š ä¸ç„¶æ‰¹é‡å¤„理可能报错 åŽ»é™¤æ— æ•ˆçš„ç­‰äºŽ
     */
    private static String getSqlText(String sql) {
        // å°†æ³¨é‡Šæ›¿æ¢æˆ""
        sql = p.matcher(sql).replaceAll("");
        sql = sql.replaceAll("\\n", " ").replaceAll("\\t", " ")
                .replaceAll("\\s{1,}", " ").trim();
        // åŽ»æŽ‰ æœ€åŽæ˜¯ where这样的问题
        if (sql.endsWith("where") || sql.endsWith("where ")) {
            sql = sql.substring(0, sql.lastIndexOf("where"));
        }
        // åŽ»æŽ‰where and è¿™æ ·çš„问题
        int index = 0;
        while ((index = StringUtils.indexOfIgnoreCase(sql, "where and", index)) != -1) {
            sql = sql.substring(0, index + 5)
                    + sql.substring(index + 9, sql.length());
        }
        // åŽ»æŽ‰ , where è¿™æ ·çš„问题
        index = 0;
        while ((index = StringUtils.indexOfIgnoreCase(sql, ", where", index)) != -1) {
            sql = sql.substring(0, index)
                    + sql.substring(index + 1, sql.length());
        }
        // åŽ»æŽ‰ æœ€åŽæ˜¯ ,这样的问题
        if (sql.endsWith(",") || sql.endsWith(", ")) {
            sql = sql.substring(0, sql.lastIndexOf(","));
        }
        return sql;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/AesEncryptUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,121 @@
package org.jeecg.common.util.encryption;
import org.apache.shiro.codec.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
/**
 * AES åР坆
 */
public class AesEncryptUtil {
    //使用AES-128-CBC加密模式,key需要为16位,key和iv可以相同!
    private static String KEY = EncryptedString.key;
    private static String IV = EncryptedString.iv;
    /**
     * åŠ å¯†æ–¹æ³•
     * @param data  è¦åŠ å¯†çš„æ•°æ®
     * @param key åР坆key
     * @param iv åР坆iv
     * @return åŠ å¯†çš„ç»“æžœ
     * @throws Exception
     */
    public static String encrypt(String data, String key, String iv) throws Exception {
        try {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");//"算法/模式/补码方式"NoPadding PkcsPadding
            int blockSize = cipher.getBlockSize();
            byte[] dataBytes = data.getBytes();
            int plaintextLength = dataBytes.length;
            if (plaintextLength % blockSize != 0) {
                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
            }
            byte[] plaintext = new byte[plaintextLength];
            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
            byte[] encrypted = cipher.doFinal(plaintext);
            return Base64.encodeToString(encrypted);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * è§£å¯†æ–¹æ³•
     * @param data è¦è§£å¯†çš„æ•°æ®
     * @param key  è§£å¯†key
     * @param iv è§£å¯†iv
     * @return è§£å¯†çš„结果
     * @throws Exception
     */
    public static String desEncrypt(String data, String key, String iv) throws Exception {
        try {
            byte[] encrypted1 = Base64.decode(data);
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
            cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
            byte[] original = cipher.doFinal(encrypted1);
            String originalString = new String(original);
            return originalString;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    /**
     * ä½¿ç”¨é»˜è®¤çš„key和iv加密
     * @param data
     * @return
     * @throws Exception
     */
    public static String encrypt(String data) throws Exception {
        return encrypt(data, KEY, IV);
    }
    /**
     * ä½¿ç”¨é»˜è®¤çš„key和iv解密
     * @param data
     * @return
     * @throws Exception
     */
    public static String desEncrypt(String data) throws Exception {
        return desEncrypt(data, KEY, IV);
    }
//    /**
//     * æµ‹è¯•
//     */
//    public static void main(String args[]) throws Exception {
//        String test1 = "sa";
//        String test =new String(test1.getBytes(),"UTF-8");
//        String data = null;
//        String key =  KEY;
//        String iv = IV;
//        // /g2wzfqvMOeazgtsUVbq1kmJawROa6mcRAzwG1/GeJ4=
//        data = encrypt(test, key, iv);
//        System.out.println("数据:"+test);
//        System.out.println("加密:"+data);
//        String jiemi =desEncrypt(data, key, iv).trim();
//        System.out.println("解密:"+jiemi);
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/encryption/EncryptedString.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package org.jeecg.common.util.encryption;
import lombok.Data;
@Data
public class  EncryptedString {
    public static  String key = "1234567890adbcde";//长度为16个字符
    public static  String iv  = "1234567890hjlkew";//长度为16个字符
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/FileTypeFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,166 @@
package org.jeecg.common.util.filter;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * @Description: TODO
 * @author: lsq
 * @date: 2021å¹´08月09日 15:29
 */
public class FileTypeFilter {
    //文件后缀
    private static String[] forbidType = {"jsp","php"};
    // åˆå§‹åŒ–文件头类型,不够的自行补充
    final static HashMap<String, String> fileTypeMap = new HashMap<>();
    static {
        fileTypeMap.put("3c25402070616765206c", "jsp");
        fileTypeMap.put("3c3f7068700a0a2f2a2a0a202a205048", "php");
       /* fileTypeMap.put("ffd8ffe000104a464946", "jpg");
        fileTypeMap.put("89504e470d0a1a0a0000", "png");
        fileTypeMap.put("47494638396126026f01", "gif");
        fileTypeMap.put("49492a00227105008037", "tif");
        fileTypeMap.put("424d228c010000000000", "bmp");
        fileTypeMap.put("424d8240090000000000", "bmp");
        fileTypeMap.put("424d8e1b030000000000", "bmp");
        fileTypeMap.put("41433130313500000000", "dwg");
        fileTypeMap.put("3c21444f435459504520", "html");
        fileTypeMap.put("3c21646f637479706520", "htm");
        fileTypeMap.put("48544d4c207b0d0a0942", "css");
        fileTypeMap.put("696b2e71623d696b2e71", "js");
        fileTypeMap.put("7b5c727466315c616e73", "rtf");
        fileTypeMap.put("38425053000100000000", "psd");
        fileTypeMap.put("46726f6d3a203d3f6762", "eml");
        fileTypeMap.put("d0cf11e0a1b11ae10000", "doc");
        fileTypeMap.put("5374616E64617264204A", "mdb");
        fileTypeMap.put("252150532D41646F6265", "ps");
        fileTypeMap.put("255044462d312e350d0a", "pdf");
        fileTypeMap.put("2e524d46000000120001", "rmvb");
        fileTypeMap.put("464c5601050000000900", "flv");
        fileTypeMap.put("00000020667479706d70", "mp4");
        fileTypeMap.put("49443303000000002176", "mp3");
        fileTypeMap.put("000001ba210001000180", "mpg");
        fileTypeMap.put("3026b2758e66cf11a6d9", "wmv");
        fileTypeMap.put("52494646e27807005741", "wav");
        fileTypeMap.put("52494646d07d60074156", "avi");
        fileTypeMap.put("4d546864000000060001", "mid");
        fileTypeMap.put("504b0304140000000800", "zip");
        fileTypeMap.put("526172211a0700cf9073", "rar");
        fileTypeMap.put("235468697320636f6e66", "ini");
        fileTypeMap.put("504b03040a0000000000", "jar");
        fileTypeMap.put("4d5a9000030000000400", "exe");
        fileTypeMap.put("3c25402070616765206c", "jsp");
        fileTypeMap.put("4d616e69666573742d56", "mf");
        fileTypeMap.put("3c3f786d6c2076657273", "xml");
        fileTypeMap.put("494e5345525420494e54", "sql");
        fileTypeMap.put("7061636b616765207765", "java");
        fileTypeMap.put("406563686f206f66660d", "bat");
        fileTypeMap.put("1f8b0800000000000000", "gz");
        fileTypeMap.put("6c6f67346a2e726f6f74", "properties");
        fileTypeMap.put("cafebabe0000002e0041", "class");
        fileTypeMap.put("49545346030000006000", "chm");
        fileTypeMap.put("04000000010000001300", "mxp");
        fileTypeMap.put("504b0304140006000800", "docx");
        fileTypeMap.put("6431303a637265617465", "torrent");
        fileTypeMap.put("6D6F6F76", "mov");
        fileTypeMap.put("FF575043", "wpd");
        fileTypeMap.put("CFAD12FEC5FD746F", "dbx");
        fileTypeMap.put("2142444E", "pst");
        fileTypeMap.put("AC9EBD8F", "qdf");
        fileTypeMap.put("E3828596", "pwl");
        fileTypeMap.put("2E7261FD", "ram");*/
    }
    /**
     * @param fileName
     * @return String
     * @description é€šè¿‡æ–‡ä»¶åŽç¼€åèŽ·å–æ–‡ä»¶ç±»åž‹
     */
    private static String getFileTypeBySuffix(String fileName) {
        return fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
    }
    /**
     * æ–‡ä»¶ç±»åž‹è¿‡æ»¤
     *
     * @param file
     */
    public static void fileTypeFilter(MultipartFile file) throws Exception {
        String suffix = getFileType(file);
        for (String type : forbidType) {
            if (type.contains(suffix)) {
                throw new Exception("上传失败,文件类型异常:" + suffix);
            }
        }
    }
    /**
     * é€šè¿‡è¯»å–文件头部获得文件类型
     *
     * @param file
     * @return æ–‡ä»¶ç±»åž‹
     * @throws Exception
     */
    private static String getFileType(MultipartFile file) throws Exception {
        String fileExtendName = null;
        InputStream is;
        try {
            //is = new FileInputStream(file);
            is = file.getInputStream();
            byte[] b = new byte[10];
            is.read(b, 0, b.length);
            String fileTypeHex = String.valueOf(bytesToHexString(b));
            Iterator<String> keyIter = fileTypeMap.keySet().iterator();
            while (keyIter.hasNext()) {
                String key = keyIter.next();
                // éªŒè¯å‰5个字符比较
                if (key.toLowerCase().startsWith(fileTypeHex.toLowerCase().substring(0, 5))
                        || fileTypeHex.toLowerCase().substring(0, 5).startsWith(key.toLowerCase())) {
                    fileExtendName = fileTypeMap.get(key);
                    break;
                }
            }
            // å¦‚果不是上述类型,则判断扩展名
            if (StringUtils.isBlank(fileExtendName)) {
                String fileName = file.getOriginalFilename();
                return getFileTypeBySuffix(fileName);
            }
            is.close();
            return fileExtendName;
        } catch (Exception exception) {
            throw new Exception(exception.getMessage(), exception);
        }
    }
    /**
     * èŽ·å¾—æ–‡ä»¶å¤´éƒ¨å­—ç¬¦ä¸²
     *
     * @param src
     * @return
     */
    private static String bytesToHexString(byte[] src) {
        StringBuilder stringBuilder = new StringBuilder();
        if (src == null || src.length <= 0) {
            return null;
        }
        for (int i = 0; i < src.length; i++) {
            int v = src[i] & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/filter/StrAttackFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package org.jeecg.common.util.filter;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
/**
 * æ–‡ä»¶ä¸Šä¼ å­—符串过滤特殊字符
 */
public class StrAttackFilter {
    public static String filter(String str) throws PatternSyntaxException {
        // æ¸…除掉所有特殊字符
        String regEx = "[`_《》~!@#$%^&*()+=|{}':;',\\[\\].<>?~!@#ï¿¥%……&*()——+|{}【】‘;:”“’。,、?]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        return m.replaceAll("").trim();
    }
//    public static void main(String[] args) {
//        String filter = filter("@#jeecg/《》【bo】¥%……&*(o))))!@t<>,.,/?'\'~~`");
//        System.out.println(filter);
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oConvertUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,668 @@
package org.jeecg.common.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.sql.Date;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 *
 * @Author  å¼ ä»£æµ©
 *
 */
@Slf4j
public class oConvertUtils {
    public static boolean isEmpty(Object object) {
        if (object == null) {
            return (true);
        }
        if ("".equals(object)) {
            return (true);
        }
        if ("null".equals(object)) {
            return (true);
        }
        return (false);
    }
    public static boolean isNotEmpty(Object object) {
        if (object != null && !object.equals("") && !object.equals("null")) {
            return (true);
        }
        return (false);
    }
    public static String decode(String strIn, String sourceCode, String targetCode) {
        String temp = code2code(strIn, sourceCode, targetCode);
        return temp;
    }
    public static String StrToUTF(String strIn, String sourceCode, String targetCode) {
        strIn = "";
        try {
            strIn = new String(strIn.getBytes("ISO-8859-1"), "GBK");
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return strIn;
    }
    private static String code2code(String strIn, String sourceCode, String targetCode) {
        String strOut = null;
        if (strIn == null || (strIn.trim()).equals("")) {
            return strIn;
        }
        try {
            byte[] b = strIn.getBytes(sourceCode);
            for (int i = 0; i < b.length; i++) {
                System.out.print(b[i] + "  ");
            }
            strOut = new String(b, targetCode);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return strOut;
    }
    public static int getInt(String s, int defval) {
        if (s == null || s == "") {
            return (defval);
        }
        try {
            return (Integer.parseInt(s));
        } catch (NumberFormatException e) {
            return (defval);
        }
    }
    public static int getInt(String s) {
        if (s == null || s == "") {
            return 0;
        }
        try {
            return (Integer.parseInt(s));
        } catch (NumberFormatException e) {
            return 0;
        }
    }
    public static int getInt(String s, Integer df) {
        if (s == null || s == "") {
            return df;
        }
        try {
            return (Integer.parseInt(s));
        } catch (NumberFormatException e) {
            return 0;
        }
    }
    public static Integer[] getInts(String[] s) {
        Integer[] integer = new Integer[s.length];
        if (s == null) {
            return null;
        }
        for (int i = 0; i < s.length; i++) {
            integer[i] = Integer.parseInt(s[i]);
        }
        return integer;
    }
    public static double getDouble(String s, double defval) {
        if (s == null || s == "") {
            return (defval);
        }
        try {
            return (Double.parseDouble(s));
        } catch (NumberFormatException e) {
            return (defval);
        }
    }
    public static double getDou(Double s, double defval) {
        if (s == null) {
            return (defval);
        }
        return s;
    }
    /*public static Short getShort(String s) {
        if (StringUtil.isNotEmpty(s)) {
            return (Short.parseShort(s));
        } else {
            return null;
        }
    }*/
    public static int getInt(Object object, int defval) {
        if (isEmpty(object)) {
            return (defval);
        }
        try {
            return (Integer.parseInt(object.toString()));
        } catch (NumberFormatException e) {
            return (defval);
        }
    }
    public static Integer getInt(Object object) {
        if (isEmpty(object)) {
            return null;
        }
        try {
            return (Integer.parseInt(object.toString()));
        } catch (NumberFormatException e) {
            return null;
        }
    }
    public static int getInt(BigDecimal s, int defval) {
        if (s == null) {
            return (defval);
        }
        return s.intValue();
    }
    public static Integer[] getIntegerArry(String[] object) {
        int len = object.length;
        Integer[] result = new Integer[len];
        try {
            for (int i = 0; i < len; i++) {
                result[i] = new Integer(object[i].trim());
            }
            return result;
        } catch (NumberFormatException e) {
            return null;
        }
    }
    public static String getString(String s) {
        return (getString(s, ""));
    }
    /**
     * è½¬ä¹‰æˆUnicode编码
     * @param s
     * @return
     */
    /*public static String escapeJava(Object s) {
        return StringEscapeUtils.escapeJava(getString(s));
    }*/
    public static String getString(Object object) {
        if (isEmpty(object)) {
            return "";
        }
        return (object.toString().trim());
    }
    public static String getString(int i) {
        return (String.valueOf(i));
    }
    public static String getString(float i) {
        return (String.valueOf(i));
    }
    public static String getString(String s, String defval) {
        if (isEmpty(s)) {
            return (defval);
        }
        return (s.trim());
    }
    public static String getString(Object s, String defval) {
        if (isEmpty(s)) {
            return (defval);
        }
        return (s.toString().trim());
    }
    public static long stringToLong(String str) {
        Long test = new Long(0);
        try {
            test = Long.valueOf(str);
        } catch (Exception e) {
        }
        return test.longValue();
    }
    /**
     * èŽ·å–æœ¬æœºIP
     */
    public static String getIp() {
        String ip = null;
        try {
            InetAddress address = InetAddress.getLocalHost();
            ip = address.getHostAddress();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return ip;
    }
    /**
     * åˆ¤æ–­ä¸€ä¸ªç±»æ˜¯å¦ä¸ºåŸºæœ¬æ•°æ®ç±»åž‹ã€‚
     *
     * @param clazz
     *            è¦åˆ¤æ–­çš„类。
     * @return true è¡¨ç¤ºä¸ºåŸºæœ¬æ•°æ®ç±»åž‹ã€‚
     */
    private static boolean isBaseDataType(Class clazz) throws Exception {
        return (clazz.equals(String.class) || clazz.equals(Integer.class) || clazz.equals(Byte.class) || clazz.equals(Long.class) || clazz.equals(Double.class) || clazz.equals(Float.class) || clazz.equals(Character.class) || clazz.equals(Short.class) || clazz.equals(BigDecimal.class) || clazz.equals(BigInteger.class) || clazz.equals(Boolean.class) || clazz.equals(Date.class) || clazz.isPrimitive());
    }
    /**
     * @param request
     *            IP
     * @return IP Address
     */
    public static String getIpAddrByRequest(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getRemoteAddr();
        }
        return ip;
    }
    /**
     * @return æœ¬æœºIP
     * @throws SocketException
     */
    public static String getRealIp() throws SocketException {
        String localip = null;// æœ¬åœ°IP,如果没有配置外网IP则返回它
        String netip = null;// å¤–网IP
        Enumeration<NetworkInterface> netInterfaces = NetworkInterface.getNetworkInterfaces();
        InetAddress ip = null;
        boolean finded = false;// æ˜¯å¦æ‰¾åˆ°å¤–网IP
        while (netInterfaces.hasMoreElements() && !finded) {
            NetworkInterface ni = netInterfaces.nextElement();
            Enumeration<InetAddress> address = ni.getInetAddresses();
            while (address.hasMoreElements()) {
                ip = address.nextElement();
                if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// å¤–网IP
                    netip = ip.getHostAddress();
                    finded = true;
                    break;
                } else if (ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress().indexOf(":") == -1) {// å†…网IP
                    localip = ip.getHostAddress();
                }
            }
        }
        if (netip != null && !"".equals(netip)) {
            return netip;
        } else {
            return localip;
        }
    }
    /**
     * java去除字符串中的空格、回车、换行符、制表符
     *
     * @param str
     * @return
     */
    public static String replaceBlank(String str) {
        String dest = "";
        if (str != null) {
            Pattern p = Pattern.compile("\\s*|\t|\r|\n");
            Matcher m = p.matcher(str);
            dest = m.replaceAll("");
        }
        return dest;
    }
    /**
     * åˆ¤æ–­å…ƒç´ æ˜¯å¦åœ¨æ•°ç»„内
     *
     * @param substring
     * @param source
     * @return
     */
    public static boolean isIn(String substring, String[] source) {
        if (source == null || source.length == 0) {
            return false;
        }
        for (int i = 0; i < source.length; i++) {
            String aSource = source[i];
            if (aSource.equals(substring)) {
                return true;
            }
        }
        return false;
    }
    /**
     * èŽ·å–Map对象
     */
    public static Map<Object, Object> getHashMap() {
        return new HashMap<Object, Object>();
    }
    /**
     * SET转换MAP
     *
     * @param str
     * @return
     */
    public static Map<Object, Object> SetToMap(Set<Object> setobj) {
        Map<Object, Object> map = getHashMap();
        for (Iterator iterator = setobj.iterator(); iterator.hasNext();) {
            Map.Entry<Object, Object> entry = (Map.Entry<Object, Object>) iterator.next();
            map.put(entry.getKey().toString(), entry.getValue() == null ? "" : entry.getValue().toString().trim());
        }
        return map;
    }
    public static boolean isInnerIP(String ipAddress) {
        boolean isInnerIp = false;
        long ipNum = getIpNum(ipAddress);
        /**
         * ç§æœ‰IP:Aç±» 10.0.0.0-10.255.255.255 Bç±» 172.16.0.0-172.31.255.255 Cç±» 192.168.0.0-192.168.255.255 å½“然,还有127这个网段是环回地址
         **/
        long aBegin = getIpNum("10.0.0.0");
        long aEnd = getIpNum("10.255.255.255");
        long bBegin = getIpNum("172.16.0.0");
        long bEnd = getIpNum("172.31.255.255");
        long cBegin = getIpNum("192.168.0.0");
        long cEnd = getIpNum("192.168.255.255");
        isInnerIp = isInner(ipNum, aBegin, aEnd) || isInner(ipNum, bBegin, bEnd) || isInner(ipNum, cBegin, cEnd) || ipAddress.equals("127.0.0.1");
        return isInnerIp;
    }
    private static long getIpNum(String ipAddress) {
        String[] ip = ipAddress.split("\\.");
        long a = Integer.parseInt(ip[0]);
        long b = Integer.parseInt(ip[1]);
        long c = Integer.parseInt(ip[2]);
        long d = Integer.parseInt(ip[3]);
        long ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
        return ipNum;
    }
    private static boolean isInner(long userIp, long begin, long end) {
        return (userIp >= begin) && (userIp <= end);
    }
    /**
     * å°†ä¸‹åˆ’线大写方式命名的字符串转换为驼峰式。
     * å¦‚果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
     * ä¾‹å¦‚:hello_world->helloWorld
     *
     * @param name
     *            è½¬æ¢å‰çš„下划线大写方式命名的字符串
     * @return è½¬æ¢åŽçš„驼峰式命名的字符串
     */
    public static String camelName(String name) {
        StringBuilder result = new StringBuilder();
        // å¿«é€Ÿæ£€æŸ¥
        if (name == null || name.isEmpty()) {
            // æ²¡å¿…要转换
            return "";
        } else if (!name.contains("_")) {
            // ä¸å«ä¸‹åˆ’线,仅将首字母小写
            //update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 ã€ä»£ç ç”Ÿæˆå™¨ã€‘代码生成器开发一通用模板生成功能
            //update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 ã€ä»£ç ç”Ÿæˆå™¨ã€‘代码生成器开发一通用模板生成功能
            return name.substring(0, 1).toLowerCase() + name.substring(1).toLowerCase();
            //update-end--Author:zhoujf  Date:20180503 for:TASK #2500 ã€ä»£ç ç”Ÿæˆå™¨ã€‘代码生成器开发一通用模板生成功能
        }
        // ç”¨ä¸‹åˆ’线将原始字符串分割
        String camels[] = name.split("_");
        for (String camel : camels) {
            // è·³è¿‡åŽŸå§‹å­—ç¬¦ä¸²ä¸­å¼€å¤´ã€ç»“å°¾çš„ä¸‹æ¢çº¿æˆ–åŒé‡ä¸‹åˆ’çº¿
            if (camel.isEmpty()) {
                continue;
            }
            // å¤„理真正的驼峰片段
            if (result.length() == 0) {
                // ç¬¬ä¸€ä¸ªé©¼å³°ç‰‡æ®µï¼Œå…¨éƒ¨å­—母都小写
                result.append(camel.toLowerCase());
            } else {
                // å…¶ä»–的驼峰片段,首字母大写
                result.append(camel.substring(0, 1).toUpperCase());
                result.append(camel.substring(1).toLowerCase());
            }
        }
        return result.toString();
    }
    /**
     * å°†ä¸‹åˆ’线大写方式命名的字符串转换为驼峰式。
     * å¦‚果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
     * ä¾‹å¦‚:hello_world,test_id->helloWorld,testId
     *
     * @param name
     *            è½¬æ¢å‰çš„下划线大写方式命名的字符串
     * @return è½¬æ¢åŽçš„驼峰式命名的字符串
     */
    public static String camelNames(String names) {
        if(names==null||names.equals("")){
            return null;
        }
        StringBuffer sf = new StringBuffer();
        String[] fs = names.split(",");
        for (String field : fs) {
            field = camelName(field);
            sf.append(field + ",");
        }
        String result = sf.toString();
        return result.substring(0, result.length() - 1);
    }
    //update-begin--Author:zhoujf  Date:20180503 for:TASK #2500 ã€ä»£ç ç”Ÿæˆå™¨ã€‘代码生成器开发一通用模板生成功能
    /**
     * å°†ä¸‹åˆ’线大写方式命名的字符串转换为驼峰式。(首字母写)
     * å¦‚果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
     * ä¾‹å¦‚:hello_world->HelloWorld
     *
     * @param name
     *            è½¬æ¢å‰çš„下划线大写方式命名的字符串
     * @return è½¬æ¢åŽçš„驼峰式命名的字符串
     */
    public static String camelNameCapFirst(String name) {
        StringBuilder result = new StringBuilder();
        // å¿«é€Ÿæ£€æŸ¥
        if (name == null || name.isEmpty()) {
            // æ²¡å¿…要转换
            return "";
        } else if (!name.contains("_")) {
            // ä¸å«ä¸‹åˆ’线,仅将首字母小写
            return name.substring(0, 1).toUpperCase() + name.substring(1).toLowerCase();
        }
        // ç”¨ä¸‹åˆ’线将原始字符串分割
        String camels[] = name.split("_");
        for (String camel : camels) {
            // è·³è¿‡åŽŸå§‹å­—ç¬¦ä¸²ä¸­å¼€å¤´ã€ç»“å°¾çš„ä¸‹æ¢çº¿æˆ–åŒé‡ä¸‹åˆ’çº¿
            if (camel.isEmpty()) {
                continue;
            }
            // å…¶ä»–的驼峰片段,首字母大写
            result.append(camel.substring(0, 1).toUpperCase());
            result.append(camel.substring(1).toLowerCase());
        }
        return result.toString();
    }
    //update-end--Author:zhoujf  Date:20180503 for:TASK #2500 ã€ä»£ç ç”Ÿæˆå™¨ã€‘代码生成器开发一通用模板生成功能
    /**
     * å°†é©¼å³°å‘½åè½¬åŒ–成下划线
     * @param para
     * @return
     */
    public static String camelToUnderline(String para){
        if(para.length()<3){
            return para.toLowerCase();
        }
        StringBuilder sb=new StringBuilder(para);
        int temp=0;//定位
        //从第三个字符开始 é¿å…å‘½åä¸è§„范
        for(int i=2;i<para.length();i++){
            if(Character.isUpperCase(para.charAt(i))){
                sb.insert(i+temp, "_");
                temp+=1;
            }
        }
        return sb.toString().toLowerCase();
    }
    /**
     * éšæœºæ•°
     * @param place å®šä¹‰éšæœºæ•°çš„位数
     */
    public static String randomGen(int place) {
        String base = "qwertyuioplkjhgfdsazxcvbnmQAZWSXEDCRFVTGBYHNUJMIKLOP0123456789";
        StringBuffer sb = new StringBuffer();
        Random rd = new Random();
        for(int i=0;i<place;i++) {
            sb.append(base.charAt(rd.nextInt(base.length())));
        }
        return sb.toString();
    }
    /**
     * èŽ·å–ç±»çš„æ‰€æœ‰å±žæ€§ï¼ŒåŒ…æ‹¬çˆ¶ç±»
     *
     * @param object
     * @return
     */
    public static Field[] getAllFields(Object object) {
        Class<?> clazz = object.getClass();
        List<Field> fieldList = new ArrayList<>();
        while (clazz != null) {
            fieldList.addAll(new ArrayList<>(Arrays.asList(clazz.getDeclaredFields())));
            clazz = clazz.getSuperclass();
        }
        Field[] fields = new Field[fieldList.size()];
        fieldList.toArray(fields);
        return fields;
    }
    /**
      * å°†map的key全部转成小写
     * @param list
     * @return
     */
    public static List<Map<String, Object>> toLowerCasePageList(List<Map<String, Object>> list){
        List<Map<String, Object>> select = new ArrayList<>();
        for (Map<String, Object> row : list) {
             Map<String, Object> resultMap = new HashMap<>();
             Set<String> keySet = row.keySet();
             for (String key : keySet) {
                 String newKey = key.toLowerCase();
                 resultMap.put(newKey, row.get(key));
             }
             select.add(resultMap);
        }
        return select;
    }
    /**
     * å°†entityList转换成modelList
     * @param fromList
     * @param tClass
     * @param <F>
     * @param <T>
     * @return
     */
    public static<F,T> List<T> entityListToModelList(List<F> fromList, Class<T> tClass){
        if(fromList == null || fromList.isEmpty()){
            return null;
        }
        List<T> tList = new ArrayList<>();
        for(F f : fromList){
            T t = entityToModel(f, tClass);
            tList.add(t);
        }
        return tList;
    }
    public static<F,T> T entityToModel(F entity, Class<T> modelClass) {
        log.debug("entityToModel : Entity属性的值赋值到Model");
        Object model = null;
        if (entity == null || modelClass ==null) {
            return null;
        }
        try {
            model = modelClass.newInstance();
        } catch (InstantiationException e) {
            log.error("entityToModel : å®žä¾‹åŒ–异常", e);
        } catch (IllegalAccessException e) {
            log.error("entityToModel : å®‰å…¨æƒé™å¼‚常", e);
        }
        BeanUtils.copyProperties(entity, model);
        return (T)model;
    }
    /**
     * åˆ¤æ–­ list æ˜¯å¦ä¸ºç©º
     *
     * @param list
     * @return true or false
     * list == null        : true
     * list.size() == 0    : true
     */
    public static boolean listIsEmpty(Collection list) {
        return (list == null || list.size() == 0);
    }
    /**
     * åˆ¤æ–­ list æ˜¯å¦ä¸ä¸ºç©º
     *
     * @param list
     * @return true or false
     * list == null        : false
     * list.size() == 0    : false
     */
    public static boolean listIsNotEmpty(Collection list) {
        return !listIsEmpty(list);
    }
    /**
     * è¯»å–静态文本内容
     * @param url
     * @return
     */
    public static String readStatic(String url) {
        String json = "";
        try {
            //换个写法,解决springboot读取jar包中文件的问题
            InputStream stream = oConvertUtils.class.getClassLoader().getResourceAsStream(url.replace("classpath:", ""));
            json = IOUtils.toString(stream,"UTF-8");
        } catch (IOException e) {
            log.error(e.getMessage(),e);
        }
        return json;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/oss/OssBootUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,338 @@
package org.jeecg.common.util.oss;
import com.aliyun.oss.ClientConfiguration;
import com.aliyun.oss.OSSClient;
import com.aliyun.oss.common.auth.DefaultCredentialProvider;
import com.aliyun.oss.model.CannedAccessControlList;
import com.aliyun.oss.model.OSSObject;
import com.aliyun.oss.model.PutObjectResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.tomcat.util.http.fileupload.FileItemStream;
import org.jeecg.common.util.CommonUtils;
import org.jeecg.common.util.filter.FileTypeFilter;
import org.jeecg.common.util.filter.StrAttackFilter;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.web.multipart.MultipartFile;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Date;
import java.util.UUID;
/**
 * @Description: é˜¿é‡Œäº‘ oss ä¸Šä¼ å·¥å…·ç±»(高依赖版)
 * @Date: 2019/5/10
 */
@Slf4j
public class OssBootUtil {
    private static String endPoint;
    private static String accessKeyId;
    private static String accessKeySecret;
    private static String bucketName;
    private static String staticDomain;
    public static void setEndPoint(String endPoint) {
        OssBootUtil.endPoint = endPoint;
    }
    public static void setAccessKeyId(String accessKeyId) {
        OssBootUtil.accessKeyId = accessKeyId;
    }
    public static void setAccessKeySecret(String accessKeySecret) {
        OssBootUtil.accessKeySecret = accessKeySecret;
    }
    public static void setBucketName(String bucketName) {
        OssBootUtil.bucketName = bucketName;
    }
    public static void setStaticDomain(String staticDomain) {
        OssBootUtil.staticDomain = staticDomain;
    }
    public static String getStaticDomain() {
        return staticDomain;
    }
    public static String getEndPoint() {
        return endPoint;
    }
    public static String getAccessKeyId() {
        return accessKeyId;
    }
    public static String getAccessKeySecret() {
        return accessKeySecret;
    }
    public static String getBucketName() {
        return bucketName;
    }
    public static OSSClient getOssClient() {
        return ossClient;
    }
    /**
     * oss å·¥å…·å®¢æˆ·ç«¯
     */
    private static OSSClient ossClient = null;
    /**
     * ä¸Šä¼ æ–‡ä»¶è‡³é˜¿é‡Œäº‘ OSS
     * æ–‡ä»¶ä¸Šä¼ æˆåŠŸ,返回文件完整访问路径
     * æ–‡ä»¶ä¸Šä¼ å¤±è´¥,返回 null
     *
     * @param file    å¾…上传文件
     * @param fileDir æ–‡ä»¶ä¿å­˜ç›®å½•
     * @return oss ä¸­çš„相对文件路径
     */
    public static String upload(MultipartFile file, String fileDir,String customBucket) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        String newBucket = bucketName;
        if(oConvertUtils.isNotEmpty(customBucket)){
            newBucket = customBucket;
        }
        try {
            //判断桶是否存在,不存在则创建桶
            if(!ossClient.doesBucketExist(newBucket)){
                ossClient.createBucket(newBucket);
            }
            // èŽ·å–æ–‡ä»¶å
            String orgName = file.getOriginalFilename();
            if("" == orgName){
              orgName=file.getName();
            }
            //update-begin-author:liusq date:20210809 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶ç±»åž‹
            FileTypeFilter.fileTypeFilter(file);
            //update-end-author:liusq date:20210809 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶ç±»åž‹
            orgName = CommonUtils.getFileName(orgName);
            String fileName = orgName.indexOf(".")==-1
                              ?orgName + "_" + System.currentTimeMillis()
                              :orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.lastIndexOf("."));
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            //update-begin-author:wangshuai date:20201012 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶å¤¹åç‰¹æ®Šå­—符,防止攻击
            fileDir=StrAttackFilter.filter(fileDir);
            //update-end-author:wangshuai date:20201012 for: è¿‡æ»¤ä¸Šä¼ æ–‡ä»¶å¤¹åç‰¹æ®Šå­—符,防止攻击
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + newBucket + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(newBucket, fileUrl.toString(), file.getInputStream());
            // è®¾ç½®æƒé™(公开读)
//            ossClient.setBucketAcl(newBucket, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }catch (Exception e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }
    /**
     * èŽ·å–åŽŸå§‹URL
    * @param url: åŽŸå§‹URL
    * @Return: java.lang.String
    */
    public static String getOriginalUrl(String url) {
        String originalDomain = "https://" + bucketName + "." + endPoint;
        if(oConvertUtils.isNotEmpty(staticDomain) && url.indexOf(staticDomain)!=-1){
            url = url.replace(staticDomain,originalDomain);
        }
        return url;
    }
    /**
     * æ–‡ä»¶ä¸Šä¼ 
     * @param file
     * @param fileDir
     * @return
     */
    public static String upload(MultipartFile file, String fileDir) {
        return upload(file, fileDir,null);
    }
    /**
     * ä¸Šä¼ æ–‡ä»¶è‡³é˜¿é‡Œäº‘ OSS
     * æ–‡ä»¶ä¸Šä¼ æˆåŠŸ,返回文件完整访问路径
     * æ–‡ä»¶ä¸Šä¼ å¤±è´¥,返回 null
     *
     * @param file    å¾…上传文件
     * @param fileDir æ–‡ä»¶ä¿å­˜ç›®å½•
     * @return oss ä¸­çš„相对文件路径
     */
    public static String upload(FileItemStream file, String fileDir) {
        String FILE_URL = null;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        StringBuilder fileUrl = new StringBuilder();
        try {
            String suffix = file.getName().substring(file.getName().lastIndexOf('.'));
            String fileName = UUID.randomUUID().toString().replace("-", "") + suffix;
            if (!fileDir.endsWith("/")) {
                fileDir = fileDir.concat("/");
            }
            fileDir = StrAttackFilter.filter(fileDir);
            fileUrl = fileUrl.append(fileDir + fileName);
            if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
                FILE_URL = staticDomain + "/" + fileUrl;
            } else {
                FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
            }
            PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(), file.openStream());
            // è®¾ç½®æƒé™(公开读)
            ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
            if (result != null) {
                log.info("------OSS文件上传成功------" + fileUrl);
            }
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
        return FILE_URL;
    }
    /**
     * åˆ é™¤æ–‡ä»¶
     * @param url
     */
    public static void deleteUrl(String url) {
        deleteUrl(url,null);
    }
    /**
     * åˆ é™¤æ–‡ä»¶
     * @param url
     */
    public static void deleteUrl(String url,String bucket) {
        String newBucket = bucketName;
        if(oConvertUtils.isNotEmpty(bucket)){
            newBucket = bucket;
        }
        String bucketUrl = "";
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            bucketUrl = staticDomain + "/" ;
        } else {
            bucketUrl = "https://" + newBucket + "." + endPoint + "/";
        }
        url = url.replace(bucketUrl,"");
        ossClient.deleteObject(newBucket, url);
    }
    /**
     * åˆ é™¤æ–‡ä»¶
     * @param fileName
     */
    public static void delete(String fileName) {
        ossClient.deleteObject(bucketName, fileName);
    }
    /**
     * èŽ·å–æ–‡ä»¶æµ
     * @param objectName
     * @param bucket
     * @return
     */
    public static InputStream getOssFile(String objectName,String bucket){
        InputStream inputStream = null;
        try{
            String newBucket = bucketName;
            if(oConvertUtils.isNotEmpty(bucket)){
                newBucket = bucket;
            }
            initOSS(endPoint, accessKeyId, accessKeySecret);
            OSSObject ossObject = ossClient.getObject(newBucket,objectName);
            inputStream = new BufferedInputStream(ossObject.getObjectContent());
        }catch (Exception e){
            log.info("文件获取失败" + e.getMessage());
        }
        return inputStream;
    }
    /**
     * èŽ·å–æ–‡ä»¶æµ
     * @param objectName
     * @return
     */
    public static InputStream getOssFile(String objectName){
        return getOssFile(objectName,null);
    }
    /**
     * èŽ·å–æ–‡ä»¶å¤–é“¾
     * @param bucketName
     * @param objectName
     * @param expires
     * @return
     */
    public static String getObjectURL(String bucketName, String objectName, Date expires) {
        initOSS(endPoint, accessKeyId, accessKeySecret);
        try{
            if(ossClient.doesObjectExist(bucketName,objectName)){
                URL url = ossClient.generatePresignedUrl(bucketName,objectName,expires);
                return URLDecoder.decode(url.toString(),"UTF-8");
            }
        }catch (Exception e){
            log.info("文件路径获取失败" + e.getMessage());
        }
        return null;
    }
    /**
     * åˆå§‹åŒ– oss å®¢æˆ·ç«¯
     *
     * @return
     */
    private static OSSClient initOSS(String endpoint, String accessKeyId, String accessKeySecret) {
        if (ossClient == null) {
            ossClient = new OSSClient(endpoint,
                    new DefaultCredentialProvider(accessKeyId, accessKeySecret),
                    new ClientConfiguration());
        }
        return ossClient;
    }
    /**
     * ä¸Šä¼ æ–‡ä»¶åˆ°oss
     * @param stream
     * @param relativePath
     * @return
     */
    public static String upload(InputStream stream, String relativePath) {
        String FILE_URL = null;
        String fileUrl = relativePath;
        initOSS(endPoint, accessKeyId, accessKeySecret);
        if (oConvertUtils.isNotEmpty(staticDomain) && staticDomain.toLowerCase().startsWith("http")) {
            FILE_URL = staticDomain + "/" + relativePath;
        } else {
            FILE_URL = "https://" + bucketName + "." + endPoint + "/" + fileUrl;
        }
        PutObjectResult result = ossClient.putObject(bucketName, fileUrl.toString(),stream);
        // è®¾ç½®æƒé™(公开读)
        ossClient.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);
        if (result != null) {
            log.info("------OSS文件上传成功------" + fileUrl);
        }
        return FILE_URL;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/SecurityTools.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package org.jeecg.common.util.security;
import cn.hutool.core.codec.Base64Decoder;
import cn.hutool.core.codec.Base64Encoder;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.asymmetric.Sign;
import cn.hutool.crypto.asymmetric.SignAlgorithm;
import cn.hutool.crypto.symmetric.AES;
import org.jeecg.common.util.security.entity.*;
import com.alibaba.fastjson.JSONObject;
import javax.crypto.SecretKey;
import java.security.KeyPair;
public class SecurityTools {
    public static final String ALGORITHM = "AES/ECB/PKCS5Padding";
    public static SecurityResp valid(SecurityReq req) {
        SecurityResp resp=new SecurityResp();
        String pubKey=req.getPubKey();
        String aesKey=req.getAesKey();
        String data=req.getData();
        String signData=req.getSignData();
        RSA rsa=new RSA(null, Base64Decoder.decode(pubKey));
        Sign sign= new Sign(SignAlgorithm.SHA1withRSA,null,pubKey);
        byte[] decryptAes = rsa.decrypt(aesKey, KeyType.PublicKey);
        //log.info("rsa解密后的秘钥"+ Base64Encoder.encode(decryptAes));
        AES aes = SecureUtil.aes(decryptAes);
        String dencrptValue =aes.decryptStr(data);
        //log.info("解密后报文"+dencrptValue);
        resp.setData(JSONObject.parseObject(dencrptValue));
        boolean verify = sign.verify(dencrptValue.getBytes(), Base64Decoder.decode(signData));
        resp.setSuccess(verify);
        return resp;
    }
    public static SecuritySignResp sign(SecuritySignReq req) {
        SecretKey secretKey = SecureUtil.generateKey(ALGORITHM);
        byte[] key= secretKey.getEncoded();
        String prikey=req.getPrikey();
        String data=req.getData();
        AES aes = SecureUtil.aes(key);
        aes.getSecretKey().getEncoded();
        String encrptData =aes.encryptBase64(data);
        RSA rsa=new RSA(prikey,null);
        byte[] encryptAesKey = rsa.encrypt(secretKey.getEncoded(), KeyType.PrivateKey);
        //log.info(("rsa加密过的秘钥=="+Base64Encoder.encode(encryptAesKey));
        Sign sign= new Sign(SignAlgorithm.SHA1withRSA,prikey,null);
        byte[] signed = sign.sign(data.getBytes());
        //log.info(("签名数据===》》"+Base64Encoder.encode(signed));
        SecuritySignResp resp=new SecuritySignResp();
        resp.setAesKey(Base64Encoder.encode(encryptAesKey));
        resp.setData(encrptData);
        resp.setSignData(Base64Encoder.encode(signed));
        return resp;
    }
    public static MyKeyPair generateKeyPair(){
        KeyPair keyPair= SecureUtil.generateKeyPair(SignAlgorithm.SHA1withRSA.getValue(),2048);
        String priKey= Base64Encoder.encode(keyPair.getPrivate().getEncoded());
        String pubkey= Base64Encoder.encode(keyPair.getPublic().getEncoded());
        MyKeyPair resp=new MyKeyPair();
        resp.setPriKey(priKey);
        resp.setPubKey(pubkey);
        return resp;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/MyKeyPair.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package org.jeecg.common.util.security.entity;
import lombok.Data;
@Data
public class MyKeyPair {
    private String priKey;
    private String pubKey;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityReq.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package org.jeecg.common.util.security.entity;
import lombok.Data;
@Data
public class SecurityReq {
    private String data;
    private String pubKey;
    private String signData;
    private String aesKey;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecurityResp.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package org.jeecg.common.util.security.entity;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@Data
public class SecurityResp {
    private Boolean success;
    private JSONObject data;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignReq.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package org.jeecg.common.util.security.entity;
import lombok.Data;
@Data
public class SecuritySignReq {
    private String data;
    private String prikey;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/security/entity/SecuritySignResp.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
package org.jeecg.common.util.security.entity;
import lombok.Data;
@Data
public class SecuritySignResp {
    private String data;
    private String signData;
    private String aesKey;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/ObjectParseUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package org.jeecg.common.util.superSearch;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
 *   åˆ¤æ–­ç±»åž‹ï¼Œè¿½åŠ æŸ¥è¯¢è§„åˆ™
 *
 * @Author Scott
 * @Date 2019å¹´02月14日
 */
public class ObjectParseUtil {
    /**
     *
     * @param queryWrapper QueryWrapper
     * @param name         å­—段名字
     * @param rule         æŸ¥è¯¢è§„则
     * @param value        æŸ¥è¯¢æ¡ä»¶å€¼
     */
    public static void addCriteria(QueryWrapper<?> queryWrapper, String name, QueryRuleEnum rule, Object value) {
        if (value == null || rule == null) {
            return;
        }
        switch (rule) {
        case GT:
            queryWrapper.gt(name, value);
            break;
        case GE:
            queryWrapper.ge(name, value);
            break;
        case LT:
            queryWrapper.lt(name, value);
            break;
        case LE:
            queryWrapper.le(name, value);
            break;
        case EQ:
            queryWrapper.eq(name, value);
            break;
        case NE:
            queryWrapper.ne(name, value);
            break;
        case IN:
            queryWrapper.in(name, (Object[]) value);
            break;
        case LIKE:
            queryWrapper.like(name, value);
            break;
        case LEFT_LIKE:
            queryWrapper.likeLeft(name, value);
            break;
        case RIGHT_LIKE:
            queryWrapper.likeRight(name, value);
            break;
        default:
            break;
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/QueryRuleEnum.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package org.jeecg.common.util.superSearch;
import org.jeecg.common.util.oConvertUtils;
/**
 * Query è§„则 å¸¸é‡
 * @Author Scott
 * @Date 2019å¹´02月14日
 */
public enum QueryRuleEnum {
    GT(">","大于"),
    GE(">=","大于等于"),
    LT("<","小于"),
    LE("<=","小于等于"),
    EQ("=","等于"),
    NE("!=","不等于"),
    IN("IN","包含"),
    LIKE("LIKE","全模糊"),
    LEFT_LIKE("LEFT_LIKE","左模糊"),
    RIGHT_LIKE("RIGHT_LIKE","右模糊"),
    SQL_RULES("EXTEND_SQL","自定义SQL片段");
    private String value;
    private String msg;
    QueryRuleEnum(String value, String msg){
        this.value = value;
        this.msg = msg;
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value;
    }
    public String getMsg() {
        return msg;
    }
    public void setMsg(String msg) {
        this.msg = msg;
    }
    public static QueryRuleEnum getByValue(String value){
        if(oConvertUtils.isEmpty(value)) {
            return null;
        }
        for(QueryRuleEnum val :values()){
            if (val.getValue().equals(value)){
                return val;
            }
        }
        return  null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/util/superSearch/QueryRuleVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package org.jeecg.common.util.superSearch;
import lombok.Data;
@Data
public class QueryRuleVo {
    private String field;
    private String rule;
    private String val;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package org.jeecg.config;
import org.jeecgframework.core.util.ApplicationContextUtil;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * @Author: Scott
 * @Date: 2018/2/7
 * @description: autopoi é…ç½®ç±»
 */
@Configuration
public class AutoPoiConfig {
    /**
     * excel注解字典参数支持(导入导出字典值,自动翻译)
     * ä¸¾ä¾‹ï¼š @Excel(name = "性别", width = 15, dicCode = "sex")
     * 1、导出的时候会根据字典配置,把值1,2翻译成:男、女;
     * 2、导入的时候,会把男、女翻译成1,2存进数据库;
     * @return
     */
    @Bean
    public ApplicationContextUtil applicationContextUtil() {
        return new org.jeecgframework.core.util.ApplicationContextUtil();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/AutoPoiDictConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,65 @@
package org.jeecg.config;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.system.vo.DictModel;
import org.jeecg.common.util.oConvertUtils;
import org.jeecgframework.dict.service.AutoPoiDictServiceI;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
 * æè¿°ï¼šAutoPoi Excel注解支持字典参数设置
 *  ä¸¾ä¾‹ï¼š @Excel(name = "性别", width = 15, dicCode = "sex")
 * 1、导出的时候会根据字典配置,把值1,2翻译成:男、女;
 * 2、导入的时候,会把男、女翻译成1,2存进数据库;
 *
 * @Author:scott
 * @since:2019-04-09
 * @Version:1.0
 */
@Slf4j
@Service
public class AutoPoiDictConfig implements AutoPoiDictServiceI {
    @Lazy
    @Resource
    private CommonAPI commonAPI;
    /**
     * é€šè¿‡å­—典查询easypoi,所需字典文本
     *
     * @Author:scott
     * @since:2019-04-09
     * @return
     */
    @Override
    public String[] queryDict(String dicTable, String dicCode, String dicText) {
        List<String> dictReplaces = new ArrayList<String>();
        List<DictModel> dictList = null;
        // step.1 å¦‚果没有字典表则使用系统字典表
        if (oConvertUtils.isEmpty(dicTable)) {
            dictList = commonAPI.queryDictItemsByCode(dicCode);
        } else {
            try {
                dicText = oConvertUtils.getString(dicText, dicCode);
                dictList = commonAPI.queryTableDictItemsByCode(dicTable, dicText, dicCode);
            } catch (Exception e) {
                log.error(e.getMessage(),e);
            }
        }
        for (DictModel t : dictList) {
            if(t!=null){
                dictReplaces.add(t.getText() + "_" + t.getValue());
            }
        }
        if (dictReplaces != null && dictReplaces.size() != 0) {
            log.info("---AutoPoi--Get_DB_Dict------"+ dictReplaces.toString());
            return dictReplaces.toArray(new String[dictReplaces.size()]);
        }
        return null;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/CorsFilterCondition.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package org.jeecg.config;
import org.jeecg.common.constant.CommonConstant;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
/**
 * è·¨åŸŸé…ç½®åŠ è½½æ¡ä»¶
 */
public class CorsFilterCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        Object object = context.getEnvironment().getProperty(CommonConstant.CLOUD_SERVER_KEY);
        //如果没有服务注册发现的配置 è¯´æ˜Žæ˜¯å•体应用 åˆ™åŠ è½½è·¨åŸŸé…ç½® è¿”回true
        if(object==null){
            return true;
        }
        return false;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/DruidConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,83 @@
package org.jeecg.config;
import java.io.IOException;
import javax.servlet.*;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties;
import com.alibaba.druid.util.Utils;
@Configuration
@AutoConfigureAfter(DruidDataSourceAutoConfigure.class)
public class DruidConfig {
    /**
     * å¸¦æœ‰å¹¿å‘Šçš„common.js全路径,druid-1.1.14
     */
    private static final String FILE_PATH = "support/http/resources/js/common.js";
    /**
     * åŽŸå§‹è„šæœ¬ï¼Œè§¦å‘æž„å»ºå¹¿å‘Šçš„è¯­å¥
     */
    private static final String ORIGIN_JS = "this.buildFooter();";
    /**
     * æ›¿æ¢åŽçš„脚本
     */
    private static final String NEW_JS = "//this.buildFooter();";
    /**
     * å޻除Druid监控页面的广告
     *
     * @param properties DruidStatProperties属性集合
     * @return {@link FilterRegistrationBean}
     */
    @Bean
    @ConditionalOnWebApplication
    @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true")
    public FilterRegistrationBean<RemoveAdFilter> removeDruidAdFilter(
            DruidStatProperties properties) throws IOException {
        // èŽ·å–web监控页面的参数
        DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
        // æå–common.js的配置路径
        String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
        String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");
        // èŽ·å–common.js
        String text = Utils.readFromResource(FILE_PATH);
        // å±è”½ this.buildFooter(); ä¸æž„建广告
        final String newJs = text.replace(ORIGIN_JS, NEW_JS);
        FilterRegistrationBean<RemoveAdFilter> registration = new FilterRegistrationBean<>();
        registration.setFilter(new RemoveAdFilter(newJs));
        registration.addUrlPatterns(commonJsPattern);
        return registration;
    }
    /**
     * åˆ é™¤druid的广告过滤器
     *
     * @author BBF
     */
    private class RemoveAdFilter implements Filter {
        private final String newJs;
        public RemoveAdFilter(String newJS) {
            this.newJs = newJS;
        }
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
                throws IOException, ServletException {
            chain.doFilter(request, response);
            // é‡ç½®ç¼“冲区,响应头不会被重置
            response.resetBuffer();
            response.getWriter().write(newJs);
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeeccgBaseConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.jeecg.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
/**
 * åŠ è½½é¡¹ç›®é…ç½®
 */
@Component("jeeccgBaseConfig")
@ConfigurationProperties(prefix = "jeecg")
public class JeeccgBaseConfig {
    /**
     * æ˜¯å¦å¯ç”¨å®‰å…¨æ¨¡å¼
     */
    private Boolean safeMode = false;
    public Boolean getSafeMode() {
        return safeMode;
    }
    public void setSafeMode(Boolean safeMode) {
        this.safeMode = safeMode;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/JeecgCloudCondition.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package org.jeecg.config;
import org.jeecg.common.constant.CommonConstant;
import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;
/**
 * å¾®æœåŠ¡çŽ¯å¢ƒåŠ è½½æ¡ä»¶
 */
public class JeecgCloudCondition implements Condition {
    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        Object object = context.getEnvironment().getProperty(CommonConstant.CLOUD_SERVER_KEY);
        //如果没有服务注册发现的配置 è¯´æ˜Žæ˜¯å•体应用
        if(object==null){
            return false;
        }
        return true;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/RestTemplateConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package org.jeecg.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.SimpleClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
/**
* ä¼˜é›…çš„http请求方式RestTemplate
* @Return:
*/
@Configuration
public class RestTemplateConfig {
    @Bean
    public RestTemplate restTemplate(ClientHttpRequestFactory factory) {
        return new RestTemplate(factory);
    }
    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setReadTimeout(5000);//ms
        factory.setConnectTimeout(15000);//ms
        return factory;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/StaticConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package org.jeecg.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
 * è®¾ç½®é™æ€å‚数初始化
 */
@Component
@Data
public class StaticConfig {
    @Value("${jeecg.oss.accessKey}")
    private String accessKeyId;
    @Value("${jeecg.oss.secretKey}")
    private String accessKeySecret;
    @Value(value = "${spring.mail.username}")
    private String emailFrom;
    /**
     * ç­¾åå¯†é’¥ä¸²
     */
    @Value(value = "${jeecg.signatureSecret}")
    private String signatureSecret;
    /*@Bean
    public void initStatic() {
       DySmsHelper.setAccessKeyId(accessKeyId);
       DySmsHelper.setAccessKeySecret(accessKeySecret);
       EmailSendMsgHandle.setEmailFrom(emailFrom);
    }*/
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/Swagger2Config.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,140 @@
package org.jeecg.config;
import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.CommonConstant;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.*;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spi.service.contexts.SecurityContext;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
 * @Author scott
 */
@Configuration
@EnableSwagger2WebMvc
@EnableKnife4j
@Import(BeanValidatorPluginsConfiguration.class)
public class Swagger2Config implements WebMvcConfigurer {
    /**
     *
     * æ˜¾ç¤ºswagger-ui.html文档展示页,还必须注入swagger资源:
     *
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }
    /**
     * swagger2的配置文件,这里可以配置swagger2的一些基本的内容,比如扫描的包等等
     *
     * @return Docket
     */
    @Bean(value = "defaultApi2")
    public Docket defaultApi2() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                //此包路径下的类,才生成接口文档
                .apis(RequestHandlerSelectors.basePackage("org.jeecg"))
                //加了ApiOperation注解的类,才生成接口文档
                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(Collections.singletonList(securityScheme()))
                .securityContexts(securityContexts());
                //.globalOperationParameters(setHeaderToken());
    }
    /***
     * oauth2配置
     * éœ€è¦å¢žåŠ swagger授权回调地址
     * http://localhost:8888/webjars/springfox-swagger-ui/o2c.html
     * @return
     */
    @Bean
    SecurityScheme securityScheme() {
        return new ApiKey(CommonConstant.X_ACCESS_TOKEN, CommonConstant.X_ACCESS_TOKEN, "header");
    }
    /**
     * JWT token
     * @return
     */
    private List<Parameter> setHeaderToken() {
        ParameterBuilder tokenPar = new ParameterBuilder();
        List<Parameter> pars = new ArrayList<>();
        tokenPar.name(CommonConstant.X_ACCESS_TOKEN).description("token").modelRef(new ModelRef("string")).parameterType("header").required(false).build();
        pars.add(tokenPar.build());
        return pars;
    }
    /**
     * api文档的详细信息函数,注意这里的注解引用的是哪个
     *
     * @return
     */
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                // //大标题
                .title("研发信息化系统")
                // ç‰ˆæœ¬å·
                .version("1.0")
//                .termsOfServiceUrl("NO terms of service")
                // æè¿°
                .description("后台API接口")
                // ä½œè€…
                .contact(new Contact("上海兰宝传感科技股份有限公司","www.shlb.com","xx@shlb.com"))
               // .contact("JEECG团队")
                .license("The Apache License, Version 2.0")
                .licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
                .build();
    }
    /**
     * æ–°å¢ž securityContexts ä¿æŒç™»å½•状态
     */
    private List<SecurityContext> securityContexts() {
        return new ArrayList(
                Collections.singleton(SecurityContext.builder()
                        .securityReferences(defaultAuth())
                        .forPaths(PathSelectors.regex("^(?!auth).*$"))
                        .build())
        );
    }
    private List<SecurityReference> defaultAuth() {
        AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
        AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
        authorizationScopes[0] = authorizationScope;
        return new ArrayList(
                Collections.singleton(new SecurityReference(CommonConstant.X_ACCESS_TOKEN, authorizationScopes)));
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebMvcConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,102 @@
package org.jeecg.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import java.util.List;
/**
 * Spring Boot 2.0 è§£å†³è·¨åŸŸé—®é¢˜
 *
 * @Author qinfeng
 *
 */
@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {
    @Value("${jeecg.path.upload}")
    private String upLoadPath;
    @Value("${jeecg.path.webapp}")
    private String webAppPath;
    @Value("${spring.resource.static-locations}")
    private String staticLocations;
    /**
     * é™æ€èµ„源的配置 - ä½¿å¾—可以从磁盘中读取 Html、图片、视频、音频等
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/**")
                //update-begin-author:taoyan date:20211116 for: jeecg.path.webapp配置无效 #3126
                .addResourceLocations("file:" + upLoadPath + "//")
                .addResourceLocations("file:" + webAppPath + "//")
                //update-end-author:taoyan date:20211116 for: jeecg.path.webapp配置无效 #3126
                .addResourceLocations(staticLocations.split(","));
    }
    /**
     * æ–¹æ¡ˆä¸€ï¼š é»˜è®¤è®¿é—®æ ¹è·¯å¾„跳转 doc.html页面 ï¼ˆswagger文档页面)
     * æ–¹æ¡ˆäºŒï¼š è®¿é—®æ ¹è·¯å¾„改成跳转 index.html页面 ï¼ˆç®€åŒ–部署方案: å¯ä»¥æŠŠå‰ç«¯æ‰“包直接放到项目的 webapp,上面的配置)
     */
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("doc.html");
    }
    @Bean
    @Conditional(CorsFilterCondition.class)
    public CorsFilter corsFilter() {
        final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration corsConfiguration = new CorsConfiguration();
        //是否允许请求带有验证信息
        corsConfiguration.setAllowCredentials(true);
        // å…è®¸è®¿é—®çš„客户端域名
        corsConfiguration.addAllowedOrigin("*");
        // å…è®¸æœåŠ¡ç«¯è®¿é—®çš„å®¢æˆ·ç«¯è¯·æ±‚å¤´
        corsConfiguration.addAllowedHeader("*");
        // å…è®¸è®¿é—®çš„æ–¹æ³•名,GET POST等
        corsConfiguration.addAllowedMethod("*");
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
    /**
     * æ·»åŠ Long转json精度丢失的配置
     * @Return: void
     */
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        ObjectMapper objectMapper = new ObjectMapper();
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        objectMapper.registerModule(simpleModule);
        jackson2HttpMessageConverter.setObjectMapper(objectMapper);
        converters.add(jackson2HttpMessageConverter);
    }
    /**
     * SpringBootAdmin的Httptrace不见了
     * https://blog.csdn.net/u013810234/article/details/110097201
     */
    @Bean
    public InMemoryHttpTraceRepository getInMemoryHttpTrace(){
        return new InMemoryHttpTraceRepository();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/WebSocketConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
    /**
     *     æ³¨å…¥ServerEndpointExporter,
     *     è¿™ä¸ªbean会自动注册使用了@ServerEndpoint注解声明的Websocket endpoint
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/JeecgTenantParser.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,130 @@
//package org.jeecg.config.mybatis;
//
//import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser;
//import net.sf.jsqlparser.expression.BinaryExpression;
//import net.sf.jsqlparser.expression.Expression;
//import net.sf.jsqlparser.expression.Parenthesis;
//import net.sf.jsqlparser.expression.operators.conditional.AndExpression;
//import net.sf.jsqlparser.expression.operators.conditional.OrExpression;
//import net.sf.jsqlparser.expression.operators.relational.*;
//import net.sf.jsqlparser.schema.Column;
//import net.sf.jsqlparser.schema.Table;
//import net.sf.jsqlparser.statement.select.*;
//
//import java.util.List;
//
///**
// * å¤å†™ç§Ÿæˆ·æ¡ä»¶
// */
//public class JeecgTenantParser extends TenantSqlParser {
//
//    /**
//     * @param expression
//     * @param table
//     * @return
//     */
//    protected Expression processTableAlias(Expression expression, Table table) {
//        String tableAliasName;
//        if (table.getAlias() == null) {
//            tableAliasName = table.getName();
//        } else {
//            tableAliasName = table.getAlias().getName();
//        }
//
//        // in
//        if (expression instanceof InExpression) {
//            InExpression in = (InExpression) expression;
//            if (in.getLeftExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) in.getLeftExpression(), tableAliasName);
//            }
//
//            // æ¯”较操作
//        } else if (expression instanceof BinaryExpression) {
//            BinaryExpression compare = (BinaryExpression) expression;
//            if (compare.getLeftExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) compare.getLeftExpression(), tableAliasName);
//            } else if (compare.getRightExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) compare.getRightExpression(), tableAliasName);
//            }
//
//            // between
//        } else if (expression instanceof Between) {
//            Between between = (Between) expression;
//            if (between.getLeftExpression() instanceof Column) {
//                setTableAliasNameForColumn((Column) between.getLeftExpression(), tableAliasName);
//            }
//        }
//        return expression;
//    }
//
//    private void setTableAliasNameForColumn(Column column, String tableAliasName) {
//        column.setColumnName(tableAliasName + "." + column.getColumnName());
//    }
//
//    /**
//     * é»˜è®¤æ˜¯æŒ‰ tenant_id=1 æŒ‰ç­‰äºŽæ¡ä»¶è¿½åŠ 
//     *
//     * @param currentExpression çŽ°æœ‰çš„æ¡ä»¶ï¼šæ¯”å¦‚ä½ åŽŸæ¥çš„sql查询条件
//     * @param table
//     * @return
//     */
//    @Override
//    protected Expression builderExpression(Expression currentExpression, Table table) {
//        final Expression tenantExpression = this.getTenantHandler().getTenantId(true);
//        Expression appendExpression;
//        if (!(tenantExpression instanceof SupportsOldOracleJoinSyntax)) {
//            appendExpression = new EqualsTo();
//            ((EqualsTo) appendExpression).setLeftExpression(this.getAliasColumn(table));
//            ((EqualsTo) appendExpression).setRightExpression(tenantExpression);
//        } else {
//            appendExpression = processTableAlias(tenantExpression, table);
//        }
//        if (currentExpression == null) {
//            return appendExpression;
//        }
//        if (currentExpression instanceof BinaryExpression) {
//            BinaryExpression binaryExpression = (BinaryExpression) currentExpression;
//            if (binaryExpression.getLeftExpression() instanceof FromItem) {
//                processFromItem((FromItem) binaryExpression.getLeftExpression());
//            }
//            if (binaryExpression.getRightExpression() instanceof FromItem) {
//                processFromItem((FromItem) binaryExpression.getRightExpression());
//            }
//        } else if (currentExpression instanceof InExpression) {
//            InExpression inExp = (InExpression) currentExpression;
//            ItemsList rightItems = inExp.getRightItemsList();
//            if (rightItems instanceof SubSelect) {
//                processSelectBody(((SubSelect) rightItems).getSelectBody());
//            }
//        }
//        if (currentExpression instanceof OrExpression) {
//            return new AndExpression(new Parenthesis(currentExpression), appendExpression);
//        } else {
//            return new AndExpression(currentExpression, appendExpression);
//        }
//    }
//
//    @Override
//    protected void processPlainSelect(PlainSelect plainSelect, boolean addColumn) {
//        FromItem fromItem = plainSelect.getFromItem();
//        if (fromItem instanceof Table) {
//            Table fromTable = (Table) fromItem;
//            if (!this.getTenantHandler().doTableFilter(fromTable.getName())) {
//                plainSelect.setWhere(builderExpression(plainSelect.getWhere(), fromTable));
//                if (addColumn) {
//                    plainSelect.getSelectItems().add(new SelectExpressionItem(new Column(this.getTenantHandler().getTenantIdColumn())));
//                }
//            }
//        } else {
//            processFromItem(fromItem);
//        }
//        List<Join> joins = plainSelect.getJoins();
//        if (joins != null && joins.size() > 0) {
//            joins.forEach(j -> {
//                processJoin(j);
//                processFromItem(j.getRightItem());
//            });
//        }
//    }
//
//}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisInterceptor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,161 @@
package org.jeecg.config.mybatis;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.binding.MapperMethod.ParamMap;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlCommandType;
import org.apache.ibatis.plugin.*;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.stereotype.Component;
import java.lang.reflect.Field;
import java.util.Date;
import java.util.Properties;
/**
 * mybatis拦截器,自动注入创建人、创建时间、修改人、修改时间
 * @Author scott
 * @Date  2019-01-19
 *
 */
@Slf4j
@Component
@Intercepts({ @Signature(type = Executor.class, method = "update", args = { MappedStatement.class, Object.class }) })
public class MybatisInterceptor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
        String sqlId = mappedStatement.getId();
        log.debug("------sqlId------" + sqlId);
        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
        Object parameter = invocation.getArgs()[1];
        log.debug("------sqlCommandType------" + sqlCommandType);
        if (parameter == null) {
            return invocation.proceed();
        }
        if (SqlCommandType.INSERT == sqlCommandType) {
            LoginUser sysUser = this.getLoginUser();
            Field[] fields = oConvertUtils.getAllFields(parameter);
            for (Field field : fields) {
                log.debug("------field.name------" + field.getName());
                try {
                    if ("createBy".equals(field.getName())) {
                        field.setAccessible(true);
                        Object local_createBy = field.get(parameter);
                        field.setAccessible(false);
                        if (local_createBy == null || local_createBy.equals("")) {
                            if (sysUser != null) {
                                // ç™»å½•人账号
                                field.setAccessible(true);
                                field.set(parameter, sysUser.getUsername());
                                field.setAccessible(false);
                            }
                        }
                    }
                    // æ³¨å…¥åˆ›å»ºæ—¶é—´
                    if ("createTime".equals(field.getName())) {
                        field.setAccessible(true);
                        Object local_createDate = field.get(parameter);
                        field.setAccessible(false);
                        if (local_createDate == null || local_createDate.equals("")) {
                            field.setAccessible(true);
                            field.set(parameter, new Date());
                            field.setAccessible(false);
                        }
                    }
                    //注入部门编码
                    if ("sysOrgCode".equals(field.getName())) {
                        field.setAccessible(true);
                        Object local_sysOrgCode = field.get(parameter);
                        field.setAccessible(false);
                        if (local_sysOrgCode == null || local_sysOrgCode.equals("")) {
                            // èŽ·å–ç™»å½•ç”¨æˆ·ä¿¡æ¯
                            if (sysUser != null) {
                                field.setAccessible(true);
                                field.set(parameter, sysUser.getOrgCode());
                                field.setAccessible(false);
                            }
                        }
                    }
                } catch (Exception e) {
                }
            }
        }
        if (SqlCommandType.UPDATE == sqlCommandType) {
            LoginUser sysUser = this.getLoginUser();
            Field[] fields = null;
            if (parameter instanceof ParamMap) {
                ParamMap<?> p = (ParamMap<?>) parameter;
                //update-begin-author:scott date:20190729 for:批量更新报错issues/IZA3Q--
                if (p.containsKey("et")) {
                    parameter = p.get("et");
                } else {
                    parameter = p.get("param1");
                }
                //update-end-author:scott date:20190729 for:批量更新报错issues/IZA3Q-
                //update-begin-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
                if (parameter == null) {
                    return invocation.proceed();
                }
                //update-end-author:scott date:20190729 for:更新指定字段时报错 issues/#516-
                fields = oConvertUtils.getAllFields(parameter);
            } else {
                fields = oConvertUtils.getAllFields(parameter);
            }
            for (Field field : fields) {
                log.debug("------field.name------" + field.getName());
                try {
                    if ("updateBy".equals(field.getName())) {
                        //获取登录用户信息
                        if (sysUser != null) {
                            // ç™»å½•账号
                            field.setAccessible(true);
                            field.set(parameter, sysUser.getUsername());
                            field.setAccessible(false);
                        }
                    }
                    if ("updateTime".equals(field.getName())) {
                        field.setAccessible(true);
                        field.set(parameter, new Date());
                        field.setAccessible(false);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        return invocation.proceed();
    }
    @Override
    public Object plugin(Object target) {
        return Plugin.wrap(target, this);
    }
    @Override
    public void setProperties(Properties properties) {
        // TODO Auto-generated method stub
    }
    //update-begin--Author:scott  Date:20191213 for:关于使用Quzrtz å¼€å¯çº¿ç¨‹ä»»åŠ¡ï¼Œ #465
    private LoginUser getLoginUser() {
        LoginUser sysUser = null;
        try {
            sysUser = SecurityUtils.getSubject().getPrincipal() != null ? (LoginUser) SecurityUtils.getSubject().getPrincipal() : null;
        } catch (Exception e) {
            //e.printStackTrace();
            sysUser = null;
        }
        return sysUser;
    }
    //update-end--Author:scott  Date:20191213 for:关于使用Quzrtz å¼€å¯çº¿ç¨‹ä»»åŠ¡ï¼Œ #465
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/MybatisPlusSaasConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package org.jeecg.config.mybatis;
import java.util.ArrayList;
import java.util.List;
import org.jeecg.common.util.oConvertUtils;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.LongValue;
/**
 * å•数据源配置(jeecg.datasource.open = false时生效)
 * @Author zhoujf
 *
 */
@Configuration
@MapperScan(value={"org.jeecg.modules.**.mapper*"})
public class MybatisPlusSaasConfig {
    /**
     * tenant_id å­—段名
     */
    private static final String TENANT_FIELD_NAME = "tenant_id";
    /**
     * å“ªäº›è¡¨éœ€è¦åšå¤šç§Ÿæˆ· è¡¨éœ€è¦æ·»åŠ ä¸€ä¸ªå­—æ®µ tenant_id
     */
    private static final List<String> tenantTable = new ArrayList<String>();
    static {
        tenantTable.add("demo");
//        //角色、菜单、部门
//        tenantTable.add("sys_role");
//        tenantTable.add("sys_permission");
//        tenantTable.add("sys_depart");
    }
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // å…ˆ add TenantLineInnerInterceptor å† add PaginationInnerInterceptor
        interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new TenantLineHandler() {
            @Override
            public Expression getTenantId() {
                String tenant_id = oConvertUtils.getString(TenantContext.getTenant(),"0");
                return new LongValue(tenant_id);
            }
            @Override
            public String getTenantIdColumn(){
                return TENANT_FIELD_NAME;
            }
            // è¿”回 true è¡¨ç¤ºä¸èµ°ç§Ÿæˆ·é€»è¾‘
            @Override
            public boolean ignoreTable(String tableName) {
                for(String temp: tenantTable){
                    if(temp.equalsIgnoreCase(tableName)){
                        return false;
                    }
                }
                return true;
            }
        }));
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
//    /**
//     * ä¸‹ä¸ªç‰ˆæœ¬ä¼šåˆ é™¤ï¼ŒçŽ°åœ¨ä¸ºäº†é¿å…ç¼“å­˜å‡ºçŽ°é—®é¢˜ä¸å¾—ä¸é…ç½®
//     * @return
//     */
//    @Bean
//    public ConfigurationCustomizer configurationCustomizer() {
//        return configuration -> configuration.setUseDeprecatedExecutor(false);
//    }
//    /**
//     * mybatis-plus SQL执行效率插件【生产环境可以关闭】
//     */
//    @Bean
//    public PerformanceInterceptor performanceInterceptor() {
//        return new PerformanceInterceptor();
//    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/mybatis/TenantContext.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.jeecg.config.mybatis;
import lombok.extern.slf4j.Slf4j;
/**
 * å¤šç§Ÿæˆ· tenant_id存储器
 */
@Slf4j
public class TenantContext {
    private static ThreadLocal<String> currentTenant = new ThreadLocal<>();
    public static void setTenant(String tenant) {
        log.debug(" setting tenant to " + tenant);
        currentTenant.set(tenant);
    }
    public static String getTenant() {
        return currentTenant.get();
    }
    public static void clear(){
        currentTenant.remove();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/MinioConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
package org.jeecg.config.oss;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.MinioUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * Minio文件上传配置文件
 */
@Slf4j
@Configuration
public class MinioConfig {
    @Value(value = "${jeecg.minio.minio_url}")
    private String minioUrl;
    @Value(value = "${jeecg.minio.minio_name}")
    private String minioName;
    @Value(value = "${jeecg.minio.minio_pass}")
    private String minioPass;
    @Value(value = "${jeecg.minio.bucketName}")
    private String bucketName;
    @Bean
    public void initMinio(){
        if(!minioUrl.startsWith("http")){
            minioUrl = "http://" + minioUrl;
        }
        if(!minioUrl.endsWith("/")){
            minioUrl = minioUrl.concat("/");
        }
        MinioUtil.setMinioUrl(minioUrl);
        MinioUtil.setMinioName(minioName);
        MinioUtil.setMinioPass(minioPass);
        MinioUtil.setBucketName(bucketName);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/oss/OssConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.config.oss;
import org.jeecg.common.util.oss.OssBootUtil;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
 * äº‘存储 é…ç½®
 */
@Configuration
public class OssConfiguration {
    @Value("${jeecg.oss.endpoint}")
    private String endpoint;
    @Value("${jeecg.oss.accessKey}")
    private String accessKeyId;
    @Value("${jeecg.oss.secretKey}")
    private String accessKeySecret;
    @Value("${jeecg.oss.bucketName}")
    private String bucketName;
    @Value("${jeecg.oss.staticDomain:}")
    private String staticDomain;
    @Bean
    public void initOssBootConfiguration() {
        OssBootUtil.setEndPoint(endpoint);
        OssBootUtil.setAccessKeyId(accessKeyId);
        OssBootUtil.setAccessKeySecret(accessKeySecret);
        OssBootUtil.setBucketName(bucketName);
        OssBootUtil.setStaticDomain(staticDomain);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/JwtToken.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package org.jeecg.config.shiro;
import org.apache.shiro.authc.AuthenticationToken;
/**
 * @Author Scott
 * @create 2018-07-12 15:19
 * @desc
 **/
public class JwtToken implements AuthenticationToken {
    private static final long serialVersionUID = 1L;
    private String token;
    public JwtToken(String token) {
        this.token = token;
    }
    @Override
    public Object getPrincipal() {
        return token;
    }
    @Override
    public Object getCredentials() {
        return token;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,280 @@
package org.jeecg.config.shiro;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.apache.shiro.mgt.DefaultSessionStorageEvaluator;
import org.apache.shiro.mgt.DefaultSubjectDAO;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.spring.LifecycleBeanPostProcessor;
import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.mgt.DefaultWebSecurityManager;
import org.crazycake.shiro.IRedisManager;
import org.crazycake.shiro.RedisCacheManager;
import org.crazycake.shiro.RedisClusterManager;
import org.crazycake.shiro.RedisManager;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.shiro.filters.CustomShiroFilterFactoryBean;
import org.jeecg.config.shiro.filters.JwtFilter;
import org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn;
import org.springframework.core.env.Environment;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.util.StringUtils;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import javax.annotation.Resource;
import javax.servlet.Filter;
import java.util.*;
/**
 * @author: Scott
 * @date: 2018/2/7
 * @description: shiro é…ç½®ç±»
 */
@Slf4j
@Configuration
public class ShiroConfig {
    @Value("${jeecg.shiro.excludeUrls}")
    private String excludeUrls;
    @Resource
    LettuceConnectionFactory lettuceConnectionFactory;
    @Autowired
    private Environment env;
    /**
     * Filter Chain定义说明
     *
     * 1、一个URL可以配置多个Filter,使用逗号分隔
     * 2、当设置多个过滤器时,全部验证通过,才视为通过
     * 3、部分过滤器可指定参数,如perms,roles
     */
    @Bean("shiroFilter")
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
        CustomShiroFilterFactoryBean shiroFilterFactoryBean = new CustomShiroFilterFactoryBean();
        shiroFilterFactoryBean.setSecurityManager(securityManager);
        // æ‹¦æˆªå™¨
        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();
        if(oConvertUtils.isNotEmpty(excludeUrls)){
            String[] permissionUrl = excludeUrls.split(",");
            for(String url : permissionUrl){
                filterChainDefinitionMap.put(url,"anon");
            }
        }
        // é…ç½®ä¸ä¼šè¢«æ‹¦æˆªçš„链接 é¡ºåºåˆ¤æ–­
        filterChainDefinitionMap.put("/sys/cas/client/validateLogin", "anon"); //cas验证登录
        filterChainDefinitionMap.put("/sys/randomImage/**", "anon"); //登录验证码接口排除
        filterChainDefinitionMap.put("/sys/checkCaptcha", "anon"); //登录验证码接口排除
        filterChainDefinitionMap.put("/sys/login", "anon"); //登录接口排除
        filterChainDefinitionMap.put("/sys/mLogin", "anon"); //登录接口排除
        filterChainDefinitionMap.put("/sys/logout", "anon"); //登出接口排除
        filterChainDefinitionMap.put("/wx/message", "anon"); //微信消息推送
        filterChainDefinitionMap.put("/sys/thirdLogin/**", "anon"); //第三方登录
        filterChainDefinitionMap.put("/weekly/jeecg/hello", "anon"); //第三方登录
        filterChainDefinitionMap.put("/sys/getEncryptedString", "anon"); //获取加密串
        filterChainDefinitionMap.put("/sys/sms", "anon");//短信验证码
        filterChainDefinitionMap.put("/sys/phoneLogin", "anon");//手机登录
        filterChainDefinitionMap.put("/sys/user/checkOnlyUser", "anon");//校验用户是否存在
        filterChainDefinitionMap.put("/sys/user/register", "anon");//用户注册
        filterChainDefinitionMap.put("/sys/user/phoneVerification", "anon");//用户忘记密码验证手机号
        filterChainDefinitionMap.put("/sys/user/passwordChange", "anon");//用户更改密码
        filterChainDefinitionMap.put("/sys/api/sendTemplateAnnouncement", "anon");//通知 TODO ä½¿ç”¨fegin免token方案
        filterChainDefinitionMap.put("/sys/api/sendCustomMsg", "anon");//通知 TODO ä½¿ç”¨fegin免token方案
        filterChainDefinitionMap.put("/auth/2step-code", "anon");//登录验证码
        filterChainDefinitionMap.put("/sys/common/static/**", "anon");//图片预览 &下载文件不限制token
        filterChainDefinitionMap.put("/desk/file/static/**", "anon");//图片预览 &下载文件不限制token
        filterChainDefinitionMap.put("/sys/common/pdf/**", "anon");//pdf预览
        filterChainDefinitionMap.put("/generic/**", "anon");//pdf预览需要文件
        filterChainDefinitionMap.put("/", "anon");
        filterChainDefinitionMap.put("/doc.html", "anon");
        filterChainDefinitionMap.put("/**/*.js", "anon");
        filterChainDefinitionMap.put("/**/*.css", "anon");
        filterChainDefinitionMap.put("/**/*.html", "anon");
        filterChainDefinitionMap.put("/**/*.svg", "anon");
        filterChainDefinitionMap.put("/**/*.pdf", "anon");
        filterChainDefinitionMap.put("/**/*.jpg", "anon");
        filterChainDefinitionMap.put("/**/*.png", "anon");
        filterChainDefinitionMap.put("/**/*.ico", "anon");
        // update-begin--Author:sunjianlei Date:20190813 for:排除字体格式的后缀
        filterChainDefinitionMap.put("/**/*.ttf", "anon");
        filterChainDefinitionMap.put("/**/*.woff", "anon");
        filterChainDefinitionMap.put("/**/*.woff2", "anon");
        // update-begin--Author:sunjianlei Date:20190813 for:排除字体格式的后缀
        filterChainDefinitionMap.put("/druid/**", "anon");
        filterChainDefinitionMap.put("/swagger-ui.html", "anon");
        filterChainDefinitionMap.put("/swagger**/**", "anon");
        filterChainDefinitionMap.put("/webjars/**", "anon");
        filterChainDefinitionMap.put("/v2/**", "anon");
        filterChainDefinitionMap.put("/sys/annountCement/show/**", "anon");
        //积木报表排除
        filterChainDefinitionMap.put("/jmreport/**", "anon");
        filterChainDefinitionMap.put("/**/*.js.map", "anon");
        filterChainDefinitionMap.put("/**/*.css.map", "anon");
        //测试示例
        filterChainDefinitionMap.put("/test/bigScreen/**", "anon"); //大屏模板例子
        //filterChainDefinitionMap.put("/test/jeecgDemo/rabbitMqClientTest/**", "anon"); //MQ测试
        //filterChainDefinitionMap.put("/test/jeecgDemo/html", "anon"); //模板页面
        //filterChainDefinitionMap.put("/test/jeecgDemo/redis/**", "anon"); //redis测试
        //websocket排除
        filterChainDefinitionMap.put("/websocket/**", "anon");//系统通知和公告
        filterChainDefinitionMap.put("/newsWebsocket/**", "anon");//CMS模块
        filterChainDefinitionMap.put("/vxeSocket/**", "anon");//JVxeTable无痕刷新示例
        //性能监控  TODO å­˜åœ¨å®‰å…¨æ¼æ´žæ³„露TOEKN(durid连接池也有)
        filterChainDefinitionMap.put("/actuator/**", "anon");
        // lb-doc文控管理: æ–‡ä»¶ä¸‹è½½é¢„览
        filterChainDefinitionMap.put("/fileTransfer/downloadfile/**", "anon");
        filterChainDefinitionMap.put("/fileTransfer/encryptDownload/**", "anon");
        filterChainDefinitionMap.put("/fileTransfer/encryptUpload/**", "anon");
        filterChainDefinitionMap.put("/fileTransfer/batchDownloadFile/**", "anon");
        filterChainDefinitionMap.put("/fileTransfer/preview/**", "anon");
        filterChainDefinitionMap.put("/office/IndexServlet/**", "anon");
        filterChainDefinitionMap.put("/document/test/**", "anon");
        // activiti
        filterChainDefinitionMap.put("/act/**", "anon");
        filterChainDefinitionMap.put("/activiti/**", "anon");
        filterChainDefinitionMap.put("/diagram-viewer/**", "anon");
        filterChainDefinitionMap.put("/editor-app/**", "anon");
        // æ·»åŠ è‡ªå·±çš„è¿‡æ»¤å™¨å¹¶ä¸”å–åä¸ºjwt
        Map<String, Filter> filterMap = new HashMap<String, Filter>(1);
        //如果cloudServer为空 åˆ™è¯´æ˜Žæ˜¯å•体 éœ€è¦åŠ è½½è·¨åŸŸé…ç½®ã€å¾®æœåŠ¡è·¨åŸŸåˆ‡æ¢ã€‘
        Object cloudServer = env.getProperty(CommonConstant.CLOUD_SERVER_KEY);
        filterMap.put("jwt", new JwtFilter(cloudServer==null));
        shiroFilterFactoryBean.setFilters(filterMap);
        // <!-- è¿‡æ»¤é“¾å®šä¹‰ï¼Œä»Žä¸Šå‘下顺序执行,一般将/**放在最为下边
        filterChainDefinitionMap.put("/**", "jwt");
        // æœªæŽˆæƒç•Œé¢è¿”回JSON
        shiroFilterFactoryBean.setUnauthorizedUrl("/sys/common/403");
        shiroFilterFactoryBean.setLoginUrl("/sys/common/403");
        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
        return shiroFilterFactoryBean;
    }
    @Bean("securityManager")
    public DefaultWebSecurityManager securityManager(ShiroRealm myRealm) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(myRealm);
        /*
         * å…³é—­shiro自带的session,详情见文档
         * http://shiro.apache.org/session-management.html#SessionManagement-
         * StatelessApplications%28Sessionless%29
         */
        DefaultSubjectDAO subjectDAO = new DefaultSubjectDAO();
        DefaultSessionStorageEvaluator defaultSessionStorageEvaluator = new DefaultSessionStorageEvaluator();
        defaultSessionStorageEvaluator.setSessionStorageEnabled(false);
        subjectDAO.setSessionStorageEvaluator(defaultSessionStorageEvaluator);
        securityManager.setSubjectDAO(subjectDAO);
        //自定义缓存实现,使用redis
        securityManager.setCacheManager(redisCacheManager());
        return securityManager;
    }
    /**
     * ä¸‹é¢çš„代码是添加注解支持
     * @return
     */
    @Bean
    @DependsOn("lifecycleBeanPostProcessor")
    public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
        DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator = new DefaultAdvisorAutoProxyCreator();
        defaultAdvisorAutoProxyCreator.setProxyTargetClass(true);
        /**
         * è§£å†³é‡å¤ä»£ç†é—®é¢˜ github#994
         * æ·»åŠ å‰ç¼€åˆ¤æ–­ ä¸åŒ¹é… ä»»ä½•Advisor
         */
        defaultAdvisorAutoProxyCreator.setUsePrefix(true);
        defaultAdvisorAutoProxyCreator.setAdvisorBeanNamePrefix("_no_advisor");
        return defaultAdvisorAutoProxyCreator;
    }
    @Bean
    public static LifecycleBeanPostProcessor lifecycleBeanPostProcessor() {
        return new LifecycleBeanPostProcessor();
    }
    @Bean
    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(DefaultWebSecurityManager securityManager) {
        AuthorizationAttributeSourceAdvisor advisor = new AuthorizationAttributeSourceAdvisor();
        advisor.setSecurityManager(securityManager);
        return advisor;
    }
    /**
     * cacheManager ç¼“å­˜ redis实现
     * ä½¿ç”¨çš„æ˜¯shiro-redis开源插件
     *
     * @return
     */
    public RedisCacheManager redisCacheManager() {
        log.info("===============(1)创建缓存管理器RedisCacheManager");
        RedisCacheManager redisCacheManager = new RedisCacheManager();
        redisCacheManager.setRedisManager(redisManager());
        //redis中针对不同用户缓存(此处的id需要对应user实体中的id字段,用于唯一标识)
        redisCacheManager.setPrincipalIdFieldName("id");
        //用户权限信息缓存时间
        redisCacheManager.setExpire(200000);
        return redisCacheManager;
    }
    /**
     * é…ç½®shiro redisManager
     * ä½¿ç”¨çš„æ˜¯shiro-redis开源插件
     *
     * @return
     */
    @Bean
    public IRedisManager redisManager() {
        log.info("===============(2)创建RedisManager,连接Redis..");
        IRedisManager manager;
        // redis å•机支持,在集群为空,或者集群无机器时候使用 add by jzyadmin@163.com
        if (lettuceConnectionFactory.getClusterConfiguration() == null || lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().isEmpty()) {
            RedisManager redisManager = new RedisManager();
            redisManager.setHost(lettuceConnectionFactory.getHostName());
            redisManager.setPort(lettuceConnectionFactory.getPort());
            redisManager.setDatabase(lettuceConnectionFactory.getDatabase());
            redisManager.setTimeout(0);
            if (!StringUtils.isEmpty(lettuceConnectionFactory.getPassword())) {
                redisManager.setPassword(lettuceConnectionFactory.getPassword());
            }
            manager = redisManager;
        }else{
            // redis集群支持,优先使用集群配置
            RedisClusterManager redisManager = new RedisClusterManager();
            Set<HostAndPort> portSet = new HashSet<>();
            lettuceConnectionFactory.getClusterConfiguration().getClusterNodes().forEach(node -> portSet.add(new HostAndPort(node.getHost() , node.getPort())));
            //update-begin--Author:scott Date:20210531 for:修改集群模式下未设置redis密码的bug issues/I3QNIC
            if (oConvertUtils.isNotEmpty(lettuceConnectionFactory.getPassword())) {
                JedisCluster jedisCluster = new JedisCluster(portSet, 2000, 2000, 5,
                    lettuceConnectionFactory.getPassword(), new GenericObjectPoolConfig());
                redisManager.setPassword(lettuceConnectionFactory.getPassword());
                redisManager.setJedisCluster(jedisCluster);
            } else {
                JedisCluster jedisCluster = new JedisCluster(portSet);
                redisManager.setJedisCluster(jedisCluster);
            }
            //update-end--Author:scott Date:20210531 for:修改集群模式下未设置redis密码的bug issues/I3QNIC
            manager = redisManager;
        }
        return manager;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,195 @@
package org.jeecg.config.shiro;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.jeecg.common.api.CommonAPI;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.RedisUtil;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.mybatis.TenantContext;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.util.Set;
/**
 * @Description: ç”¨æˆ·ç™»å½•鉴权和获取用户授权
 * @Author: Scott
 * @Date: 2019-4-23 8:13
 * @Version: 1.1
 */
@Component
@Slf4j
public class ShiroRealm extends AuthorizingRealm {
    @Lazy
    @Resource
    private CommonAPI commonAPI;
    @Lazy
    @Resource
    private RedisUtil redisUtil;
    /**
     * å¿…须重写此方法,不然Shiro会报错
     */
    @Override
    public boolean supports(AuthenticationToken token) {
        return token instanceof JwtToken;
    }
    /**
     * æƒé™ä¿¡æ¯è®¤è¯(包括角色以及权限)是用户访问controller的时候才进行验证(redis存储的此处权限信息)
     * è§¦å‘检测用户权限时才会调用此方法,例如checkRole,checkPermission
     *
     * @param principals èº«ä»½ä¿¡æ¯
     * @return AuthorizationInfo æƒé™ä¿¡æ¯
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        log.info("===============Shiro权限认证开始============ [ roles、permissions]==========");
        String username = null;
        if (principals != null) {
            LoginUser sysUser = (LoginUser) principals.getPrimaryPrincipal();
            username = sysUser.getUsername();
        }
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        // è®¾ç½®ç”¨æˆ·æ‹¥æœ‰çš„角色集合,比如“admin,test”
        Set<String> roleSet = commonAPI.queryUserRoles(username);
        System.out.println(roleSet.toString());
        info.setRoles(roleSet);
        // è®¾ç½®ç”¨æˆ·æ‹¥æœ‰çš„æƒé™é›†åˆï¼Œæ¯”如“sys:role:add,sys:user:add”
        Set<String> permissionSet = commonAPI.queryUserAuths(username);
        info.addStringPermissions(permissionSet);
        System.out.println(permissionSet);
        log.info("===============Shiro权限认证成功==============");
        return info;
    }
    /**
     * ç”¨æˆ·ä¿¡æ¯è®¤è¯æ˜¯åœ¨ç”¨æˆ·è¿›è¡Œç™»å½•的时候进行验证(不存redis)
     * ä¹Ÿå°±æ˜¯è¯´éªŒè¯ç”¨æˆ·è¾“入的账号和密码是否正确,错误抛出异常
     *
     * @param auth ç”¨æˆ·ç™»å½•的账号密码信息
     * @return è¿”回封装了用户信息的 AuthenticationInfo å®žä¾‹
     * @throws AuthenticationException
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException {
        log.debug("===============Shiro身份认证开始============doGetAuthenticationInfo==========");
        String token = (String) auth.getCredentials();
        if (token == null) {
            log.info("————————身份认证失败——————————IP地址:  "+ oConvertUtils.getIpAddrByRequest(SpringContextUtils.getHttpServletRequest()));
            throw new AuthenticationException("token为空!");
        }
        // æ ¡éªŒtoken有效性
        LoginUser loginUser = null;
        try {
            loginUser = this.checkUserTokenIsEffect(token);
        } catch (AuthenticationException e) {
            JwtUtil.responseError(SpringContextUtils.getHttpServletResponse(),401,e.getMessage());
            e.printStackTrace();
            return null;
        }
        return new SimpleAuthenticationInfo(loginUser, token, getName());
    }
    /**
     * æ ¡éªŒtoken的有效性
     *
     * @param token
     */
    public LoginUser checkUserTokenIsEffect(String token) throws AuthenticationException {
        // è§£å¯†èŽ·å¾—username,用于和数据库进行对比
        String username = JwtUtil.getUsername(token);
        if (username == null) {
            throw new AuthenticationException("token非法无效!");
        }
        // æŸ¥è¯¢ç”¨æˆ·ä¿¡æ¯
        log.debug("———校验token是否有效————checkUserTokenIsEffect——————— "+ token);
        LoginUser loginUser = commonAPI.getUserByName(username);
        if (loginUser == null) {
            throw new AuthenticationException("用户不存在!");
        }
        // åˆ¤æ–­ç”¨æˆ·çŠ¶æ€
        if (loginUser.getStatus() != 1) {
            throw new AuthenticationException("账号已被锁定,请联系管理员!");
        }
        // æ ¡éªŒtoken是否超时失效 & æˆ–者账号密码是否错误
        if (!jwtTokenRefresh(token, username, loginUser.getPassword())) {
            throw new AuthenticationException(CommonConstant.TOKEN_IS_INVALID_MSG);
        }
        //update-begin-author:taoyan date:20210609 for:校验用户的tenant_id和前端传过来的是否一致
        String userTenantIds = loginUser.getRelTenantIds();
        if(oConvertUtils.isNotEmpty(userTenantIds)){
            String contextTenantId = TenantContext.getTenant();
            if(oConvertUtils.isNotEmpty(contextTenantId) && !"0".equals(contextTenantId)){
                if(String.join(",",userTenantIds).indexOf(contextTenantId)<0){
                    throw new AuthenticationException("用户租户信息变更,请重新登陆!");
                }
            }
        }
        //update-end-author:taoyan date:20210609 for:校验用户的tenant_id和前端传过来的是否一致
        return loginUser;
    }
    /**
     * JWTToken刷新生命周期 ï¼ˆå®žçŽ°ï¼š ç”¨æˆ·åœ¨çº¿æ“ä½œä¸æŽ‰çº¿åŠŸèƒ½ï¼‰
     * 1、登录成功后将用户的JWT生成的Token作为k、v存储到cache缓存里面(这时候k、v值一样),缓存有效期设置为Jwt有效时间的2倍
     * 2、当该用户再次请求时,通过JWTFilter层层校验之后会进入到doGetAuthenticationInfo进行身份验证
     * 3、当该用户这次请求jwt生成的token值已经超时,但该token对应cache中的k还是存在,则表示该用户一直在操作只是JWT的token失效了,程序会给token对应的k映射的v值重新生成JWTToken并覆盖v值,该缓存生命周期重新计算
     * 4、当该用户这次请求jwt在生成的token值已经超时,并在cache中不存在对应的k,则表示该用户账户空闲超时,返回用户信息已失效,请重新登录。
     * æ³¨æ„ï¼š å‰ç«¯è¯·æ±‚Header中设置Authorization保持不变,校验有效性以缓存中的token为准。
     *       ç”¨æˆ·è¿‡æœŸæ—¶é—´ = Jwt有效时间 * 2。
     *
     * @param userName
     * @param passWord
     * @return
     */
    public boolean jwtTokenRefresh(String token, String userName, String passWord) {
        String cacheToken = String.valueOf(redisUtil.get(CommonConstant.PREFIX_USER_TOKEN + token));
        if (oConvertUtils.isNotEmpty(cacheToken)) {
            // æ ¡éªŒtoken有效性
            if (!JwtUtil.verify(cacheToken, userName, passWord)) {
                String newAuthorization = JwtUtil.sign(userName, passWord);
                // è®¾ç½®è¶…æ—¶æ—¶é—´
                redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, newAuthorization);
                redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME *2 / 1000);
                log.debug("——————————用户在线操作,更新token保证不掉线—————————jwtTokenRefresh——————— "+ token);
            }
            //update-begin--Author:scott  Date:20191005  for:解决每次请求,都重写redis中 token缓存问题
//            else {
//                // è®¾ç½®è¶…æ—¶æ—¶é—´
//                redisUtil.set(CommonConstant.PREFIX_USER_TOKEN + token, cacheToken);
//                redisUtil.expire(CommonConstant.PREFIX_USER_TOKEN + token, JwtUtil.EXPIRE_TIME / 1000);
//            }
            //update-end--Author:scott  Date:20191005   for:解决每次请求,都重写redis中 token缓存问题
            return true;
        }
        return false;
    }
    /**
     * æ¸…除当前用户的权限认证缓存
     *
     * @param principals æƒé™ä¿¡æ¯
     */
    @Override
    public void clearCache(PrincipalCollection principals) {
        super.clearCache(principals);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/CustomShiroFilterFactoryBean.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package org.jeecg.config.shiro.filters;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.spring.web.ShiroFilterFactoryBean;
import org.apache.shiro.web.filter.InvalidRequestFilter;
import org.apache.shiro.web.filter.mgt.DefaultFilter;
import org.apache.shiro.web.filter.mgt.FilterChainManager;
import org.apache.shiro.web.filter.mgt.FilterChainResolver;
import org.apache.shiro.web.filter.mgt.PathMatchingFilterChainResolver;
import org.apache.shiro.web.mgt.WebSecurityManager;
import org.apache.shiro.web.servlet.AbstractShiroFilter;
import org.apache.shiro.mgt.SecurityManager;
import org.springframework.beans.factory.BeanInitializationException;
import javax.servlet.Filter;
import java.util.Map;
/**
 * è‡ªå®šä¹‰ShiroFilterFactoryBean解决资源中文路径问题
 */
@Slf4j
public class CustomShiroFilterFactoryBean extends ShiroFilterFactoryBean {
    @Override
    public Class getObjectType() {
        return MySpringShiroFilter.class;
    }
    @Override
    protected AbstractShiroFilter createInstance() throws Exception {
        SecurityManager securityManager = getSecurityManager();
        if (securityManager == null) {
            String msg = "SecurityManager property must be set.";
            throw new BeanInitializationException(msg);
        }
        if (!(securityManager instanceof WebSecurityManager)) {
            String msg = "The security manager does not implement the WebSecurityManager interface.";
            throw new BeanInitializationException(msg);
        }
        FilterChainManager manager = createFilterChainManager();
        //Expose the constructed FilterChainManager by first wrapping it in a
        // FilterChainResolver implementation. The AbstractShiroFilter implementations
        // do not know about FilterChainManagers - only resolvers:
        PathMatchingFilterChainResolver chainResolver = new PathMatchingFilterChainResolver();
        chainResolver.setFilterChainManager(manager);
        Map<String, Filter> filterMap = manager.getFilters();
        Filter invalidRequestFilter = filterMap.get(DefaultFilter.invalidRequest.name());
        if (invalidRequestFilter instanceof InvalidRequestFilter) {
            //此处是关键,设置false跳过URL携带中文400,servletPath中文校验bug
            ((InvalidRequestFilter) invalidRequestFilter).setBlockNonAscii(false);
        }
        //Now create a concrete ShiroFilter instance and apply the acquired SecurityManager and built
        //FilterChainResolver.  It doesn't matter that the instance is an anonymous inner class
        //here - we're just using it because it is a concrete AbstractShiroFilter instance that accepts
        //injection of the SecurityManager and FilterChainResolver:
        return new MySpringShiroFilter((WebSecurityManager) securityManager, chainResolver);
    }
    private static final class MySpringShiroFilter extends AbstractShiroFilter {
        protected MySpringShiroFilter(WebSecurityManager webSecurityManager, FilterChainResolver resolver) {
            if (webSecurityManager == null) {
                throw new IllegalArgumentException("WebSecurityManager property cannot be null.");
            } else {
                this.setSecurityManager(webSecurityManager);
                if (resolver != null) {
                    this.setFilterChainResolver(resolver);
                }
            }
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/JwtFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,104 @@
package org.jeecg.config.shiro.filters;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.system.util.JwtUtil;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.mybatis.TenantContext;
import org.jeecg.config.shiro.JwtToken;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @Description: é‰´æƒç™»å½•拦截器
 * @Author: Scott
 * @Date: 2018/10/7
 **/
@Slf4j
public class JwtFilter extends BasicHttpAuthenticationFilter {
    /**
     * é»˜è®¤å¼€å¯è·¨åŸŸè®¾ç½®ï¼ˆä½¿ç”¨å•体)
     * å¾®æœåŠ¡æƒ…å†µä¸‹ï¼Œæ­¤å±žæ€§è®¾ç½®ä¸ºfalse
     */
    private boolean allowOrigin = true;
    public JwtFilter(){}
    public JwtFilter(boolean allowOrigin){
        this.allowOrigin = allowOrigin;
    }
    /**
     * æ‰§è¡Œç™»å½•认证
     *
     * @param request
     * @param response
     * @param mappedValue
     * @return
     */
    @Override
    protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
        try {
            executeLogin(request, response);
            return true;
        } catch (Exception e) {
            JwtUtil.responseError(response,401,CommonConstant.TOKEN_IS_INVALID_MSG);
            return false;
            //throw new AuthenticationException("Token失效,请重新登录", e);
        }
    }
    /**
     *
     */
    @Override
    protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        String token = httpServletRequest.getHeader(CommonConstant.X_ACCESS_TOKEN);
        // update-begin--Author:lvdandan Date:20210105 for:JT-355 OA聊天添加token验证,获取token参数
        if (oConvertUtils.isEmpty(token)) {
            token = httpServletRequest.getParameter("token");
        }
        // update-end--Author:lvdandan Date:20210105 for:JT-355 OA聊天添加token验证,获取token参数
        JwtToken jwtToken = new JwtToken(token);
        // æäº¤ç»™realm进行登入,如果错误他会抛出异常并被捕获
        getSubject(request, response).login(jwtToken);
        // å¦‚果没有抛出异常则代表登入成功,返回true
        return true;
    }
    /**
     * å¯¹è·¨åŸŸæä¾›æ”¯æŒ
     */
    @Override
    protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception {
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        HttpServletResponse httpServletResponse = (HttpServletResponse) response;
        if(allowOrigin){
            httpServletResponse.setHeader("Access-control-Allow-Origin", httpServletRequest.getHeader("Origin"));
            httpServletResponse.setHeader("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE");
            httpServletResponse.setHeader("Access-Control-Allow-Headers", httpServletRequest.getHeader("Access-Control-Request-Headers"));
            //update-begin-author:scott date:20200907 for:issues/I1TAAP å‰åŽç«¯åˆ†ç¦»ï¼Œshiro过滤器配置引起的跨域问题
            // æ˜¯å¦å…è®¸å‘送Cookie,默认Cookie不包括在CORS请求之中。设为true时,表示服务器允许Cookie包含在请求中。
            httpServletResponse.setHeader("Access-Control-Allow-Credentials", "true");
            //update-end-author:scott date:20200907 for:issues/I1TAAP å‰åŽç«¯åˆ†ç¦»ï¼Œshiro过滤器配置引起的跨域问题
        }
        // è·¨åŸŸæ—¶ä¼šé¦–先发送一个option请求,这里我们给option请求直接返回正常状态
        if (httpServletRequest.getMethod().equals(RequestMethod.OPTIONS.name())) {
            httpServletResponse.setStatus(HttpStatus.OK.value());
            return false;
        }
        //update-begin-author:taoyan date:20200708 for:多租户用到
        String tenant_id = httpServletRequest.getHeader(CommonConstant.TENANT_ID);
        TenantContext.setTenant(tenant_id);
        //update-end-author:taoyan date:20200708 for:多租户用到
        return super.preHandle(request, response);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/filters/ResourceCheckFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package org.jeecg.config.shiro.filters;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.web.filter.AccessControlFilter;
import lombok.extern.slf4j.Slf4j;
/**
 * @Author Scott
 * @create 2019-02-01 15:56
 * @desc é‰´æƒè¯·æ±‚URL访问权限拦截器
 */
@Slf4j
public class ResourceCheckFilter extends AccessControlFilter {
    private String errorUrl;
    public String getErrorUrl() {
        return errorUrl;
    }
    public void setErrorUrl(String errorUrl) {
        this.errorUrl = errorUrl;
    }
    /**
     * è¡¨ç¤ºæ˜¯å¦å…è®¸è®¿é—® ï¼Œå¦‚果允许访问返回true,否则false;
     *
     * @param servletRequest
     * @param servletResponse
     * @param o               è¡¨ç¤ºå†™åœ¨æ‹¦æˆªå™¨ä¸­æ‹¬å·é‡Œé¢çš„字符串 mappedValue å°±æ˜¯ [urls] é…ç½®ä¸­æ‹¦æˆªå™¨å‚数部分
     * @return
     * @throws Exception
     */
    @Override
    protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object o) throws Exception {
        Subject subject = getSubject(servletRequest, servletResponse);
        String url = getPathWithinApplication(servletRequest);
        log.info("当前用户正在访问的 url => " + url);
        return subject.isPermitted(url);
    }
    /**
     * onAccessDenied:表示当访问拒绝时是否已经处理了; å¦‚果返回 true è¡¨ç¤ºéœ€è¦ç»§ç»­å¤„理; å¦‚果返回 false
     * è¡¨ç¤ºè¯¥æ‹¦æˆªå™¨å®žä¾‹å·²ç»å¤„理了,将直接返回即可。
     *
     * @param servletRequest
     * @param servletResponse
     * @return
     * @throws Exception
     */
    @Override
    protected boolean onAccessDenied(ServletRequest servletRequest, ServletResponse servletResponse) throws Exception {
        log.info("当 isAccessAllowed è¿”回 false çš„æ—¶å€™ï¼Œæ‰ä¼šæ‰§è¡Œ method onAccessDenied ");
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.sendRedirect(request.getContextPath() + this.errorUrl);
        // è¿”回 false è¡¨ç¤ºå·²ç»å¤„理,例如页面跳转啥的,表示不在走以下的拦截器了(如果还有配置的话)
        return false;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthConfiguration.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package org.jeecg.config.sign.interceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * ç­¾å æ‹¦æˆªå™¨é…ç½®
 */
@Configuration
public class SignAuthConfiguration implements WebMvcConfigurer {
    public static String[] urlList = new String[] {"/sys/dict/getDictItems/*", "/sys/dict/loadDict/*",
            "/sys/dict/loadDictOrderByValue/*", "/sys/dict/loadDictItem/*", "/sys/dict/loadTreeData",
            "/sys/api/queryTableDictItemsByCode", "/sys/api/queryFilterTableDictInfo", "/sys/api/queryTableDictByKeys",
            "/sys/api/translateDictFromTable", "/sys/api/translateDictFromTableByKeys"};
    @Bean
    public SignAuthInterceptor signAuthInterceptor() {
        return new SignAuthInterceptor();
    }
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(signAuthInterceptor()).addPathPatterns(urlList);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/interceptor/SignAuthInterceptor.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,74 @@
package org.jeecg.config.sign.interceptor;
import java.io.PrintWriter;
import java.util.SortedMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.DateUtils;
import org.jeecg.config.sign.util.BodyReaderHttpServletRequestWrapper;
import org.jeecg.config.sign.util.HttpUtils;
import org.jeecg.config.sign.util.SignUtil;
import org.springframework.web.servlet.HandlerInterceptor;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
/**
 * ç­¾åæ‹¦æˆªå™¨
 * @author qinfeng
 */
@Slf4j
public class SignAuthInterceptor implements HandlerInterceptor {
    /**
     * 5分钟有效期
     */
    private final static long MAX_EXPIRE = 5 * 60;
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        log.info("request URI = " + request.getRequestURI());
        HttpServletRequest requestWrapper = new BodyReaderHttpServletRequestWrapper(request);
        //获取全部参数(包括URL和body上的)
        SortedMap<String, String> allParams = HttpUtils.getAllParams(requestWrapper);
        //对参数进行签名验证
        String headerSign = request.getHeader(CommonConstant.X_SIGN);
        String timesTamp = request.getHeader(CommonConstant.X_TIMESTAMP);
        //1.校验时间有消息
        try {
            DateUtils.parseDate(timesTamp, "yyyyMMddHHmmss");
        } catch (Exception e) {
            throw new IllegalArgumentException("签名验证失败:X-TIMESTAMP格式必须为:yyyyMMddHHmmss");
        }
        Long clientTimestamp = Long.parseLong(timesTamp);
        //判断时间戳 timestamp=201808091113
        if ((DateUtils.getCurrentTimestamp() - clientTimestamp) > MAX_EXPIRE) {
            throw new IllegalArgumentException("签名验证失败:X-TIMESTAMP已过期");
        }
        //2.校验签名
        boolean isSigned = SignUtil.verifySign(allParams,headerSign);
        if (isSigned) {
            log.debug("Sign ç­¾åé€šè¿‡ï¼Header Sign : {}",headerSign);
            return true;
        } else {
            log.error("request URI = " + request.getRequestURI());
            log.error("Sign ç­¾åæ ¡éªŒå¤±è´¥ï¼Header Sign : {}",headerSign);
            //校验失败返回前端
            response.setCharacterEncoding("UTF-8");
            response.setContentType("application/json; charset=utf-8");
            PrintWriter out = response.getWriter();
            Result<?> result = Result.error("Sign签名校验失败!");
            out.print(JSON.toJSON(result));
            return false;
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/BodyReaderHttpServletRequestWrapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,107 @@
package org.jeecg.config.sign.util;
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.ServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.*;
import java.nio.charset.Charset;
/**
 * ä¿å­˜è¿‡æ»¤å™¨é‡Œé¢çš„æµ
 *
 * @author jeecg
 * @date 20210621
 */
public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapper {
    private final byte[] body;
    public BodyReaderHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        String sessionStream = getBodyString(request);
        body = sessionStream.getBytes(Charset.forName("UTF-8"));
    }
    /**
     * èŽ·å–è¯·æ±‚Body
     *
     * @param request
     * @return
     */
    public String getBodyString(final ServletRequest request) {
        StringBuilder sb = new StringBuilder();
        try (InputStream inputStream = cloneInputStream(request.getInputStream());
            BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")))) {
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb.toString();
    }
    /**
     * Description: å¤åˆ¶è¾“入流</br>
     *
     * @param inputStream
     * @return</br>
     */
    public InputStream cloneInputStream(ServletInputStream inputStream) {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        try {
            while ((len = inputStream.read(buffer)) > -1) {
                byteArrayOutputStream.write(buffer, 0, len);
            }
            byteArrayOutputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    }
    @Override
    public BufferedReader getReader() {
        return new BufferedReader(new InputStreamReader(getInputStream()));
    }
    @Override
    public ServletInputStream getInputStream() {
        final ByteArrayInputStream bais = new ByteArrayInputStream(body);
        return new ServletInputStream() {
            @Override
            public int read() {
                return bais.read();
            }
            @Override
            public boolean isFinished() {
                return false;
            }
            @Override
            public boolean isReady() {
                return false;
            }
            @Override
            public void setReadListener(ReadListener readListener) {
            }
        };
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/HttpUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,186 @@
package org.jeecg.config.sign.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.HashMap;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import javax.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.http.HttpMethod;
import com.alibaba.fastjson.JSONObject;
/**
 * http å·¥å…·ç±» èŽ·å–è¯·æ±‚ä¸­çš„å‚æ•°
 *
 * @author jeecg
 * @date 20210621
 */
@Slf4j
public class HttpUtils {
    /**
     * å°†URL的参数和body参数合并
     *
     * @author jeecg
     * @date 20210621
     * @param request
     */
    public static SortedMap<String, String> getAllParams(HttpServletRequest request) throws IOException {
        SortedMap<String, String> result = new TreeMap<>();
        // èŽ·å–URL上最后带逗号的参数变量 sys/dict/getDictItems/sys_user,realname,username
        String pathVariable = request.getRequestURI().substring(request.getRequestURI().lastIndexOf("/") + 1);
        if (pathVariable.contains(",")) {
            log.info(" pathVariable: {}",pathVariable);
            String deString = URLDecoder.decode(pathVariable, "UTF-8");
            log.info(" pathVariable decode: {}",deString);
            result.put(SignUtil.xPathVariable, deString);
        }
        // èŽ·å–URL上的参数
        Map<String, String> urlParams = getUrlParams(request);
        for (Map.Entry entry : urlParams.entrySet()) {
            result.put((String)entry.getKey(), (String)entry.getValue());
        }
        Map<String, String> allRequestParam = new HashMap<>(16);
        // get请求不需要拿body参数
        if (!HttpMethod.GET.name().equals(request.getMethod())) {
            allRequestParam = getAllRequestParam(request);
        }
        // å°†URL的参数和body参数进行合并
        if (allRequestParam != null) {
            for (Map.Entry entry : allRequestParam.entrySet()) {
                result.put((String)entry.getKey(), (String)entry.getValue());
            }
        }
        return result;
    }
    /**
     * å°†URL的参数和body参数合并
     *
     * @author jeecg
     * @date 20210621
     * @param queryString
     */
    public static SortedMap<String, String> getAllParams(String url, String queryString, byte[] body, String method)
        throws IOException {
        SortedMap<String, String> result = new TreeMap<>();
        // èŽ·å–URL上最后带逗号的参数变量 sys/dict/getDictItems/sys_user,realname,username
        String pathVariable = url.substring(url.lastIndexOf("/") + 1);
        if (pathVariable.contains(",")) {
            log.info(" pathVariable: {}",pathVariable);
            String deString = URLDecoder.decode(pathVariable, "UTF-8");
            log.info(" pathVariable decode: {}",deString);
            result.put(SignUtil.xPathVariable, deString);
        }
        // èŽ·å–URL上的参数
        Map<String, String> urlParams = getUrlParams(queryString);
        for (Map.Entry entry : urlParams.entrySet()) {
            result.put((String)entry.getKey(), (String)entry.getValue());
        }
        Map<String, String> allRequestParam = new HashMap<>(16);
        // get请求不需要拿body参数
        if (!HttpMethod.GET.name().equals(method)) {
            allRequestParam = getAllRequestParam(body);
        }
        // å°†URL的参数和body参数进行合并
        if (allRequestParam != null) {
            for (Map.Entry entry : allRequestParam.entrySet()) {
                result.put((String)entry.getKey(), (String)entry.getValue());
            }
        }
        return result;
    }
    /**
     * èŽ·å– Body å‚æ•°
     *
     * @date 15:04 20210621
     * @param request
     */
    public static Map<String, String> getAllRequestParam(final HttpServletRequest request) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream()));
        String str = "";
        StringBuilder wholeStr = new StringBuilder();
        // ä¸€è¡Œä¸€è¡Œçš„读取body体里面的内容;
        while ((str = reader.readLine()) != null) {
            wholeStr.append(str);
        }
        // è½¬åŒ–成json对象
        return JSONObject.parseObject(wholeStr.toString(), Map.class);
    }
    /**
     * èŽ·å– Body å‚æ•°
     *
     * @date 15:04 20210621
     * @param body
     */
    public static Map<String, String> getAllRequestParam(final byte[] body) throws IOException {
        if(body==null){
            return null;
        }
        String wholeStr = new String(body);
        // è½¬åŒ–成json对象
        return JSONObject.parseObject(wholeStr.toString(), Map.class);
    }
    /**
     * å°†URL请求参数转换成Map
     *
     * @param request
     */
    public static Map<String, String> getUrlParams(HttpServletRequest request) {
        Map<String, String> result = new HashMap<>(16);
        if (oConvertUtils.isEmpty(request.getQueryString())) {
            return result;
        }
        String param = "";
        try {
            param = URLDecoder.decode(request.getQueryString(), "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String[] params = param.split("&");
        for (String s : params) {
            int index = s.indexOf("=");
            result.put(s.substring(0, index), s.substring(index + 1));
        }
        return result;
    }
    /**
     * å°†URL请求参数转换成Map
     *
     * @param queryString
     */
    public static Map<String, String> getUrlParams(String queryString) {
        Map<String, String> result = new HashMap<>(16);
        if (oConvertUtils.isEmpty(queryString)) {
            return result;
        }
        String param = "";
        try {
            param = URLDecoder.decode(queryString, "utf-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        String[] params = param.split("&");
        for (String s : params) {
            int index = s.indexOf("=");
            result.put(s.substring(0, index), s.substring(index + 1));
        }
        return result;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/sign/util/SignUtil.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package org.jeecg.config.sign.util;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.config.StaticConfig;
import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;
import java.util.SortedMap;
/**
 * ç­¾åå·¥å…·ç±»
 *
 * @author jeecg
 * @date 20210621
 */
@Slf4j
public class SignUtil {
    public static final String xPathVariable = "x-path-variable";
    /**
     * @param params
     *            æ‰€æœ‰çš„请求参数都会在这里进行排序加密
     * @return éªŒè¯ç­¾åç»“æžœ
     */
    public static boolean verifySign(SortedMap<String, String> params,String headerSign) {
        if (params == null || StringUtils.isEmpty(headerSign)) {
            return false;
        }
        // æŠŠå‚数加密
        String paramsSign = getParamsSign(params);
        log.info("Param Sign : {}", paramsSign);
        return !StringUtils.isEmpty(paramsSign) && headerSign.equals(paramsSign);
    }
    /**
     * @param params
     *            æ‰€æœ‰çš„请求参数都会在这里进行排序加密
     * @return å¾—到签名
     */
    public static String getParamsSign(SortedMap<String, String> params) {
        //去掉 Url é‡Œçš„æ—¶é—´æˆ³
        params.remove("_t");
        String paramsJsonStr = JSONObject.toJSONString(params);
        log.info("Param paramsJsonStr : {}", paramsJsonStr);
        StaticConfig staticConfig = SpringContextUtils.getBean(StaticConfig.class);
        String signatureSecret = staticConfig.getSignatureSecret();
        if(oConvertUtils.isEmpty(signatureSecret) || signatureSecret.contains("${")){
            throw new JeecgBootException("签名密钥 ${jeecg.signatureSecret} ç¼ºå°‘配置 ï¼ï¼");
        }
        return DigestUtils.md5DigestAsHex((paramsJsonStr + signatureSecret).getBytes()).toUpperCase();
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/thirdapp/ThirdAppConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,79 @@
package org.jeecg.config.thirdapp;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
/**
 * ç¬¬ä¸‰æ–¹App对接配置
 */
@Configuration
public class ThirdAppConfig {
    /**
     * é’‰é’‰
     */
    public final static String DINGTALK = "DINGTALK";
    /**
     * ä¼ä¸šå¾®ä¿¡
     */
    public final static String WECHAT_ENTERPRISE = "WECHAT_ENTERPRISE";
    /**
     * æ˜¯å¦å¯ç”¨ ç¬¬ä¸‰æ–¹App对接
     */
    @Value("${third-app.enabled:false}")
    private boolean enabled;
    /**
     * ç³»ç»Ÿç±»åž‹ï¼Œç›®å‰æ”¯æŒï¼šWECHAT_ENTERPRISE(企业微信);DINGTALK ï¼ˆé’‰é’‰ï¼‰
     */
    @Autowired
    private ThirdAppTypeConfig type;
    public boolean isEnabled() {
        return enabled;
    }
    public ThirdAppConfig setEnabled(boolean enabled) {
        this.enabled = enabled;
        return this;
    }
    /**
     * èŽ·å–ä¼ä¸šå¾®ä¿¡é…ç½®
     */
    public ThirdAppTypeItemVo getWechatEnterprise() {
        return this.type.getWECHAT_ENTERPRISE();
    }
    /**
     * èŽ·å–é’‰é’‰é…ç½®
     */
    public ThirdAppTypeItemVo getDingtalk() {
        return this.type.getDINGTALK();
    }
    /**
     * èŽ·å–ä¼ä¸šå¾®ä¿¡æ˜¯å¦å¯ç”¨
     */
    public boolean isWechatEnterpriseEnabled() {
        try {
            return this.enabled && this.getWechatEnterprise().isEnabled();
        } catch (Exception e) {
            return false;
        }
    }
    /**
     * èŽ·å–é’‰é’‰æ˜¯å¦å¯ç”¨
     */
    public boolean isDingtalkEnabled() {
        try {
            return this.enabled && this.getDingtalk().isEnabled();
        } catch (Exception e) {
            return false;
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/thirdapp/ThirdAppTypeConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
package org.jeecg.config.thirdapp;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
 * ç¬¬ä¸‰æ–¹APP配置
 *
 * @author sunjianlei
 */
@Data
@Configuration
@ConfigurationProperties(prefix = "third-app.type")
public class ThirdAppTypeConfig {
    /**
     * å¯¹åº”企业微信配置
     */
    private ThirdAppTypeItemVo WECHAT_ENTERPRISE;
    /**
     * å¯¹åº”钉钉配置
     */
    private ThirdAppTypeItemVo DINGTALK;
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/thirdapp/ThirdAppTypeItemVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package org.jeecg.config.thirdapp;
import lombok.Data;
/**
 * ç¬¬ä¸‰æ–¹App对接
 */
@Data
public class ThirdAppTypeItemVo {
    /**
     * æ˜¯å¦å¯ç”¨
     */
    private boolean enabled;
    /**
     * åº”用Key
     */
    private String clientId;
    /**
     * åº”用Secret
     */
    private String clientSecret;
    /**
     * åº”用ID
     */
    private String agentId;
    /**
     * ç›®å‰ä»…企业微信用到:自建应用Secret
     */
    private String agentAppSecret;
    public int getAgentIdInt() {
        return Integer.parseInt(agentId);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/BaseCommonMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.base.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import org.apache.ibatis.annotations.Param;
import org.jeecg.common.api.dto.LogDTO;
public interface BaseCommonMapper {
    /**
     * ä¿å­˜æ—¥å¿—
     * @param dto
     */
    //@SqlParser(filter=true)
    @InterceptorIgnore(illegalSql = "true", tenantLine = "true")
    void saveLog(@Param("dto")LogDTO dto);
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/mapper/xml/BaseCommonMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.base.mapper.BaseCommonMapper">
    <!-- ä¿å­˜æ—¥å¿—11 -->
    <insert id="saveLog" parameterType="Object">
        insert into sys_log (id, log_type, log_content, method, operate_type, request_param, ip, userid, username, cost_time, create_time)
        values(
            #{dto.id,jdbcType=VARCHAR},
            #{dto.logType,jdbcType=INTEGER},
            #{dto.logContent,jdbcType=VARCHAR},
            #{dto.method,jdbcType=VARCHAR},
            #{dto.operateType,jdbcType=INTEGER},
            #{dto.requestParam,jdbcType=VARCHAR},
            #{dto.ip,jdbcType=VARCHAR},
            #{dto.userid,jdbcType=VARCHAR},
            #{dto.username,jdbcType=VARCHAR},
            #{dto.costTime,jdbcType=BIGINT},
            #{dto.createTime,jdbcType=TIMESTAMP}
        )
    </insert>
</mapper>
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/BaseCommonService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.modules.base.service;
import org.jeecg.common.api.dto.LogDTO;
import org.jeecg.common.system.vo.LoginUser;
/**
 * common接口
 */
public interface BaseCommonService {
    /**
     * ä¿å­˜æ—¥å¿—
     * @param logDTO
     */
    void addLog(LogDTO logDTO);
    /**
     * ä¿å­˜æ—¥å¿—
     * @param LogContent
     * @param logType
     * @param operateType
     * @param user
     */
    void addLog(String LogContent, Integer logType, Integer operateType, LoginUser user);
    /**
     * ä¿å­˜æ—¥å¿—
     * @param LogContent
     * @param logType
     * @param operateType
     */
    void addLog(String LogContent, Integer logType, Integer operateType);
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/modules/base/service/impl/BaseCommonServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package org.jeecg.modules.base.service.impl;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.dto.LogDTO;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.modules.base.mapper.BaseCommonMapper;
import org.jeecg.modules.base.service.BaseCommonService;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
import org.jeecg.common.system.vo.SysUserCacheInfo;
import org.jeecg.common.util.IPUtils;
import org.jeecg.common.util.SpringContextUtils;
import org.jeecg.common.util.oConvertUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.util.AntPathMatcher;
import org.springframework.util.PathMatcher;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
@Service
@Slf4j
public class BaseCommonServiceImpl implements BaseCommonService {
    @Resource
    private BaseCommonMapper baseCommonMapper;
    @Override
    public void addLog(LogDTO logDTO) {
        if(oConvertUtils.isEmpty(logDTO.getId())){
            logDTO.setId(String.valueOf(IdWorker.getId()));
        }
        //保存日志(异常捕获处理,防止数据太大存储失败,导致业务失败)JT-238
        try {
            baseCommonMapper.saveLog(logDTO);
        } catch (Exception e) {
            log.warn(" LogContent length : "+logDTO.getLogContent().length());
            log.warn(e.getMessage());
        }
    }
    @Override
    public void addLog(String logContent, Integer logType, Integer operatetype, LoginUser user) {
        LogDTO sysLog = new LogDTO();
        sysLog.setId(String.valueOf(IdWorker.getId()));
        //注解上的描述,操作日志内容
        sysLog.setLogContent(logContent);
        sysLog.setLogType(logType);
        sysLog.setOperateType(operatetype);
        try {
            //获取request
            HttpServletRequest request = SpringContextUtils.getHttpServletRequest();
            //设置IP地址
            sysLog.setIp(IPUtils.getIpAddr(request));
        } catch (Exception e) {
            sysLog.setIp("127.0.0.1");
        }
        //获取登录用户信息
        if(user==null){
            try {
                user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
            } catch (Exception e) {
                //e.printStackTrace();
            }
        }
        if(user!=null){
            sysLog.setUserid(user.getUsername());
            sysLog.setUsername(user.getRealname());
        }
        sysLog.setCreateTime(new Date());
        //保存日志(异常捕获处理,防止数据太大存储失败,导致业务失败)JT-238
        try {
            baseCommonMapper.saveLog(sysLog);
        } catch (Exception e) {
            log.warn(" LogContent length : "+sysLog.getLogContent().length());
            log.warn(e.getMessage());
        }
    }
    @Override
    public void addLog(String logContent, Integer logType, Integer operateType) {
        addLog(logContent, logType, operateType, null);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-core/src/main/resources/static/pca.json
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,51 @@
{
  "86":{
    "110000":"北京市",
    "120000":"天津市",
    "130000":"河北省",
    "140000":"山西省",
    "150000":"内蒙古自治区",
    "210000":"辽宁省",
    "220000":"吉林省",
    "230000":"黑龙江省",
    "310000":"上海市",
    "320000":"江苏省",
    "330000":"浙江省",
    "340000":"安徽省",
    "350000":"福建省",
    "360000":"江西省",
    "370000":"山东省",
    "410000":"河南省",
    "420000":"湖北省",
    "430000":"湖南省",
    "440000":"广东省",
    "450000":"广西壮族自治区",
    "460000":"海南省",
    "500000":"重庆市",
    "510000":"四川省",
    "520000":"贵州省",
    "530000":"云南省",
    "540000":"西藏自治区",
    "610000":"陕西省",
    "620000":"甘肃省",
    "630000":"青海省",
    "640000":"宁夏回族自治区",
    "650000":"新疆维吾尔自治区",
    "710000":"台湾省",
    "910000":"港澳"
  },
  "110000":{"110100":"市辖区"},
  "110100":{"110101":"东城区","110102":"西城区","110105":"朝阳区","110106":"丰台区","110107":"石景山区","110108":"海淀区","110109":"门头沟区","110111":"房山区","110112":"通州区","110113":"顺义区","110114":"昌平区","110115":"大兴区","110116":"怀柔区","110117":"平谷区","110118":"密云区","110119":"延庆区"},
  "120000":{"120100":"市辖区"},
  "120100":{"120101":"和平区","120102":"河东区","120103":"河西区","120104":"南开区","120105":"河北区","120106":"红桥区","120110":"东丽区","120111":"西青区","120112":"津南区","120113":"北辰区","120114":"武清区","120115":"宝坻区","120116":"滨海新区","120117":"宁河区","120118":"静海区","120119":"蓟州区"},"130000":{"130100":"石家庄市","130200":"唐山市","130300":"秦皇岛市","130400":"邯郸市","130500":"邢台市","130600":"保定市","130700":"张家口市","130800":"承德市","130900":"沧州市","131000":"廊坊市","131100":"衡水市","139001":"定州市","139002":"辛集市"},"130100":{"130102":"长安区","130104":"桥西区","130105":"新华区","130107":"井陉矿区","130108":"裕华区","130109":"藁城区","130110":"鹿泉区","130111":"栾城区","130121":"井陉县","130123":"正定县","130125":"行唐县","130126":"灵寿县","130127":"高邑县","130128":"深泽县","130129":"赞皇县","130130":"无极县","130131":"平山县","130132":"元氏县","130133":"赵县","130183":"晋州市","130184":"新乐市"},"130200":{"130202":"路南区","130203":"路北区","130204":"古冶区","130205":"开平区","130207":"丰南区","130208":"丰润区","130209":"曹妃甸区","130223":"滦县","130224":"滦南县","130225":"乐亭县","130227":"迁西县","130229":"玉田县","130281":"遵化市","130283":"迁安市"},"130300":{"130302":"海港区","130303":"山海关区","130304":"北戴河区","130306":"抚宁区","130321":"青龙满族自治县","130322":"昌黎县","130324":"卢龙县"},"130400":{"130402":"邯山区","130403":"丛台区","130404":"复兴区","130406":"峰峰矿区","130421":"邯郸县","130423":"临漳县","130424":"成安县","130425":"大名县","130426":"涉县","130427":"磁县","130428":"肥乡县","130429":"永年县","130430":"邱县","130431":"鸡泽县","130432":"广平县","130433":"馆陶县","130434":"魏县","130435":"曲周县","130481":"武安市"},"130500":{"130502":"桥东区","130503":"桥西区","130521":"邢台县","130522":"临城县","130523":"内丘县","130524":"柏乡县","130525":"隆尧县","130526":"任县","130527":"南和县","130528":"宁晋县","130529":"巨鹿县","130530":"新河县","130531":"广宗县","130532":"平乡县","130533":"威县","130534":"清河县","130535":"临西县","130581":"南宫市","130582":"沙河市"},"130600":{"130602":"竞秀区","130606":"莲池区","130607":"满城区","130608":"清苑区","130609":"徐水区","130623":"涞水县","130624":"阜平县","130626":"定兴县","130627":"唐县","130628":"高阳县","130629":"容城县","130630":"涞源县","130631":"望都县","130632":"安新县","130633":"易县","130634":"曲阳县","130635":"蠡县","130636":"顺平县","130637":"博野县","130638":"雄县","130681":"涿州市","130683":"安国市","130684":"高碑店市"},"130700":{"130702":"桥东区","130703":"桥西区","130705":"宣化区","130706":"下花园区","130708":"万全区","130709":"崇礼区","130722":"张北县","130723":"康保县","130724":"沽源县","130725":"尚义县","130726":"蔚县","130727":"阳原县","130728":"怀安县","130730":"怀来县","130731":"涿鹿县","130732":"赤城县"},"130800":{"130802":"双桥区","130803":"双滦区","130804":"鹰手营子矿区","130821":"承德县","130822":"兴隆县","130823":"平泉县","130824":"滦平县","130825":"隆化县","130826":"丰宁满族自治县","130827":"宽城满族自治县","130828":"围场满族蒙古族自治县"},"130900":{"130902":"新华区","130903":"运河区","130921":"沧县","130922":"青县","130923":"东光县","130924":"海兴县","130925":"盐山县","130926":"肃宁县","130927":"南皮县","130928":"吴桥县","130929":"献县","130930":"孟村回族自治县","130981":"泊头市","130982":"任丘市","130983":"黄骅市","130984":"河间市"},"131000":{"131002":"安次区","131003":"广阳区","131022":"固安县","131023":"永清县","131024":"香河县","131025":"大城县","131026":"文安县","131028":"大厂回族自治县","131081":"霸州市","131082":"三河市"},"131100":{"131102":"桃城区","131103":"冀州区","131121":"枣强县","131122":"武邑县","131123":"武强县","131124":"饶阳县","131125":"安平县","131126":"故城县","131127":"景县","131128":"阜城县","131182":"深州市"},"139001":{"1390011":"留早镇","13900111":"邢邑镇","139001001":"南城区街道","139001002":"北城区街道","139001003":"西城区街道","139001004":"长安路街道","139001101":"清风店镇","139001102":"庞村镇","139001103":"砖路镇","139001104":"明月店镇","139001105":"叮咛店镇","139001106":"东亭镇","139001107":"大辛庄镇","139001108":"东旺镇","139001109":"高蓬镇","139001111":"李亲顾镇","139001112":"子位镇","139001113":"开元镇","139001115":"周村镇","139001116":"息冢镇","139001203":"东留春乡","139001204":"号头庄回族乡","139001205":"杨家庄乡","139001206":"大鹿庄乡","139001208":"西城乡"},"139002":{"1390021":"辛集镇","1390022":"天宫营乡","1390025":"辛集经济开发区","139002101":"旧城镇","139002102":"张古庄镇","139002103":"位伯镇","139002104":"新垒头镇","139002105":"新城镇","139002106":"南智邱镇","139002107":"王口镇","139002201":"前营乡","139002202":"马庄乡","139002203":"和睦井乡","139002204":"田家庄乡","139002205":"中里厢乡","139002206":"小辛庄乡"},"140000":{"140100":"太原市","140200":"大同市","140300":"阳泉市","140400":"长治市","140500":"晋城市","140600":"朔州市","140700":"晋中市","140800":"运城市","140900":"忻州市","141000":"临汾市","141100":"吕梁市"},"140100":{"140105":"小店区","140106":"迎泽区","140107":"杏花岭区","140108":"尖草坪区","140109":"万柏林区","140110":"晋源区","140121":"清徐县","140122":"阳曲县","140123":"娄烦县","140181":"古交市"},"140200":{"140202":"城区","140203":"矿区","140211":"南郊区","140212":"新荣区","140221":"阳高县","140222":"天镇县","140223":"广灵县","140224":"灵丘县","140225":"浑源县","140226":"左云县","140227":"大同县"},"140300":{"140302":"城区","140303":"矿区","140311":"郊区","140321":"平定县","140322":"盂县"},"140400":{"140402":"城区","140411":"郊区","140421":"长治县","140423":"襄垣县","140424":"屯留县","140425":"平顺县","140426":"黎城县","140427":"壶关县","140428":"长子县","140429":"武乡县","140430":"沁县","140431":"沁源县","140481":"潞城市"},"140500":{"140502":"城区","140521":"沁水县","140522":"阳城县","140524":"陵川县","140525":"泽州县","140581":"高平市"},"140600":{"140602":"朔城区","140603":"平鲁区","140621":"山阴县","140622":"应县","140623":"右玉县","140624":"怀仁县"},"140700":{"140702":"榆次区","140721":"榆社县","140722":"左权县","140723":"和顺县","140724":"昔阳县","140725":"寿阳县","140726":"太谷县","140727":"祁县","140728":"平遥县","140729":"灵石县","140781":"介休市"},"140800":{"140802":"盐湖区","140821":"临猗县","140822":"万荣县","140823":"闻喜县","140824":"稷山县","140825":"新绛县","140826":"绛县","140827":"垣曲县","140828":"夏县","140829":"平陆县","140830":"芮城县","140881":"永济市","140882":"河津市"},"140900":{"140902":"忻府区","140921":"定襄县","140922":"五台县","140923":"代县","140924":"繁峙县","140925":"宁武县","140926":"静乐县","140927":"神池县","140928":"五寨县","140929":"岢岚县","140930":"河曲县","140931":"保德县","140932":"偏关县","140981":"原平市"},
  "141000":{"141002":"尧都区","141021":"曲沃县","141022":"翼城县","141023":"襄汾县","141024":"洪洞县","141025":"古县","141026":"安泽县","141027":"浮山县","141028":"吉县","141029":"乡宁县","141030":"大宁县","141031":"隰县","141032":"永和县","141033":"蒲县","141034":"汾西县","141081":"侯马市","141082":"霍州市"},"141100":{"141102":"离石区","141121":"文水县","141122":"交城县","141123":"兴县","141124":"临县","141125":"柳林县","141126":"石楼县","141127":"岚县","141128":"方山县","141129":"中阳县","141130":"交口县","141181":"孝义市","141182":"汾阳市"},"150000":{"150100":"呼和浩特市","150200":"包头市","150300":"乌海市","150400":"赤峰市","150500":"通辽市","150600":"鄂尔多斯市","150700":"呼伦贝尔市","150800":"巴彦淖尔市","150900":"乌兰察布市","152200":"兴安盟","152500":"锡林郭勒盟","152900":"阿拉善盟"},"150100":{"150102":"新城区","150103":"回民区","150104":"玉泉区","150105":"赛罕区","150121":"土默特左旗","150122":"托克托县","150123":"和林格尔县","150124":"清水河县","150125":"武川县"},"150200":{"150202":"东河区","150203":"昆都仑区","150204":"青山区","150205":"石拐区","150206":"白云鄂博矿区","150207":"九原区","150221":"土默特右旗","150222":"固阳县","150223":"达尔罕茂明安联合旗"},"150300":{"150302":"海勃湾区","150303":"海南区","150304":"乌达区"},"150400":{"150402":"红山区","150403":"元宝山区","150404":"松山区","150421":"阿鲁科尔沁旗","150422":"巴林左旗","150423":"巴林右旗","150424":"林西县","150425":"克什克腾旗","150426":"翁牛特旗","150428":"喀喇沁旗","150429":"宁城县","150430":"敖汉旗"},"150500":{"150502":"科尔沁区","150521":"科尔沁左翼中旗","150522":"科尔沁左翼后旗","150523":"开鲁县","150524":"库伦旗","150525":"奈曼旗","150526":"扎鲁特旗","150581":"霍林郭勒市"},"150600":{"150602":"东胜区","150603":"康巴什区","150621":"达拉特旗","150622":"准格尔旗","150623":"鄂托克前旗","150624":"鄂托克旗","150625":"杭锦旗","150626":"乌审旗","150627":"伊金霍洛旗"},"150700":{"150702":"海拉尔区","150703":"扎赉诺尔区","150721":"阿荣旗","150722":"莫力达瓦达斡尔族自治旗","150723":"鄂伦春自治旗","150724":"鄂温克族自治旗","150725":"陈巴尔虎旗","150726":"新巴尔虎左旗","150727":"新巴尔虎右旗","150781":"满洲里市","150782":"牙克石市","150783":"扎兰屯市","150784":"额尔古纳市","150785":"根河市"},"150800":{"150802":"临河区","150821":"五原县","150822":"磴口县","150823":"乌拉特前旗","150824":"乌拉特中旗","150825":"乌拉特后旗","150826":"杭锦后旗"},"150900":{"150902":"集宁区","150921":"卓资县","150922":"化德县","150923":"商都县","150924":"兴和县","150925":"凉城县","150926":"察哈尔右翼前旗","150927":"察哈尔右翼中旗","150928":"察哈尔右翼后旗","150929":"四子王旗","150981":"丰镇市"},"152200":{"152201":"乌兰浩特市","152202":"阿尔山市","152221":"科尔沁右翼前旗","152222":"科尔沁右翼中旗","152223":"扎赉特旗","152224":"突泉县"},"152500":{"152501":"二连浩特市","152502":"锡林浩特市","152522":"阿巴嘎旗","152523":"苏尼特左旗","152524":"苏尼特右旗","152525":"东乌珠穆沁旗","152526":"西乌珠穆沁旗","152527":"太仆寺旗","152528":"镶黄旗","152529":"正镶白旗","152530":"正蓝旗","152531":"多伦县"},"152900":{"152921":"阿拉善左旗","152922":"阿拉善右旗","152923":"额济纳旗"},"210000":{"210100":"沈阳市","210200":"大连市","210300":"鞍山市","210400":"抚顺市","210500":"本溪市","210600":"丹东市","210700":"锦州市","210800":"营口市","210900":"阜新市","211000":"辽阳市","211100":"盘锦市","211200":"铁岭市","211300":"朝阳市","211400":"葫芦岛市"},"210100":{"210102":"和平区","210103":"沈河区","210104":"大东区","210105":"皇姑区","210106":"铁西区","210111":"苏家屯区","210112":"浑南区","210113":"沈北新区","210114":"于洪区","210115":"辽中区","210123":"康平县","210124":"法库县","210181":"新民市"},"210200":{"210202":"中山区","210203":"西岗区","210204":"沙河口区","210211":"甘井子区","210212":"旅顺口区","210213":"金州区","210214":"普兰店区","210224":"长海县","210281":"瓦房店市","210283":"庄河市"},"210300":{"210302":"铁东区","210303":"铁西区","210304":"立山区","210311":"千山区","210321":"台安县","210323":"岫岩满族自治县","210381":"海城市"},"210400":{"210402":"新抚区","210403":"东洲区","210404":"望花区","210411":"顺城区","210421":"抚顺县","210422":"新宾满族自治县","210423":"清原满族自治县"},"210500":{"210502":"平山区","210503":"溪湖区","210504":"明山区","210505":"南芬区","210521":"本溪满族自治县","210522":"桓仁满族自治县"},"210600":{"210602":"元宝区","210603":"振兴区","210604":"振安区","210624":"宽甸满族自治县","210681":"东港市","210682":"凤城市"},"210700":{"210702":"古塔区","210703":"凌河区","210711":"太和区","210726":"黑山县","210727":"义县","210781":"凌海市","210782":"北镇市"},"210800":{"210802":"站前区","210803":"西市区","210804":"鲅鱼圈区","210811":"老边区","210881":"盖州市","210882":"大石桥市"},"210900":{"210902":"海州区","210903":"新邱区","210904":"太平区","210905":"清河门区","210911":"细河区","210921":"阜新蒙古族自治县","210922":"彰武县"},"211000":{"211002":"白塔区","211003":"文圣区","211004":"宏伟区","211005":"弓长岭区","211011":"太子河区","211021":"辽阳县","211081":"灯塔市"},"211100":{"211102":"双台子区","211103":"兴隆台区","211104":"大洼区","211122":"盘山县"},"211200":{"211202":"银州区","211204":"清河区","211221":"铁岭县","211223":"西丰县","211224":"昌图县","211281":"调兵山市","211282":"开原市"},"211300":{"211302":"双塔区","211303":"龙城区","211321":"朝阳县","211322":"建平县","211324":"喀喇沁左翼蒙古族自治县","211381":"北票市","211382":"凌源市"},"211400":{"211402":"连山区","211403":"龙港区","211404":"南票区","211421":"绥中县","211422":"建昌县","211481":"兴城市"},"220000":{"220100":"长春市","220200":"吉林市","220300":"四平市","220400":"辽源市","220500":"通化市","220600":"白山市","220700":"松原市","220800":"白城市","222400":"延边朝鲜族自治州"},"220100":{"220102":"南关区","220103":"宽城区","220104":"朝阳区","220105":"二道区","220106":"绿园区","220112":"双阳区","220113":"九台区","220122":"农安县","220182":"榆树市","220183":"德惠市"},"220200":{"220202":"昌邑区","220203":"龙潭区","220204":"船营区","220211":"丰满区","220221":"永吉县","220281":"蛟河市","220282":"桦甸市","220283":"舒兰市","220284":"磐石市"},"220300":{"220302":"铁西区","220303":"铁东区","220322":"梨树县","220323":"伊通满族自治县","220381":"公主岭市","220382":"双辽市"},"220400":{"220402":"龙山区","220403":"西安区","220421":"东丰县","220422":"东辽县"},"220500":{"220502":"东昌区","220503":"二道江区","220521":"通化县","220523":"辉南县","220524":"柳河县","220581":"梅河口市","220582":"集安市"},"220600":{"220602":"浑江区","220605":"江源区","220621":"抚松县","220622":"靖宇县","220623":"长白朝鲜族自治县","220681":"临江市"},"220700":{"220702":"宁江区","220721":"前郭尔罗斯蒙古族自治县","220722":"长岭县","220723":"乾安县","220781":"扶余市"},"220800":{"220802":"洮北区","220821":"镇赉县","220822":"通榆县","220881":"洮南市","220882":"大安市"},"222400":{"222401":"延吉市","222402":"图们市","222403":"敦化市","222404":"珲春市","222405":"龙井市","222406":"和龙市","222424":"汪清县","222426":"安图县"},"230000":{"230100":"哈尔滨市","230200":"齐齐哈尔市","230300":"鸡西市","230400":"鹤岗市","230500":"双鸭山市","230600":"大庆市","230700":"伊春市","230800":"佳木斯市","230900":"七台河市","231000":"牡丹江市","231100":"黑河市","231200":"绥化市","232700":"大兴安岭地区"},"230100":{"230102":"道里区","230103":"南岗区","230104":"道外区","230108":"平房区","230109":"松北区","230110":"香坊区","230111":"呼兰区","230112":"阿城区","230113":"双城区","230123":"依兰县","230124":"方正县","230125":"宾县","230126":"巴彦县","230127":"木兰县","230128":"通河县","230129":"延寿县","230183":"尚志市","230184":"五常市"},"230200":{"230202":"龙沙区","230203":"建华区","230204":"铁锋区","230205":"昂昂溪区","230206":"富拉尔基区","230207":"碾子山区","230208":"梅里斯达斡尔族区","230221":"龙江县","230223":"依安县","230224":"泰来县","230225":"甘南县","230227":"富裕县","230229":"克山县","230230":"克东县","230231":"拜泉县","230281":"讷河市"},"230300":{"230302":"鸡冠区","230303":"恒山区","230304":"滴道区","230305":"梨树区","230306":"城子河区","230307":"麻山区","230321":"鸡东县","230381":"虎林市","230382":"密山市"},"230400":{"230402":"向阳区","230403":"工农区","230404":"南山区","230405":"兴安区","230406":"东山区","230407":"兴山区","230421":"萝北县","230422":"绥滨县"},"230500":{"230502":"尖山区","230503":"岭东区","230505":"四方台区","230506":"宝山区","230521":"集贤县","230522":"友谊县","230523":"宝清县","230524":"饶河县"},"230600":{"230602":"萨尔图区","230603":"龙凤区","230604":"让胡路区","230605":"红岗区","230606":"大同区","230621":"肇州县","230622":"肇源县","230623":"林甸县","230624":"杜尔伯特蒙古族自治县"},"230700":{"230702":"伊春区","230703":"南岔区","230704":"友好区","230705":"西林区","230706":"翠峦区","230707":"新青区","230708":"美溪区","230709":"金山屯区","230710":"五营区","230711":"乌马河区","230712":"汤旺河区","230713":"带岭区","230714":"乌伊岭区","230715":"红星区","230716":"上甘岭区","230722":"嘉荫县","230781":"铁力市"},"230800":{"230803":"向阳区","230804":"前进区","230805":"东风区","230811":"郊区","230822":"桦南县","230826":"桦川县","230828":"汤原县","230881":"同江市","230882":"富锦市","230883":"抚远市"},"230900":{"230902":"新兴区","230903":"桃山区","230904":"茄子河区","230921":"勃利县"},"231000":{"231002":"东安区","231003":"阳明区","231004":"爱民区","231005":"西安区","231025":"林口县","231081":"绥芬河市","231083":"海林市","231084":"宁安市","231085":"穆棱市","231086":"东宁市"},"231100":{"231102":"爱辉区","231121":"嫩江县","231123":"逊克县","231124":"孙吴县","231181":"北安市","231182":"五大连池市"},"231200":{"231202":"北林区","231221":"望奎县","231222":"兰西县","231223":"青冈县","231224":"庆安县","231225":"明水县","231226":"绥棱县","231281":"安达市","231282":"肇东市","231283":"海伦市"},"232700":{"232721":"呼玛县","232722":"塔河县","232723":"漠河县"},"310000":{"310100":"市辖区"},
  "310100":{"310101":"黄浦区","310104":"徐汇区","310105":"长宁区","310106":"静安区","310107":"普陀区","310109":"虹口区","310110":"杨浦区","310112":"闵行区","310113":"宝山区","310114":"嘉定区","310115":"浦东新区","310116":"金山区","310117":"松江区","310118":"青浦区","310120":"奉贤区","310151":"崇明区"},"320000":{"320100":"南京市","320200":"无锡市","320300":"徐州市","320400":"常州市","320500":"苏州市","320600":"南通市","320700":"连云港市","320800":"淮安市","320900":"盐城市","321000":"扬州市","321100":"镇江市","321200":"泰州市","321300":"宿迁市"},"320100":{"320102":"玄武区","320104":"秦淮区","320105":"建邺区","320106":"鼓楼区","320111":"浦口区","320113":"栖霞区","320114":"雨花台区","320115":"江宁区","320116":"六合区","320117":"溧水区","320118":"高淳区"},
  "320200":{"320205":"锡山区","320206":"惠山区","320211":"滨湖区","320213":"梁溪区","320214":"新吴区","320281":"江阴市","320282":"宜兴市"},"320300":{"320302":"鼓楼区","320303":"云龙区","320305":"贾汪区","320311":"泉山区","320312":"铜山区","320321":"丰县","320322":"沛县","320324":"睢宁县","320381":"新沂市","320382":"邳州市"},
  "320400":{"320402":"天宁区","320404":"钟楼区","320411":"新北区","320412":"武进区","320413":"金坛区","320481":"溧阳市"},"320500":{"320505":"虎丘区","320506":"吴中区","320507":"相城区","320508":"姑苏区","320509":"吴江区","320581":"常熟市","320582":"张家港市","320583":"昆山市","320585":"太仓市"},"320600":{"320602":"崇川区","320611":"港闸区","320612":"通州区","320621":"海安县","320623":"如东县","320681":"启东市","320682":"如皋市","320684":"海门市"},"320700":{"320703":"连云区","320706":"海州区","320707":"赣榆区","320722":"东海县","320723":"灌云县","320724":"灌南县"},"320800":{"320803":"淮安区","320804":"淮阴区","320812":"清江浦区","320813":"洪泽区","320826":"涟水县","320830":"盱眙县","320831":"金湖县"},"320900":{"320902":"亭湖区","320903":"盐都区","320904":"大丰区","320921":"响水县","320922":"滨海县","320923":"阜宁县","320924":"射阳县","320925":"建湖县","320981":"东台市"},"321000":{"321002":"广陵区","321003":"邗江区","321012":"江都区","321023":"宝应县","321081":"仪征市","321084":"高邮市"},"321100":{"321102":"京口区","321111":"润州区","321112":"丹徒区","321181":"丹阳市","321182":"扬中市","321183":"句容市"},"321200":{"321202":"海陵区","321203":"高港区","321204":"姜堰区","321281":"兴化市","321282":"靖江市","321283":"泰兴市"},"321300":{"321302":"宿城区","321311":"宿豫区","321322":"沭阳县","321323":"泗阳县","321324":"泗洪县"},"330000":{"330100":"杭州市","330200":"宁波市","330300":"温州市","330400":"嘉兴市","330500":"湖州市","330600":"绍兴市","330700":"金华市","330800":"衢州市","330900":"舟山市","331000":"台州市","331100":"丽水市"},"330100":{"330102":"上城区","330103":"下城区","330104":"江干区","330105":"拱墅区","330106":"西湖区","330108":"滨江区","330109":"萧山区","330110":"余杭区","330111":"富阳区","330122":"桐庐县","330127":"淳安县","330182":"建德市","330185":"临安市"},"330200":{"330203":"海曙区","330204":"江东区","330205":"江北区","330206":"北仑区","330211":"镇海区","330212":"鄞州区","330225":"象山县","330226":"宁海县","330281":"余姚市","330282":"慈溪市","330283":"奉化市"},"330300":{"330302":"鹿城区","330303":"龙湾区","330304":"瓯海区","330305":"洞头区","330324":"永嘉县","330326":"平阳县","330327":"苍南县","330328":"文成县","330329":"泰顺县","330381":"瑞安市","330382":"乐清市"},"330400":{"330402":"南湖区","330411":"秀洲区","330421":"嘉善县","330424":"海盐县","330481":"海宁市","330482":"平湖市","330483":"桐乡市"},"330500":{"330502":"吴兴区","330503":"南浔区","330521":"德清县","330522":"长兴县","330523":"安吉县"},"330600":{"330602":"越城区","330603":"柯桥区","330604":"上虞区","330624":"新昌县","330681":"诸暨市","330683":"嵊州市"},"330700":{"330702":"婺城区","330703":"金东区","330723":"武义县","330726":"浦江县","330727":"磐安县","330781":"兰溪市","330782":"义乌市","330783":"东阳市","330784":"永康市"},"330800":{"330802":"柯城区","330803":"衢江区","330822":"常山县","330824":"开化县","330825":"龙游县","330881":"江山市"},"330900":{"330902":"定海区","330903":"普陀区","330921":"岱山县","330922":"嵊泗县"},"331000":{"331002":"椒江区","331003":"黄岩区","331004":"路桥区","331021":"玉环县","331022":"三门县","331023":"天台县","331024":"仙居县","331081":"温岭市","331082":"临海市"},"331100":{"331102":"莲都区","331121":"青田县","331122":"缙云县","331123":"遂昌县","331124":"松阳县","331125":"云和县","331126":"庆元县","331127":"景宁畲族自治县","331181":"龙泉市"},"340000":{"340100":"合肥市","340200":"芜湖市","340300":"蚌埠市","340400":"淮南市","340500":"马鞍山市","340600":"淮北市","340700":"铜陵市","340800":"安庆市","341000":"黄山市","341100":"滁州市","341200":"阜阳市","341300":"宿州市","341500":"六安市","341600":"亳州市","341700":"池州市","341800":"宣城市"},"340100":{"340102":"瑶海区","340103":"庐阳区","340104":"蜀山区","340111":"包河区","340121":"长丰县","340122":"肥东县","340123":"肥西县","340124":"庐江县","340181":"巢湖市"},"340200":{"340202":"镜湖区","340203":"弋江区","340207":"鸠江区","340208":"三山区","340221":"芜湖县","340222":"繁昌县","340223":"南陵县","340225":"无为县"},"340300":{"340302":"龙子湖区","340303":"蚌山区","340304":"禹会区","340311":"淮上区","340321":"怀远县","340322":"五河县","340323":"固镇县"},"340400":{"340402":"大通区","340403":"田家庵区","340404":"谢家集区","340405":"八公山区","340406":"潘集区","340421":"凤台县","340422":"寿县"},"340500":{"340503":"花山区","340504":"雨山区","340506":"博望区","340521":"当涂县","340522":"含山县","340523":"和县"},"340600":{"340602":"杜集区","340603":"相山区","340604":"烈山区","340621":"濉溪县"},"340700":{"340705":"铜官区","340706":"义安区","340711":"郊区","340722":"枞阳县"},"340800":{"340802":"迎江区","340803":"大观区","340811":"宜秀区","340822":"怀宁县","340824":"潜山县","340825":"太湖县","340826":"宿松县","340827":"望江县","340828":"岳西县","340881":"桐城市"},"341000":{"341002":"屯溪区","341003":"黄山区","341004":"徽州区","341021":"歙县","341022":"休宁县","341023":"黟县","341024":"祁门县"},"341100":{"341102":"琅琊区","341103":"南谯区","341122":"来安县","341124":"全椒县","341125":"定远县","341126":"凤阳县","341181":"天长市","341182":"明光市"},"341200":{"341202":"颍州区","341203":"颍东区","341204":"颍泉区","341221":"临泉县","341222":"太和县","341225":"阜南县","341226":"颍上县","341282":"界首市"},"341300":{"341302":"埇桥区","341321":"砀山县","341322":"萧县","341323":"灵璧县","341324":"泗县"},"341500":{"341502":"金安区","341503":"裕安区","341504":"叶集区","341522":"霍邱县","341523":"舒城县","341524":"金寨县","341525":"霍山县"},"341600":{"341602":"谯城区","341621":"涡阳县","341622":"蒙城县","341623":"利辛县"},"341700":{"341702":"贵池区","341721":"东至县","341722":"石台县","341723":"青阳县"},"341800":{"341802":"宣州区","341821":"郎溪县","341822":"广德县","341823":"泾县","341824":"绩溪县","341825":"旌德县","341881":"宁国市"},"350000":{"350100":"福州市","350200":"厦门市","350300":"莆田市","350400":"三明市","350500":"泉州市","350600":"漳州市","350700":"南平市","350800":"龙岩市","350900":"宁德市"},"350100":{"350102":"鼓楼区","350103":"台江区","350104":"仓山区","350105":"马尾区","350111":"晋安区","350121":"闽侯县","350122":"连江县","350123":"罗源县","350124":"闽清县","350125":"永泰县","350128":"平潭县","350181":"福清市","350182":"长乐市"},"350200":{"350203":"思明区","350205":"海沧区","350206":"湖里区","350211":"集美区","350212":"同安区","350213":"翔安区"},"350300":{"350302":"城厢区","350303":"涵江区","350304":"荔城区","350305":"秀屿区","350322":"仙游县"},"350400":{"350402":"梅列区","350403":"三元区","350421":"明溪县","350423":"清流县","350424":"宁化县","350425":"大田县","350426":"尤溪县","350427":"沙县","350428":"将乐县","350429":"泰宁县","350430":"建宁县","350481":"永安市"},"350500":{"350502":"鲤城区","350503":"丰泽区","350504":"洛江区","350505":"泉港区","350521":"惠安县","350524":"安溪县","350525":"永春县","350526":"德化县","350527":"金门县","350581":"石狮市","350582":"晋江市","350583":"南安市"},"350600":{"350602":"芗城区","350603":"龙文区","350622":"云霄县","350623":"漳浦县","350624":"诏安县","350625":"长泰县","350626":"东山县","350627":"南靖县","350628":"平和县","350629":"华安县","350681":"龙海市"},"350700":{"350702":"延平区","350703":"建阳区","350721":"顺昌县","350722":"浦城县","350723":"光泽县","350724":"松溪县","350725":"政和县","350781":"邵武市","350782":"武夷山市","350783":"建瓯市"},"350800":{"350802":"新罗区","350803":"永定区","350821":"长汀县","350823":"上杭县","350824":"武平县","350825":"连城县","350881":"漳平市"},"350900":{"350902":"蕉城区","350921":"霞浦县","350922":"古田县","350923":"屏南县","350924":"寿宁县","350925":"周宁县","350926":"柘荣县","350981":"福安市","350982":"福鼎市"},"360000":{"360100":"南昌市","360200":"景德镇市","360300":"萍乡市","360400":"九江市","360500":"新余市","360600":"鹰潭市","360700":"赣州市","360800":"吉安市","360900":"宜春市","361000":"抚州市","361100":"上饶市"},"360100":{"360102":"东湖区","360103":"西湖区","360104":"青云谱区","360105":"湾里区","360111":"青山湖区","360112":"新建区","360121":"南昌县","360123":"安义县","360124":"进贤县"},"360200":{"360202":"昌江区","360203":"珠山区","360222":"浮梁县","360281":"乐平市"},"360300":{"360302":"安源区","360313":"湘东区","360321":"莲花县","360322":"上栗县","360323":"芦溪县"},"360400":{"360402":"濂溪区","360403":"浔阳区","360421":"九江县","360423":"武宁县","360424":"修水县","360425":"永修县","360426":"德安县","360428":"都昌县","360429":"湖口县","360430":"彭泽县","360481":"瑞昌市","360482":"共青城市","360483":"庐山市"},"360500":{"360502":"渝水区","360521":"分宜县"},"360600":{"360602":"月湖区","360622":"余江县","360681":"贵溪市"},"360700":{"360702":"章贡区","360703":"南康区","360721":"赣县","360722":"信丰县","360723":"大余县","360724":"上犹县","360725":"崇义县","360726":"安远县","360727":"龙南县","360728":"定南县","360729":"全南县","360730":"宁都县","360731":"于都县","360732":"兴国县","360733":"会昌县","360734":"寻乌县","360735":"石城县","360781":"瑞金市"},"360800":{"360802":"吉州区","360803":"青原区","360821":"吉安县","360822":"吉水县","360823":"峡江县","360824":"新干县","360825":"永丰县","360826":"泰和县","360827":"遂川县","360828":"万安县","360829":"安福县","360830":"永新县","360881":"井冈山市"},"360900":{"360902":"袁州区","360921":"奉新县","360922":"万载县","360923":"上高县","360924":"宜丰县","360925":"靖安县","360926":"铜鼓县","360981":"丰城市","360982":"樟树市","360983":"高安市"},"361000":{"361002":"临川区","361021":"南城县","361022":"黎川县","361023":"南丰县","361024":"崇仁县","361025":"乐安县","361026":"宜黄县","361027":"金溪县","361028":"资溪县","361029":"东乡县","361030":"广昌县"},"361100":{"361102":"信州区","361103":"广丰区","361121":"上饶县","361123":"玉山县","361124":"铅山县","361125":"横峰县","361126":"弋阳县","361127":"余干县","361128":"鄱阳县","361129":"万年县","361130":"婺源县","361181":"德兴市"},"370000":{"370100":"济南市","370200":"青岛市","370300":"淄博市","370400":"枣庄市","370500":"东营市","370600":"烟台市","370700":"潍坊市","370800":"济宁市","370900":"泰安市","371000":"威海市","371100":"日照市","371200":"莱芜市","371300":"临沂市","371400":"德州市","371500":"聊城市","371600":"滨州市","371700":"菏泽市"},"370100":{"370102":"历下区","370103":"市中区","370104":"槐荫区","370105":"天桥区","370112":"历城区","370113":"长清区","370124":"平阴县","370125":"济阳县","370126":"商河县","370181":"章丘市"},"370200":{"370202":"市南区","370203":"市北区","370211":"黄岛区","370212":"崂山区","370213":"李沧区","370214":"城阳区","370281":"胶州市","370282":"即墨市","370283":"平度市","370285":"莱西市"},"370300":{"370302":"淄川区","370303":"张店区","370304":"博山区","370305":"临淄区","370306":"周村区","370321":"桓台县","370322":"高青县","370323":"沂源县"},"370400":{"370402":"市中区","370403":"薛城区","370404":"峄城区","370405":"台儿庄区","370406":"山亭区","370481":"滕州市"},"370500":{"370502":"东营区","370503":"河口区","370505":"垦利区","370522":"利津县","370523":"广饶县"},"370600":{"370602":"芝罘区","370611":"福山区","370612":"牟平区","370613":"莱山区","370634":"长岛县","370681":"龙口市","370682":"莱阳市","370683":"莱州市","370684":"蓬莱市","370685":"招远市","370686":"栖霞市","370687":"海阳市"},"370700":{"370702":"潍城区","370703":"寒亭区","370704":"坊子区","370705":"奎文区","370724":"临朐县","370725":"昌乐县","370781":"青州市","370782":"诸城市","370783":"寿光市","370784":"安丘市","370785":"高密市","370786":"昌邑市"},"370800":{"370811":"任城区","370812":"兖州区","370826":"微山县","370827":"鱼台县","370828":"金乡县","370829":"嘉祥县","370830":"汶上县","370831":"泗水县","370832":"梁山县","370881":"曲阜市","370883":"邹城市"},"370900":{"370902":"泰山区","370911":"岱岳区","370921":"宁阳县","370923":"东平县","370982":"新泰市","370983":"肥城市"},"371000":{"371002":"环翠区","371003":"文登区","371082":"荣成市","371083":"乳山市"},"371100":{"371102":"东港区","371103":"岚山区","371121":"五莲县","371122":"莒县"},"371200":{"371202":"莱城区","371203":"钢城区"},"371300":{"371302":"兰山区","371311":"罗庄区","371312":"河东区","371321":"沂南县","371322":"郯城县","371323":"沂水县","371324":"兰陵县","371325":"费县","371326":"平邑县","371327":"莒南县","371328":"蒙阴县","371329":"临沭县"},"371400":{"371402":"德城区","371403":"陵城区","371422":"宁津县","371423":"庆云县","371424":"临邑县","371425":"齐河县","371426":"平原县","371427":"夏津县","371428":"武城县","371481":"乐陵市","371482":"禹城市"},"371500":{"371502":"东昌府区","371521":"阳谷县","371522":"莘县","371523":"茌平县","371524":"东阿县","371525":"冠县","371526":"高唐县","371581":"临清市"},"371600":{"371602":"滨城区","371603":"沾化区","371621":"惠民县","371622":"阳信县","371623":"无棣县","371625":"博兴县","371626":"邹平县"},"371700":{"371702":"牡丹区","371703":"定陶区","371721":"曹县","371722":"单县","371723":"成武县","371724":"巨野县","371725":"郓城县","371726":"鄄城县","371728":"东明县"},"410000":{"410100":"郑州市","410200":"开封市","410300":"洛阳市","410400":"平顶山市","410500":"安阳市","410600":"鹤壁市","410700":"新乡市","410800":"焦作市","410900":"濮阳市","411000":"许昌市","411100":"漯河市","411200":"三门峡市","411300":"南阳市","411400":"商丘市","411500":"信阳市","411600":"周口市","411700":"驻马店市","419001":"济源市"},"410100":{"410102":"中原区","410103":"二七区","410104":"管城回族区","410105":"金水区","410106":"上街区","410108":"惠济区","410122":"中牟县","410181":"巩义市","410182":"荥阳市","410183":"新密市","410184":"新郑市","410185":"登封市"},"410200":{"410202":"龙亭区","410203":"顺河回族区","410204":"鼓楼区","410205":"禹王台区","410211":"金明区","410212":"祥符区","410221":"杞县","410222":"通许县","410223":"尉氏县","410225":"兰考县"},"410300":{"410302":"老城区","410303":"西工区","410304":"瀍河回族区","410305":"涧西区","410306":"吉利区","410311":"洛龙区","410322":"孟津县","410323":"新安县","410324":"栾川县","410325":"嵩县","410326":"汝阳县","410327":"宜阳县","410328":"洛宁县","410329":"伊川县","410381":"偃师市"},"410400":{"410402":"新华区","410403":"卫东区","410404":"石龙区","410411":"湛河区","410421":"宝丰县","410422":"叶县","410423":"鲁山县","410425":"郏县","410481":"舞钢市","410482":"汝州市"},"410500":{"410502":"文峰区","410503":"北关区","410505":"殷都区","410506":"龙安区","410522":"安阳县","410523":"汤阴县","410526":"滑县","410527":"内黄县","410581":"林州市"},"410600":{"410602":"鹤山区","410603":"山城区","410611":"淇滨区","410621":"浚县","410622":"淇县"},"410700":{"410702":"红旗区","410703":"卫滨区","410704":"凤泉区","410711":"牧野区","410721":"新乡县","410724":"获嘉县","410725":"原阳县","410726":"延津县","410727":"封丘县","410728":"长垣县","410781":"卫辉市","410782":"辉县市"},"410800":{"410802":"解放区","410803":"中站区","410804":"马村区","410811":"山阳区","410821":"修武县","410822":"博爱县","410823":"武陟县","410825":"温县","410882":"沁阳市","410883":"孟州市"},"410900":{"410902":"华龙区","410922":"清丰县","410923":"南乐县","410926":"范县","410927":"台前县","410928":"濮阳县"},"411000":{"411002":"魏都区","411023":"许昌县","411024":"鄢陵县","411025":"襄城县","411081":"禹州市","411082":"长葛市"},"411100":{"411102":"源汇区","411103":"郾城区","411104":"召陵区","411121":"舞阳县","411122":"临颍县"},"411200":{"411202":"湖滨区","411203":"陕州区","411221":"渑池县","411224":"卢氏县","411281":"义马市","411282":"灵宝市"},"411300":{"411302":"宛城区","411303":"卧龙区","411321":"南召县","411322":"方城县","411323":"西峡县","411324":"镇平县","411325":"内乡县","411326":"淅川县","411327":"社旗县","411328":"唐河县","411329":"新野县","411330":"桐柏县","411381":"邓州市"},"411400":{"411402":"梁园区","411403":"睢阳区","411421":"民权县","411422":"睢县","411423":"宁陵县","411424":"柘城县","411425":"虞城县","411426":"夏邑县","411481":"永城市"},"411500":{"411502":"浉河区","411503":"平桥区","411521":"罗山县","411522":"光山县","411523":"新县","411524":"商城县","411525":"固始县","411526":"潢川县","411527":"淮滨县","411528":"息县"},"411600":{"411602":"川汇区","411621":"扶沟县","411622":"西华县","411623":"商水县","411624":"沈丘县","411625":"郸城县","411626":"淮阳县","411627":"太康县","411628":"鹿邑县","411681":"项城市"},"411700":{"411702":"驿城区","411721":"西平县","411722":"上蔡县","411723":"平舆县","411724":"正阳县","411725":"确山县","411726":"泌阳县","411727":"汝南县","411728":"遂平县","411729":"新蔡县"},"419001":{"4190011":"济源市克井镇","41900111":"济源市下冶镇","419001001":"济源市沁园街道","419001002":"济源市济水街道","419001003":"济源市北海街道","419001004":"济源市天坛街道","419001005":"济源市玉泉街道","419001101":"济源市五龙口镇","419001102":"济源市轵城镇","419001103":"济源市承留镇","419001104":"济源市邵原镇","419001105":"济源市坡头镇","419001106":"济源市梨林镇","419001107":"济源市大峪镇","419001108":"济源市思礼镇","419001109":"济源市王屋镇"},"420000":{"420100":"武汉市","420200":"黄石市","420300":"十堰市","420500":"宜昌市","420600":"襄阳市","420700":"鄂州市","420800":"荆门市","420900":"孝感市","421000":"荆州市","421100":"黄冈市","421200":"咸宁市","421300":"随州市","422800":"恩施土家族苗族自治州","429004":"仙桃市","429005":"潜江市","429006":"天门市","429021":"神农架林区"},"420100":{"420102":"江岸区","420103":"江汉区","420104":"硚口区","420105":"汉阳区","420106":"武昌区","420107":"青山区","420111":"洪山区","420112":"东西湖区","420113":"汉南区","420114":"蔡甸区","420115":"江夏区","420116":"黄陂区","420117":"新洲区"},"420200":{"420202":"黄石港区","420203":"西塞山区","420204":"下陆区","420205":"铁山区","420222":"阳新县","420281":"大冶市"},"420300":{"420302":"茅箭区","420303":"张湾区","420304":"郧阳区","420322":"郧西县","420323":"竹山县","420324":"竹溪县","420325":"房县","420381":"丹江口市"},"420500":{"420502":"西陵区","420503":"伍家岗区","420504":"点军区","420505":"猇亭区","420506":"夷陵区","420525":"远安县","420526":"兴山县","420527":"秭归县","420528":"长阳土家族自治县","420529":"五峰土家族自治县","420581":"宜都市","420582":"当阳市","420583":"枝江市"},"420600":{"420602":"襄城区","420606":"樊城区","420607":"襄州区","420624":"南漳县","420625":"谷城县","420626":"保康县","420682":"老河口市","420683":"枣阳市","420684":"宜城市"},"420700":{"420702":"梁子湖区","420703":"华容区","420704":"鄂城区"},"420800":{"420802":"东宝区","420804":"掇刀区","420821":"京山县","420822":"沙洋县","420881":"钟祥市"},"420900":{"420902":"孝南区","420921":"孝昌县","420922":"大悟县","420923":"云梦县","420981":"应城市","420982":"安陆市","420984":"汉川市"},"421000":{"421002":"沙市区","421003":"荆州区","421022":"公安县","421023":"监利县","421024":"江陵县","421081":"石首市","421083":"洪湖市","421087":"松滋市"},"421100":{"421102":"黄州区","421121":"团风县","421122":"红安县","421123":"罗田县","421124":"英山县","421125":"浠水县","421126":"蕲春县","421127":"黄梅县","421181":"麻城市","421182":"武穴市"},"421200":{"421202":"咸安区","421221":"嘉鱼县","421222":"通城县","421223":"崇阳县","421224":"通山县","421281":"赤壁市"},"421300":{"421303":"曾都区","421321":"随县","421381":"广水市"},"422800":{"422801":"恩施市","422802":"利川市","422822":"建始县","422823":"巴东县","422825":"宣恩县","422826":"咸丰县","422827":"来凤县","422828":"鹤峰县"},"429004":{"4290041":"郑场镇","4290044":"工业园区","42900411":"张沟镇","429004001":"沙嘴街道","429004002":"干河街道","429004003":"龙华山","429004101":"毛嘴镇","429004102":"豆河镇","429004103":"三伏潭镇","429004104":"胡场镇","429004105":"长倘口镇","429004106":"西流河镇","429004107":"沙湖镇","429004108":"杨林尾镇","429004109":"彭场镇","429004111":"郭河镇","429004112":"沔城回族镇","429004113":"通海口镇","429004114":"陈场镇","429004401":"九合垸原种场","429004402":"沙湖原种场","429004404":"五湖渔场","429004405":"赵西垸林场","429004407":"畜禽良种场","429004408":"排湖风景区"},"429005":{"4290051":"竹根滩镇","4290054":"江汉石油管理局","42900545":"周矶管理区","429005001":"园林","429005002":"杨市","429005003":"周矶","429005004":"广华","429005005":"泰丰","429005006":"高场","429005101":"渔洋镇","429005102":"王场镇","429005103":"高石碑镇","429005104":"熊口镇","429005105":"老新镇","429005106":"浩口镇","429005107":"积玉口镇","429005108":"张金镇","429005109":"龙湾镇","429005401":"潜江经济开发区","429005451":"后湖管理区","429005452":"熊口管理区","429005453":"总口管理区","429005454":"白鹭湖管理区","429005455":"运粮湖管理区","429005457":"浩口原种场"},"429006":{"4290061":"多宝镇","42900611":"麻洋镇","42900612":"石河镇","42900645":"蒋湖农场","429006001":"竟陵街道","429006002":"侨乡街道开发区","429006003":"杨林街道","429006101":"拖市镇","429006102":"张港镇","429006103":"蒋场镇","429006104":"汪场镇","429006105":"渔薪镇","429006106":"黄潭镇","429006107":"岳口镇","429006108":"横林镇","429006109":"彭市镇","429006111":"多祥镇","429006112":"干驿镇","429006113":"马湾镇","429006114":"卢市镇","429006115":"小板镇","429006116":"九真镇","429006118":"皂市镇","429006119":"胡市镇","429006121":"佛子山镇","429006201":"净潭乡","429006451":"白茅湖农场","429006452":"沉湖管委会"},"429021":{"4290211":"松柏镇","4290212":"宋洛乡","429021101":"阳日镇","429021102":"木鱼镇","429021103":"红坪镇","429021104":"新华镇","429021105":"九湖镇","429021202":"下谷坪土家族乡"},"430000":{"430100":"长沙市","430200":"株洲市","430300":"湘潭市","430400":"衡阳市","430500":"邵阳市","430600":"岳阳市","430700":"常德市","430800":"张家界市","430900":"益阳市","431000":"郴州市","431100":"永州市","431200":"怀化市","431300":"娄底市","433100":"湘西土家族苗族自治州"},"430100":{"430102":"芙蓉区","430103":"天心区","430104":"岳麓区","430105":"开福区","430111":"雨花区","430112":"望城区","430121":"长沙县","430124":"宁乡县","430181":"浏阳市"},"430200":{"430202":"荷塘区","430203":"芦淞区","430204":"石峰区","430211":"天元区","430221":"株洲县","430223":"攸县","430224":"茶陵县","430225":"炎陵县","430281":"醴陵市"},"430300":{"430302":"雨湖区","430304":"岳塘区","430321":"湘潭县","430381":"湘乡市","430382":"韶山市"},"430400":{"430405":"珠晖区","430406":"雁峰区","430407":"石鼓区","430408":"蒸湘区","430412":"南岳区","430421":"衡阳县","430422":"衡南县","430423":"衡山县","430424":"衡东县","430426":"祁东县","430481":"耒阳市","430482":"常宁市"},"430500":{"430502":"双清区","430503":"大祥区","430511":"北塔区","430521":"邵东县","430522":"新邵县","430523":"邵阳县","430524":"隆回县","430525":"洞口县","430527":"绥宁县","430528":"新宁县","430529":"城步苗族自治县","430581":"武冈市"},"430600":{"430602":"岳阳楼区","430603":"云溪区","430611":"君山区","430621":"岳阳县","430623":"华容县","430624":"湘阴县","430626":"平江县","430681":"汨罗市","430682":"临湘市"},"430700":{"430702":"武陵区","430703":"鼎城区","430721":"安乡县","430722":"汉寿县","430723":"澧县","430724":"临澧县","430725":"桃源县","430726":"石门县","430781":"津市市"},"430800":{"430802":"永定区","430811":"武陵源区","430821":"慈利县","430822":"桑植县"},"430900":{"430902":"资阳区","430903":"赫山区","430921":"南县","430922":"桃江县","430923":"安化县","430981":"沅江市"},"431000":{"431002":"北湖区","431003":"苏仙区","431021":"桂阳县","431022":"宜章县","431023":"永兴县","431024":"嘉禾县","431025":"临武县","431026":"汝城县","431027":"桂东县","431028":"安仁县","431081":"资兴市"},"431100":{"431102":"零陵区","431103":"冷水滩区","431121":"祁阳县","431122":"东安县","431123":"双牌县","431124":"道县","431125":"江永县","431126":"宁远县","431127":"蓝山县","431128":"新田县","431129":"江华瑶族自治县"},"431200":{"431202":"鹤城区","431221":"中方县","431222":"沅陵县","431223":"辰溪县","431224":"溆浦县","431225":"会同县","431226":"麻阳苗族自治县","431227":"新晃侗族自治县","431228":"芷江侗族自治县","431229":"靖州苗族侗族自治县","431230":"通道侗族自治县","431281":"洪江市"},"431300":{"431302":"娄星区","431321":"双峰县","431322":"新化县","431381":"冷水江市","431382":"涟源市"},"433100":{"433101":"吉首市","433122":"泸溪县","433123":"凤凰县","433124":"花垣县","433125":"保靖县","433126":"古丈县","433127":"永顺县","433130":"龙山县"},"440000":{"440100":"广州市","440200":"韶关市","440300":"深圳市","440400":"珠海市","440500":"汕头市","440600":"佛山市","440700":"江门市","440800":"湛江市","440900":"茂名市","441200":"肇庆市","441300":"惠州市","441400":"梅州市","441500":"汕尾市","441600":"河源市","441700":"阳江市","441800":"清远市","441900":"东莞市","442000":"中山市","445100":"潮州市","445200":"揭阳市","445300":"云浮市"},"440100":{"440103":"荔湾区","440104":"越秀区","440105":"海珠区","440106":"天河区","440111":"白云区","440112":"黄埔区","440113":"番禺区","440114":"花都区","440115":"南沙区","440117":"从化区","440118":"增城区"},"440200":{"440203":"武江区","440204":"浈江区","440205":"曲江区","440222":"始兴县","440224":"仁化县","440229":"翁源县","440232":"乳源瑶族自治县","440233":"新丰县","440281":"乐昌市","440282":"南雄市"},"440300":{"440303":"罗湖区","440304":"福田区","440305":"南山区","440306":"宝安区","440307":"龙岗区","440308":"盐田区"},"440400":{"440402":"香洲区","440403":"斗门区","440404":"金湾区"},"440500":{"440507":"龙湖区","440511":"金平区","440512":"濠江区","440513":"潮阳区","440514":"潮南区","440515":"澄海区","440523":"南澳县"},"440600":{"440604":"禅城区","440605":"南海区","440606":"顺德区","440607":"三水区","440608":"高明区"},"440700":{"440703":"蓬江区","440704":"江海区","440705":"新会区","440781":"台山市","440783":"开平市","440784":"鹤山市","440785":"恩平市"},"440800":{"440802":"赤坎区","440803":"霞山区","440804":"坡头区","440811":"麻章区","440823":"遂溪县","440825":"徐闻县","440881":"廉江市","440882":"雷州市","440883":"吴川市"},"440900":{"440902":"茂南区","440904":"电白区","440981":"高州市","440982":"化州市","440983":"信宜市"},"441200":{"441202":"端州区","441203":"鼎湖区","441204":"高要区","441223":"广宁县","441224":"怀集县","441225":"封开县","441226":"德庆县","441284":"四会市"},"441300":{"441302":"惠城区","441303":"惠阳区","441322":"博罗县","441323":"惠东县","441324":"龙门县"},"441400":{"441402":"梅江区","441403":"梅县区","441422":"大埔县","441423":"丰顺县","441424":"五华县","441426":"平远县","441427":"蕉岭县","441481":"兴宁市"},"441500":{"441502":"城区","441521":"海丰县","441523":"陆河县","441581":"陆丰市"},"441600":{"441602":"源城区","441621":"紫金县","441622":"龙川县","441623":"连平县","441624":"和平县","441625":"东源县"},"441700":{"441702":"江城区","441704":"阳东区","441721":"阳西县","441781":"阳春市"},"441800":{"441802":"清城区","441803":"清新区","441821":"佛冈县","441823":"阳山县","441825":"连山壮族瑶族自治县","441826":"连南瑶族自治县","441881":"英德市","441882":"连州市"},"441900":{"441900003":"东城街道","441900004":"南城街道","441900005":"万江街道","441900006":"莞城街道","441900101":"石碣镇","441900102":"石龙镇","441900103":"茶山镇","441900104":"石排镇","441900105":"企石镇","441900106":"横沥镇","441900107":"桥头镇","441900108":"谢岗镇","441900109":"东坑镇","441900110":"常平镇","441900111":"寮步镇","441900112":"樟木头镇","441900113":"大朗镇","441900114":"黄江镇","441900115":"清溪镇","441900116":"塘厦镇","441900117":"凤岗镇","441900118":"大岭山镇","441900119":"长安镇","441900121":"虎门镇","441900122":"厚街镇","441900123":"沙田镇","441900124":"道滘镇","441900125":"洪梅镇","441900126":"麻涌镇","441900127":"望牛墩镇","441900128":"中堂镇","441900129":"高埗镇","441900401":"松山湖管委会","441900402":"虎门港管委会","441900403":"东莞生态园"},"442000":{"442000001":"石岐区街道","442000002":"东区街道","442000003":"火炬开发区街道","442000004":"西区街道","442000005":"南区街道","442000006":"五桂山街道","442000100":"小榄镇","442000101":"黄圃镇","442000102":"民众镇","442000103":"东凤镇","442000104":"东升镇","442000105":"古镇镇","442000106":"沙溪镇","442000107":"坦洲镇","442000108":"港口镇","442000109":"三角镇","442000110":"横栏镇","442000111":"南头镇","442000112":"阜沙镇","442000113":"南朗镇","442000114":"三乡镇","442000115":"板芙镇","442000116":"大涌镇","442000117":"神湾镇"},"445100":{"445102":"湘桥区","445103":"潮安区","445122":"饶平县"},"445200":{"445202":"榕城区","445203":"揭东区","445222":"揭西县","445224":"惠来县","445281":"普宁市"},"445300":{"445302":"云城区","445303":"云安区","445321":"新兴县","445322":"郁南县","445381":"罗定市"},"450000":{"450100":"南宁市","450200":"柳州市","450300":"桂林市","450400":"梧州市","450500":"北海市","450600":"防城港市","450700":"钦州市","450800":"贵港市","450900":"玉林市","451000":"百色市","451100":"贺州市","451200":"河池市","451300":"来宾市","451400":"崇左市"},"450100":{"450102":"兴宁区","450103":"青秀区","450105":"江南区","450107":"西乡塘区","450108":"良庆区","450109":"邕宁区","450110":"武鸣区","450123":"隆安县","450124":"马山县","450125":"上林县","450126":"宾阳县","450127":"横县"},"450200":{"450202":"城中区","450203":"鱼峰区","450204":"柳南区","450205":"柳北区","450206":"柳江区","450222":"柳城县","450223":"鹿寨县","450224":"融安县","450225":"融水苗族自治县","450226":"三江侗族自治县"},"450300":{"450302":"秀峰区","450303":"叠彩区","450304":"象山区","450305":"七星区","450311":"雁山区","450312":"临桂区","450321":"阳朔县","450323":"灵川县","450324":"全州县","450325":"兴安县","450326":"永福县","450327":"灌阳县","450328":"龙胜各族自治县","450329":"资源县","450330":"平乐县","450331":"荔浦县","450332":"恭城瑶族自治县"},"450400":{"450403":"万秀区","450405":"长洲区","450406":"龙圩区","450421":"苍梧县","450422":"藤县","450423":"蒙山县","450481":"岑溪市"},"450500":{"450502":"海城区","450503":"银海区","450512":"铁山港区","450521":"合浦县"},"450600":{"450602":"港口区","450603":"防城区","450621":"上思县","450681":"东兴市"},"450700":{"450702":"钦南区","450703":"钦北区","450721":"灵山县","450722":"浦北县"},"450800":{"450802":"港北区","450803":"港南区","450804":"覃塘区","450821":"平南县","450881":"桂平市"},"450900":{"450902":"玉州区","450903":"福绵区","450921":"容县","450922":"陆川县","450923":"博白县","450924":"兴业县","450981":"北流市"},"451000":{"451002":"右江区","451021":"田阳县","451022":"田东县","451023":"平果县","451024":"德保县","451026":"那坡县","451027":"凌云县","451028":"乐业县","451029":"田林县","451030":"西林县","451031":"隆林各族自治县","451081":"靖西市"},"451100":{"451102":"八步区","451103":"平桂区","451121":"昭平县","451122":"钟山县","451123":"富川瑶族自治县"},"451200":{"451202":"金城江区","451221":"南丹县","451222":"天峨县","451223":"凤山县","451224":"东兰县","451225":"罗城仫佬族自治县","451226":"环江毛南族自治县","451227":"巴马瑶族自治县","451228":"都安瑶族自治县","451229":"大化瑶族自治县","451281":"宜州市"},"451300":{"451302":"兴宾区","451321":"忻城县","451322":"象州县","451323":"武宣县","451324":"金秀瑶族自治县","451381":"合山市"},"451400":{"451402":"江州区","451421":"扶绥县","451422":"宁明县","451423":"龙州县","451424":"大新县","451425":"天等县","451481":"凭祥市"},"460000":{"460100":"海口市","460200":"三亚市","460300":"三沙市","460400":"儋州市","469001":"五指山市","469002":"琼海市","469005":"文昌市","469006":"万宁市","469007":"东方市","469021":"定安县","469022":"屯昌县","469023":"澄迈县","469024":"临高县","469025":"白沙黎族自治县","469026":"昌江黎族自治县","469027":"乐东黎族自治县","469028":"陵水黎族自治县","469029":"保亭黎族苗族自治县","469030":"琼中黎族苗族自治县"},"460100":{"460105":"秀英区","460106":"龙华区","460107":"琼山区","460108":"美兰区"},"460200":{"460202":"海棠区","460203":"吉阳区","460204":"天涯区","460205":"崖州区"},"460300":{"460321":"西沙群岛","460322":"南沙群岛","460323":"中沙群岛的岛礁及其海域"},"460400":{"4604001":"那大镇","4604004":"国营西培农场","4604005":"华南热作学院","46040011":"三都镇","460400101":"和庆镇","460400102":"南丰镇","460400103":"大成镇","460400104":"雅星镇","460400105":"兰洋镇","460400106":"光村镇","460400107":"木棠镇","460400108":"海头镇","460400109":"峨蔓镇","460400111":"王五镇","460400112":"白马井镇","460400113":"中和镇","460400114":"排浦镇","460400115":"东成镇","460400116":"新州镇","460400404":"国营西联农场","460400405":"国营蓝洋农场","460400407":"国营八一农场","460400499":"洋浦经济开发区"},"469001":{"4690011":"通什镇","4690012":"畅好乡","4690014":"畅好农场","469001101":"南圣镇","469001102":"毛阳镇","469001103":"番阳镇","469001201":"毛道乡","469001202":"水满乡"},"469002":{"4690021":"嘉积镇","4690024":"国营东太农场","4690025":"彬村山华侨农场","46900211":"大路镇","469002101":"万泉镇","469002102":"石壁镇","469002103":"中原镇","469002104":"博鳌镇","469002105":"阳江镇","469002106":"龙江镇","469002107":"潭门镇","469002108":"塔洋镇","469002109":"长坡镇","469002111":"会山镇","469002402":"国营东红农场","469002403":"国营东升农场"},"469005":{"4690051":"文城镇","4690054":"国营东路农场","46900511":"昌洒镇","469005101":"重兴镇","469005102":"蓬莱镇","469005103":"会文镇","469005104":"东路镇","469005105":"潭牛镇","469005106":"东阁镇","469005107":"文教镇","469005108":"东郊镇","469005109":"龙楼镇","469005111":"翁田镇","469005112":"抱罗镇","469005113":"冯坡镇","469005114":"锦山镇","469005115":"铺前镇","469005116":"公坡镇","469005401":"国营南阳农场","469005402":"国营罗豆农场"},"469006":{"4690061":"万城镇","4690064":"国营东兴农场","4690065":"兴隆华侨农场","46900611":"南桥镇","469006101":"龙滚镇","469006102":"和乐镇","469006103":"后安镇","469006104":"大茂镇","469006105":"东澳镇","469006106":"礼纪镇","469006107":"长丰镇","469006108":"山根镇","469006109":"北大镇","469006111":"三更罗镇","469006401":"国营东和农场","469006404":"国营新中农场","469006501":"地方国营六连林场"},"469007":{"4690071":"八所镇","4690072":"天安乡","4690074":"国营广坝农场","4690075":"东方华侨农场","469007101":"东河镇","469007102":"大田镇","469007103":"感城镇","469007104":"板桥镇","469007105":"三家镇","469007106":"四更镇","469007107":"新龙镇","469007201":"江边乡"},"469021":{"4690211":"定城镇","4690214":"国营中瑞农场","469021101":"新竹镇","469021102":"龙湖镇","469021103":"黄竹镇","469021104":"雷鸣镇","469021105":"龙门镇","469021106":"龙河镇","469021107":"岭口镇","469021108":"翰林镇","469021109":"富文镇","469021401":"国营南海农场","469021402":"国营金鸡岭农场"},"469022":{"4690221":"屯城镇","4690224":"国营中建农场","469022101":"新兴镇","469022102":"枫木镇","469022103":"乌坡镇","469022104":"南吕镇","469022105":"南坤镇","469022106":"坡心镇","469022107":"西昌镇","469022401":"国营中坤农场"},"469023":{"4690231":"金江镇","4690234":"国营红光农场","46902311":"大丰镇","469023101":"老城镇","469023102":"瑞溪镇","469023103":"永发镇","469023104":"加乐镇","469023105":"文儒镇","469023106":"中兴镇","469023107":"仁兴镇","469023108":"福山镇","469023109":"桥头镇","469023402":"国营西达农场","469023405":"国营金安农场"},"469024":{"4690241":"临城镇","4690244":"国营红华农场","469024101":"波莲镇","469024102":"东英镇","469024103":"博厚镇","469024104":"皇桐镇","469024105":"多文镇","469024106":"和舍镇","469024107":"南宝镇","469024108":"新盈镇","469024109":"调楼镇","469024401":"国营加来农场"},"469025":{"4690251":"牙叉镇","4690252":"细水乡","469025101":"七坊镇","469025102":"邦溪镇","469025103":"打安镇","469025201":"元门乡","469025202":"南开乡","469025203":"阜龙乡","469025204":"青松乡","469025205":"金波乡","469025206":"荣邦乡","469025401":"国营白沙农场","469025404":"国营龙江农场","469025408":"国营邦溪农场"},"469026":{"4690261":"石碌镇","4690262":"王下乡","4690265":"国营霸王岭林场","469026101":"叉河镇","469026102":"十月田镇","469026103":"乌烈镇","469026104":"昌化镇","469026105":"海尾镇","469026106":"七叉镇","469026401":"国营红林农场","469026501":"海南矿业联合有限公司"},"469027":{"4690271":"抱由镇","4690275":"国营尖峰岭林业公司","46902711":"莺歌海镇","469027101":"万冲镇","469027102":"大安镇","469027103":"志仲镇","469027104":"千家镇","469027105":"九所镇","469027106":"利国镇","469027107":"黄流镇","469027108":"佛罗镇","469027109":"尖峰镇","469027401":"国营山荣农场","469027402":"国营乐光农场","469027405":"国营保国农场","469027501":"国营莺歌海盐场"},"469028":{"4690281":"椰林镇","4690282":"提蒙乡","4690284":"国营岭门农场","4690285":"国营吊罗山林业公司","469028101":"光坡镇","469028102":"三才镇","469028103":"英州镇","469028104":"隆广镇","469028105":"文罗镇","469028106":"本号镇","469028107":"新村镇","469028108":"黎安镇","469028201":"群英乡","469028401":"国营南平农场"},"469029":{"4690291":"保城镇","4690292":"六弓乡","469029101":"什玲镇","469029102":"加茂镇","469029103":"响水镇","469029104":"新政镇","469029105":"三道镇","469029201":"南林乡","469029202":"毛感乡","469029401":"国营新星农场","469029402":"海南保亭热带作物研究所","469029403":"国营金江农场","469029405":"国营三道农场"},"469030":{"4690301":"营根镇","4690302":"吊罗山乡","4690305":"海南黎母山省级自然保护区管理站","469030101":"湾岭镇","469030102":"黎母山镇","469030103":"和平镇","469030104":"长征镇","469030105":"红毛镇","469030106":"中平镇","469030201":"上安乡","469030202":"什运乡","469030402":"国营阳江农场","469030403":"国营乌石农场","469030406":"国营加钗农场","469030407":"国营长征农场"},"500000":{"500100":"市辖区","500228":"梁平县","500229":"城口县","500230":"丰都县","500231":"垫江县","500232":"武隆县","500233":"忠县","500235":"云阳县","500236":"奉节县","500237":"巫山县","500238":"巫溪县","500240":"石柱土家族自治县","500241":"秀山土家族苗族自治县","500242":"酉阳土家族苗族自治县","500243":"彭水苗族土家族自治县"},"500100":{"500101":"万州区","500102":"涪陵区","500103":"渝中区","500104":"大渡口区","500105":"江北区","500106":"沙坪坝区","500107":"九龙坡区","500108":"南岸区","500109":"北碚区","500110":"綦江区","500111":"大足区","500112":"渝北区","500113":"巴南区","500114":"黔江区","500115":"长寿区","500116":"江津区","500117":"合川区","500118":"永川区","500119":"南川区","500120":"璧山区","500151":"铜梁区","500152":"潼南区","500153":"荣昌区","500154":"开州区"},"500228":{"5002282":"安胜乡","5002284":"梁平县农场","50022811":"聚奎镇","50022812":"合兴镇","500228001":"梁平县梁山街道","500228002":"梁平县双桂街道","500228101":"仁贤镇","500228102":"礼让镇","500228103":"云龙镇","500228104":"屏锦镇","500228106":"袁驿镇","500228107":"新盛镇","500228108":"福禄镇","500228109":"金带镇","500228111":"明达镇","500228112":"荫平镇","500228113":"和林镇","500228114":"回龙镇","500228115":"碧山镇","500228116":"虎城镇","500228117":"七星镇","500228118":"龙门镇","500228119":"文化镇","500228121":"石安镇","500228122":"柏家镇","500228123":"大观镇","500228124":"竹山镇","500228125":"蟠龙镇","500228126":"星桥镇","500228127":"曲水镇","500228201":"铁门乡","500228202":"龙胜乡","500228203":"复平乡","500228205":"紫照乡","500228401":"梁平县双桂工业园区"},"500229":{"50022911":"咸宜镇","50022921":"双河乡","50022922":"厚坪乡","500229001":"葛城街道","500229002":"复兴街道","500229102":"巴山镇","500229103":"坪坝镇","500229104":"庙坝镇","500229105":"明通镇","500229106":"修齐镇","500229107":"高观镇","500229108":"高燕镇","500229109":"东安镇","500229111":"高楠镇","500229201":"龙田乡","500229202":"北屏乡","500229205":"左岚乡","500229208":"沿河乡","500229211":"蓼子乡","500229212":"鸡鸣乡","500229214":"周溪乡","500229216":"明中乡","500229217":"治平乡","500229219":"岚天乡","500229221":"河鱼乡"},"500230":{"500230":"名山街道","50023011":"兴义镇","50023012":"兴龙镇","50023021":"三建乡","500230101":"虎威镇","500230102":"社坛镇","500230103":"三元镇","500230104":"许明寺镇","500230105":"董家镇","500230106":"树人镇","500230107":"十直镇","500230109":"高家镇","500230111":"双路镇","500230112":"江池镇","500230113":"龙河镇","500230114":"武平镇","500230115":"包鸾镇","500230116":"湛普镇","500230118":"南天湖镇","500230119":"保合镇","500230121":"仁沙镇","500230122":"龙孔镇","500230123":"暨龙镇","500230124":"双龙镇","500230125":"仙女湖镇","500230202":"青龙乡","500230206":"太平坝乡","500230207":"都督乡","500230209":"栗子乡"},"500231":{"50023111":"太平镇","50023112":"裴兴镇","500231001":"桂溪街道","500231002":"桂阳街道","500231101":"新民镇","500231102":"沙坪镇","500231103":"周嘉镇","500231104":"普顺镇","500231105":"永安镇","500231106":"高安镇","500231107":"高峰镇","500231108":"五洞镇","500231109":"澄溪镇","500231111":"鹤游镇","500231112":"坪山镇","500231113":"砚台镇","500231114":"曹回镇","500231115":"杠家镇","500231116":"包家镇","500231117":"白家镇","500231118":"永平镇","500231119":"三溪镇","500231121":"黄沙镇","500231122":"长龙镇","500231202":"沙河乡","500231204":"大石乡"},"500232":{"5002321":"巷口镇","5002322":"凤来乡","50023211":"土坎镇","50023221":"后坪苗族土家族乡","500232101":"火炉镇","500232102":"白马镇","500232103":"鸭江镇","500232104":"长坝镇","500232105":"江口镇","500232106":"平桥镇","500232107":"羊角镇","500232108":"仙女山镇","500232109":"桐梓镇","500232111":"和顺镇","500232112":"双河镇","500232202":"庙垭乡","500232203":"石桥苗族土家族乡","500232205":"黄莺乡","500232206":"沧沟乡","500232207":"文复苗族土家族乡","500232208":"土地乡","500232209":"白云乡","500232211":"浩口苗族仡佬族乡","500232212":"接龙乡","500232213":"赵家乡","500232214":"大洞河乡"},"500233":{"50023311":"官坝镇","50023312":"白石镇","50023321":"兴峰乡","500233001":"忠州街道","500233002":"白公街道","500233101":"新生镇","500233102":"任家镇","500233103":"乌杨镇","500233104":"洋渡镇","500233105":"东溪镇","500233106":"复兴镇","500233107":"石宝镇","500233108":"汝溪镇","500233109":"野鹤镇","500233111":"石黄镇","500233112":"马灌镇","500233113":"金鸡镇","500233114":"新立镇","500233115":"双桂镇","500233116":"拔山镇","500233117":"花桥镇","500233118":"永丰镇","500233119":"三汇镇","500233122":"黄金镇","500233201":"善广乡","500233203":"石子乡","500233204":"磨子土家族乡","500233206":"涂井乡","500233208":"金声乡"},"500235":{"50023513":"桑坪镇","50023514":"蔈草镇","500235001":"双江街道","500235002":"青龙街道","500235003":"人和街道","500235004":"盘龙街道","500235105":"龙角镇","500235107":"故陵镇","500235108":"红狮镇","500235115":"路阳镇","500235116":"农坝镇","500235118":"渠马镇","500235121":"黄石镇","500235122":"巴阳镇","500235123":"沙市镇","500235124":"鱼泉镇","500235125":"凤鸣镇","500235127":"宝坪镇","500235128":"南溪镇","500235129":"双土镇","500235131":"江口镇","500235132":"高阳镇","500235133":"平安镇","500235135":"云阳镇","500235136":"云安镇","500235137":"栖霞镇","500235138":"双龙镇","500235139":"泥溪镇","500235141":"养鹿镇","500235142":"水口镇","500235143":"堰坪镇","500235144":"龙洞镇","500235145":"后叶镇","500235146":"耀灵镇","500235147":"大阳镇","500235208":"外郎乡","500235215":"新津乡","500235216":"普安乡","500235218":"洞鹿乡","500235219":"石门乡","500235239":"上坝乡","500235242":"清水土家族自治乡"},"500236":{"50023612":"康乐镇","50023613":"新民镇","50023627":"康坪乡","500236001":"永安街道","500236002":"鱼复街道","500236003":"夔门街道","500236117":"白帝镇","500236118":"草堂镇","500236119":"汾河镇","500236121":"大树镇","500236122":"竹园镇","500236123":"公平镇","500236124":"朱衣镇","500236125":"甲高镇","500236126":"羊市镇","500236127":"吐祥镇","500236128":"兴隆镇","500236129":"青龙镇","500236131":"永乐镇","500236132":"安坪镇","500236133":"五马镇","500236134":"青莲镇","500236265":"岩湾乡","500236266":"平安乡","500236267":"红土乡","500236269":"石岗乡","500236272":"太和土家族乡","500236274":"鹤峰乡","500236275":"冯坪乡","500236276":"长安土家族乡","500236277":"龙桥土家族乡","500236278":"云雾土家族乡"},"500237":{"5002372":"红椿乡","50023711":"铜鼓镇","50023721":"建坪乡","500237001":"高唐街道","500237002":"龙门街道","500237101":"庙宇镇","500237102":"大昌镇","500237103":"福田镇","500237104":"龙溪镇","500237105":"双龙镇","500237106":"官阳镇","500237107":"骡坪镇","500237108":"抱龙镇","500237109":"官渡镇","500237111":"巫峡镇","500237207":"两坪乡","500237208":"曲尺乡","500237211":"大溪乡","500237214":"金坪乡","500237216":"平河乡","500237219":"当阳乡","500237222":"竹贤乡","500237225":"三溪乡","500237227":"培石乡","500237229":"笃坪乡","500237231":"邓家乡"},"500238":{"5002381":"城厢镇","5002384":"红池坝经济开发区","50023811":"峰灵镇","50023821":"长桂乡","50023824":"双阳乡","500238001":"宁河街道","500238002":"柏杨街道","500238101":"凤凰镇","500238102":"宁厂镇","500238103":"上磺镇","500238104":"古路镇","500238105":"文峰镇","500238106":"徐家镇","500238107":"白鹿镇","500238108":"尖山镇","500238109":"下堡镇","500238111":"塘坊镇","500238112":"朝阳镇","500238113":"田坝镇","500238114":"通城镇","500238115":"菱角镇","500238116":"蒲莲镇","500238117":"土城镇","500238204":"胜利乡","500238207":"大河乡","500238208":"天星乡","500238226":"鱼鳞乡","500238227":"乌龙乡","500238234":"中岗乡","500238237":"花台乡","500238239":"兰英乡","500238242":"中梁乡","500238243":"天元乡"},"500240":{"500240":"下路街道","50024011":"龙沙镇","50024021":"石家乡","500240101":"西沱镇","500240103":"悦崃镇","500240104":"临溪镇","500240105":"黄水镇","500240106":"马武镇","500240107":"沙子镇","500240108":"王场镇","500240109":"沿溪镇","500240111":"鱼池镇","500240112":"三河镇","500240113":"大歇镇","500240114":"桥头镇","500240115":"万朝镇","500240116":"冷水镇","500240117":"黄鹤镇","500240203":"黎场乡","500240204":"三星乡","500240205":"六塘乡","500240207":"三益乡","500240208":"王家乡","500240209":"河嘴乡","500240212":"枫木乡","500240213":"中益乡","500240214":"洗新乡","500240216":"龙潭乡","500240217":"新乐乡","500240218":"金铃乡","500240219":"金竹乡"},"500241":{"50024111":"雅江镇","500241001":"中和街道","500241002":"乌杨街道","500241003":"平凯街道","500241102":"清溪场镇","500241103":"隘口镇","500241104":"溶溪镇","500241105":"官庄镇","500241106":"龙池镇","500241107":"石堤镇","500241108":"峨溶镇","500241109":"洪安镇","500241111":"石耶镇","500241112":"梅江镇","500241113":"兰桥镇","500241114":"膏田镇","500241115":"溪口镇","500241116":"妙泉镇","500241117":"宋农镇","500241118":"里仁镇","500241119":"钟灵镇","500241201":"孝溪乡","500241207":"海洋乡","500241208":"大溪乡","500241211":"涌洞乡","500241214":"中平乡","500241215":"岑溪乡"},"500242":{"5002422":"涂市乡","50024211":"泔溪镇","50024221":"后坪乡","50024222":"清泉乡","500242001":"桃花源街道","500242002":"钟多街道","500242101":"龙潭镇","500242102":"麻旺镇","500242103":"酉酬镇","500242104":"大溪镇","500242105":"兴隆镇","500242106":"黑水镇","500242107":"丁市镇","500242108":"龚滩镇","500242109":"李溪镇","500242111":"酉水河镇","500242112":"苍岭镇","500242113":"小河镇","500242114":"板溪镇","500242202":"铜鼓乡","500242204":"可大乡","500242205":"偏柏乡","500242206":"五福乡","500242207":"木叶乡","500242208":"毛坝乡","500242209":"花田乡","500242211":"天馆乡","500242212":"宜居乡","500242213":"万木乡","500242214":"两罾乡","500242215":"板桥乡","500242216":"官清乡","500242217":"南腰界乡","500242218":"车田乡","500242219":"腴地乡","500242221":"庙溪乡","500242222":"浪坪乡","500242223":"双泉乡","500242224":"楠木乡"},"500243":{"50024311":"万足镇","50024321":"走马乡","500243001":"汉葭街道","500243002":"绍庆街道","500243003":"靛水街道","500243101":"保家镇","500243102":"郁山镇","500243103":"高谷镇","500243104":"桑柘镇","500243105":"鹿角镇","500243106":"黄家镇","500243107":"普子镇","500243108":"龙射镇","500243109":"连湖镇","500243111":"平安镇","500243112":"长生镇","500243113":"新田镇","500243114":"鞍子镇","500243115":"太原镇","500243116":"龙溪镇","500243117":"梅子垭镇","500243118":"大同镇","500243201":"岩东乡","500243202":"鹿鸣乡","500243204":"棣棠乡","500243206":"三义乡","500243207":"联合乡","500243208":"石柳乡","500243211":"芦塘乡","500243213":"乔梓乡","500243217":"诸佛乡","500243219":"桐楼乡","500243222":"善感乡","500243223":"双龙乡","500243224":"石盘乡","500243225":"大垭乡","500243226":"润溪乡","500243227":"朗溪乡","500243228":"龙塘乡"},"510000":{"510100":"成都市","510300":"自贡市","510400":"攀枝花市","510500":"泸州市","510600":"德阳市","510700":"绵阳市","510800":"广元市","510900":"遂宁市","511000":"内江市","511100":"乐山市","511300":"南充市","511400":"眉山市","511500":"宜宾市","511600":"广安市","511700":"达州市","511800":"雅安市","511900":"巴中市","512000":"资阳市","513200":"阿坝藏族羌族自治州","513300":"甘孜藏族自治州","513400":"凉山彝族自治州"},"510100":{"510104":"锦江区","510105":"青羊区","510106":"金牛区","510107":"武侯区","510108":"成华区","510112":"龙泉驿区","510113":"青白江区","510114":"新都区","510115":"温江区","510116":"双流区","510121":"金堂县","510124":"郫县","510129":"大邑县","510131":"蒲江县","510132":"新津县","510181":"都江堰市","510182":"彭州市","510183":"邛崃市","510184":"崇州市","510185":"简阳市"},"510300":{"510302":"自流井区","510303":"贡井区","510304":"大安区","510311":"沿滩区","510321":"荣县","510322":"富顺县"},"510400":{"510402":"东区","510403":"西区","510411":"仁和区","510421":"米易县","510422":"盐边县"},"510500":{"510502":"江阳区","510503":"纳溪区","510504":"龙马潭区","510521":"泸县","510522":"合江县","510524":"叙永县","510525":"古蔺县"},"510600":{"510603":"旌阳区","510623":"中江县","510626":"罗江县","510681":"广汉市","510682":"什邡市","510683":"绵竹市"},"510700":{"510703":"涪城区","510704":"游仙区","510705":"安州区","510722":"三台县","510723":"盐亭县","510725":"梓潼县","510726":"北川羌族自治县","510727":"平武县","510781":"江油市"},"510800":{"510802":"利州区","510811":"昭化区","510812":"朝天区","510821":"旺苍县","510822":"青川县","510823":"剑阁县","510824":"苍溪县"},"510900":{"510903":"船山区","510904":"安居区","510921":"蓬溪县","510922":"射洪县","510923":"大英县"},"511000":{"511002":"市中区","511011":"东兴区","511024":"威远县","511025":"资中县","511028":"隆昌县"},"511100":{"511102":"市中区","511111":"沙湾区","511112":"五通桥区","511113":"金口河区","511123":"犍为县","511124":"井研县","511126":"夹江县","511129":"沐川县","511132":"峨边彝族自治县","511133":"马边彝族自治县","511181":"峨眉山市"},"511300":{"511302":"顺庆区","511303":"高坪区","511304":"嘉陵区","511321":"南部县","511322":"营山县","511323":"蓬安县","511324":"仪陇县","511325":"西充县","511381":"阆中市"},"511400":{"511402":"东坡区","511403":"彭山区","511421":"仁寿县","511423":"洪雅县","511424":"丹棱县","511425":"青神县"},"511500":{"511502":"翠屏区","511503":"南溪区","511521":"宜宾县","511523":"江安县","511524":"长宁县","511525":"高县","511526":"珙县","511527":"筠连县","511528":"兴文县","511529":"屏山县"},"511600":{"511602":"广安区","511603":"前锋区","511621":"岳池县","511622":"武胜县","511623":"邻水县","511681":"华蓥市"},"511700":{"511702":"通川区","511703":"达川区","511722":"宣汉县","511723":"开江县","511724":"大竹县","511725":"渠县","511781":"万源市"},"511800":{"511802":"雨城区","511803":"名山区","511822":"荥经县","511823":"汉源县","511824":"石棉县","511825":"天全县","511826":"芦山县","511827":"宝兴县"},"511900":{"511902":"巴州区","511903":"恩阳区","511921":"通江县","511922":"南江县","511923":"平昌县"},"512000":{"512002":"雁江区","512021":"安岳县","512022":"乐至县"},"513200":{"513201":"马尔康市","513221":"汶川县","513222":"理县","513223":"茂县","513224":"松潘县","513225":"九寨沟县","513226":"金川县","513227":"小金县","513228":"黑水县","513230":"壤塘县","513231":"阿坝县","513232":"若尔盖县","513233":"红原县"},"513300":{"513301":"康定市","513322":"泸定县","513323":"丹巴县","513324":"九龙县","513325":"雅江县","513326":"道孚县","513327":"炉霍县","513328":"甘孜县","513329":"新龙县","513330":"德格县","513331":"白玉县","513332":"石渠县","513333":"色达县","513334":"理塘县","513335":"巴塘县","513336":"乡城县","513337":"稻城县","513338":"得荣县"},"513400":{"513401":"西昌市","513422":"木里藏族自治县","513423":"盐源县","513424":"德昌县","513425":"会理县","513426":"会东县","513427":"宁南县","513428":"普格县","513429":"布拖县","513430":"金阳县","513431":"昭觉县","513432":"喜德县","513433":"冕宁县","513434":"越西县","513435":"甘洛县","513436":"美姑县","513437":"雷波县"},"520000":{"520100":"贵阳市","520200":"六盘水市","520300":"遵义市","520400":"安顺市","520500":"毕节市","520600":"铜仁市","522300":"黔西南布依族苗族自治州","522600":"黔东南苗族侗族自治州","522700":"黔南布依族苗族自治州"},"520100":{"520102":"南明区","520103":"云岩区","520111":"花溪区","520112":"乌当区","520113":"白云区","520115":"观山湖区","520121":"开阳县","520122":"息烽县","520123":"修文县","520181":"清镇市"},"520200":{"520201":"钟山区","520203":"六枝特区","520221":"水城县","520222":"盘县"},"520300":{"520302":"红花岗区","520303":"汇川区","520304":"播州区","520322":"桐梓县","520323":"绥阳县","520324":"正安县","520325":"道真仡佬族苗族自治县","520326":"务川仡佬族苗族自治县","520327":"凤冈县","520328":"湄潭县","520329":"余庆县","520330":"习水县","520381":"赤水市","520382":"仁怀市"},"520400":{"520402":"西秀区","520403":"平坝区","520422":"普定县","520423":"镇宁布依族苗族自治县","520424":"关岭布依族苗族自治县","520425":"紫云苗族布依族自治县"},"520500":{"520502":"七星关区","520521":"大方县","520522":"黔西县","520523":"金沙县","520524":"织金县","520525":"纳雍县","520526":"威宁彝族回族苗族自治县","520527":"赫章县"},"520600":{"520602":"碧江区","520603":"万山区","520621":"江口县","520622":"玉屏侗族自治县","520623":"石阡县","520624":"思南县","520625":"印江土家族苗族自治县","520626":"德江县","520627":"沿河土家族自治县","520628":"松桃苗族自治县"},"522300":{"522301":"兴义市","522322":"兴仁县","522323":"普安县","522324":"晴隆县","522325":"贞丰县","522326":"望谟县","522327":"册亨县","522328":"安龙县"},"522600":{"522601":"凯里市","522622":"黄平县","522623":"施秉县","522624":"三穗县","522625":"镇远县","522626":"岑巩县","522627":"天柱县","522628":"锦屏县","522629":"剑河县","522630":"台江县","522631":"黎平县","522632":"榕江县","522633":"从江县","522634":"雷山县","522635":"麻江县","522636":"丹寨县"},"522700":{"522701":"都匀市","522702":"福泉市","522722":"荔波县","522723":"贵定县","522725":"瓮安县","522726":"独山县","522727":"平塘县","522728":"罗甸县","522729":"长顺县","522730":"龙里县","522731":"惠水县","522732":"三都水族自治县"},"530000":{"530100":"昆明市","530300":"曲靖市","530400":"玉溪市","530500":"保山市","530600":"昭通市","530700":"丽江市","530800":"普洱市","530900":"临沧市","532300":"楚雄彝族自治州","532500":"红河哈尼族彝族自治州","532600":"文山壮族苗族自治州","532800":"西双版纳傣族自治州","532900":"大理白族自治州","533100":"德宏傣族景颇族自治州","533300":"怒江傈僳族自治州","533400":"迪庆藏族自治州"},"530100":{"530102":"五华区","530103":"盘龙区","530111":"官渡区","530112":"西山区","530113":"东川区","530114":"呈贡区","530122":"晋宁县","530124":"富民县","530125":"宜良县","530126":"石林彝族自治县","530127":"嵩明县","530128":"禄劝彝族苗族自治县","530129":"寻甸回族彝族自治县","530181":"安宁市"},"530300":{"530302":"麒麟区","530303":"沾益区","530321":"马龙县","530322":"陆良县","530323":"师宗县","530324":"罗平县","530325":"富源县","530326":"会泽县","530381":"宣威市"},"530400":{"530402":"红塔区","530403":"江川区","530422":"澄江县","530423":"通海县","530424":"华宁县","530425":"易门县","530426":"峨山彝族自治县","530427":"新平彝族傣族自治县","530428":"元江哈尼族彝族傣族自治县"},"530500":{"530502":"隆阳区","530521":"施甸县","530523":"龙陵县","530524":"昌宁县","530581":"腾冲市"},"530600":{"530602":"昭阳区","530621":"鲁甸县","530622":"巧家县","530623":"盐津县","530624":"大关县","530625":"永善县","530626":"绥江县","530627":"镇雄县","530628":"彝良县","530629":"威信县","530630":"水富县"},"530700":{"530702":"古城区","530721":"玉龙纳西族自治县","530722":"永胜县","530723":"华坪县","530724":"宁蒗彝族自治县"},"530800":{"530802":"思茅区","530821":"宁洱哈尼族彝族自治县","530822":"墨江哈尼族自治县","530823":"景东彝族自治县","530824":"景谷傣族彝族自治县","530825":"镇沅彝族哈尼族拉祜族自治县","530826":"江城哈尼族彝族自治县","530827":"孟连傣族拉祜族佤族自治县","530828":"澜沧拉祜族自治县","530829":"西盟佤族自治县"},"530900":{"530902":"临翔区","530921":"凤庆县","530922":"云县","530923":"永德县","530924":"镇康县","530925":"双江拉祜族佤族布朗族傣族自治县","530926":"耿马傣族佤族自治县","530927":"沧源佤族自治县"},"532300":{"532301":"楚雄市","532322":"双柏县","532323":"牟定县","532324":"南华县","532325":"姚安县","532326":"大姚县","532327":"永仁县","532328":"元谋县","532329":"武定县","532331":"禄丰县"},"532500":{"532501":"个旧市","532502":"开远市","532503":"蒙自市","532504":"弥勒市","532523":"屏边苗族自治县","532524":"建水县","532525":"石屏县","532527":"泸西县","532528":"元阳县","532529":"红河县","532530":"金平苗族瑶族傣族自治县","532531":"绿春县","532532":"河口瑶族自治县"},"532600":{"532601":"文山市","532622":"砚山县","532623":"西畴县","532624":"麻栗坡县","532625":"马关县","532626":"丘北县","532627":"广南县","532628":"富宁县"},"532800":{"532801":"景洪市","532822":"勐海县","532823":"勐腊县"},"532900":{"532901":"大理市","532922":"漾濞彝族自治县","532923":"祥云县","532924":"宾川县","532925":"弥渡县","532926":"南涧彝族自治县","532927":"巍山彝族回族自治县","532928":"永平县","532929":"云龙县","532930":"洱源县","532931":"剑川县","532932":"鹤庆县"},"533100":{"533102":"瑞丽市","533103":"芒市","533122":"梁河县","533123":"盈江县","533124":"陇川县"},"533300":{"533301":"泸水市","533323":"福贡县","533324":"贡山独龙族怒族自治县","533325":"兰坪白族普米族自治县"},"533400":{"533401":"香格里拉市","533422":"德钦县","533423":"维西傈僳族自治县"},"540000":{"540100":"拉萨市","540200":"日喀则市","540300":"昌都市","540400":"林芝市","540500":"山南市","542400":"那曲地区","542500":"阿里地区"},"540100":{"540102":"城关区","540103":"堆龙德庆区","540121":"林周县","540122":"当雄县","540123":"尼木县","540124":"曲水县","540126":"达孜县","540127":"墨竹工卡县"},"540200":{"540202":"桑珠孜区","540221":"南木林县","540222":"江孜县","540223":"定日县","540224":"萨迦县","540225":"拉孜县","540226":"昂仁县","540227":"谢通门县","540228":"白朗县","540229":"仁布县","540230":"康马县","540231":"定结县","540232":"仲巴县","540233":"亚东县","540234":"吉隆县","540235":"聂拉木县","540236":"萨嘎县","540237":"岗巴县"},"540300":{"540302":"卡若区","540321":"江达县","540322":"贡觉县","540323":"类乌齐县","540324":"丁青县","540325":"察雅县","540326":"八宿县","540327":"左贡县","540328":"芒康县","540329":"洛隆县","540330":"边坝县"},"540400":{"540402":"巴宜区","540421":"工布江达县","540422":"米林县","540423":"墨脱县","540424":"波密县","540425":"察隅县","540426":"朗县"},"540500":{"540502":"乃东区","540521":"扎囊县","540522":"贡嘎县","540523":"桑日县","540524":"琼结县","540525":"曲松县","540526":"措美县","540527":"洛扎县","540528":"加查县","540529":"隆子县","540530":"错那县","540531":"浪卡子县"},"542400":{"542421":"那曲县","542422":"嘉黎县","542423":"比如县","542424":"聂荣县","542425":"安多县","542426":"申扎县","542427":"索县","542428":"班戈县","542429":"巴青县","542430":"尼玛县","542431":"双湖县"},"542500":{"542521":"普兰县","542522":"札达县","542523":"噶尔县","542524":"日土县","542525":"革吉县","542526":"改则县","542527":"措勤县"},"610000":{"610100":"西安市","610200":"铜川市","610300":"宝鸡市","610400":"咸阳市","610500":"渭南市","610600":"延安市","610700":"汉中市","610800":"榆林市","610900":"安康市","611000":"商洛市"},"610100":{"610102":"新城区","610103":"碑林区","610104":"莲湖区","610111":"灞桥区","610112":"未央区","610113":"雁塔区","610114":"阎良区","610115":"临潼区","610116":"长安区","610117":"高陵区","610122":"蓝田县","610124":"周至县","610125":"户县"},"610200":{"610202":"王益区","610203":"印台区","610204":"耀州区","610222":"宜君县"},"610300":{"610302":"渭滨区","610303":"金台区","610304":"陈仓区","610322":"凤翔县","610323":"岐山县","610324":"扶风县","610326":"眉县","610327":"陇县","610328":"千阳县","610329":"麟游县","610330":"凤县","610331":"太白县"},"610400":{"610402":"秦都区","610403":"杨陵区","610404":"渭城区","610422":"三原县","610423":"泾阳县","610424":"乾县","610425":"礼泉县","610426":"永寿县","610427":"彬县","610428":"长武县","610429":"旬邑县","610430":"淳化县","610431":"武功县","610481":"兴平市"},"610500":{"610502":"临渭区","610503":"华州区","610522":"潼关县","610523":"大荔县","610524":"合阳县","610525":"澄城县","610526":"蒲城县","610527":"白水县","610528":"富平县","610581":"韩城市","610582":"华阴市"},"610600":{"610602":"宝塔区","610603":"安塞区","610621":"延长县","610622":"延川县","610623":"子长县","610625":"志丹县","610626":"吴起县","610627":"甘泉县","610628":"富县","610629":"洛川县","610630":"宜川县","610631":"黄龙县","610632":"黄陵县"},"610700":{"610702":"汉台区","610721":"南郑县","610722":"城固县","610723":"洋县","610724":"西乡县","610725":"勉县","610726":"宁强县","610727":"略阳县","610728":"镇巴县","610729":"留坝县","610730":"佛坪县"},"610800":{"610802":"榆阳区","610803":"横山区","610821":"神木县","610822":"府谷县","610824":"靖边县","610825":"定边县","610826":"绥德县","610827":"米脂县","610828":"佳县","610829":"吴堡县","610830":"清涧县","610831":"子洲县"},"610900":{"610902":"汉滨区","610921":"汉阴县","610922":"石泉县","610923":"宁陕县","610924":"紫阳县","610925":"岚皋县","610926":"平利县","610927":"镇坪县","610928":"旬阳县","610929":"白河县"},"611000":{"611002":"商州区","611021":"洛南县","611022":"丹凤县","611023":"商南县","611024":"山阳县","611025":"镇安县","611026":"柞水县"},"620000":{"620100":"兰州市","620200":"嘉峪关市","620300":"金昌市","620400":"白银市","620500":"天水市","620600":"武威市","620700":"张掖市","620800":"平凉市","620900":"酒泉市","621000":"庆阳市","621100":"定西市","621200":"陇南市","622900":"临夏回族自治州","623000":"甘南藏族自治州"},"620100":{"620102":"城关区","620103":"七里河区","620104":"西固区","620105":"安宁区","620111":"红古区","620121":"永登县","620122":"皋兰县","620123":"榆中县"},"620200":{},"620300":{"620302":"金川区","620321":"永昌县"},"620400":{"620402":"白银区","620403":"平川区","620421":"靖远县","620422":"会宁县","620423":"景泰县"},"620500":{"620502":"秦州区","620503":"麦积区","620521":"清水县","620522":"秦安县","620523":"甘谷县","620524":"武山县","620525":"张家川回族自治县"},"620600":{"620602":"凉州区","620621":"民勤县","620622":"古浪县","620623":"天祝藏族自治县"},"620700":{"620702":"甘州区","620721":"肃南裕固族自治县","620722":"民乐县","620723":"临泽县","620724":"高台县","620725":"山丹县"},"620800":{"620802":"崆峒区","620821":"泾川县","620822":"灵台县","620823":"崇信县","620824":"华亭县","620825":"庄浪县","620826":"静宁县"},"620900":{"620902":"肃州区","620921":"金塔县","620922":"瓜州县","620923":"肃北蒙古族自治县","620924":"阿克塞哈萨克族自治县","620981":"玉门市","620982":"敦煌市"},"621000":{"621002":"西峰区","621021":"庆城县","621022":"环县","621023":"华池县","621024":"合水县","621025":"正宁县","621026":"宁县","621027":"镇原县"},"621100":{"621102":"安定区","621121":"通渭县","621122":"陇西县","621123":"渭源县","621124":"临洮县","621125":"漳县","621126":"岷县"},"621200":{"621202":"武都区","621221":"成县","621222":"文县","621223":"宕昌县","621224":"康县","621225":"西和县","621226":"礼县","621227":"徽县","621228":"两当县"},"622900":{"622901":"临夏市","622921":"临夏县","622922":"康乐县","622923":"永靖县","622924":"广河县","622925":"和政县","622926":"东乡族自治县","622927":"积石山保安族东乡族撒拉族自治县"},"623000":{"623001":"合作市","623021":"临潭县","623022":"卓尼县","623023":"舟曲县","623024":"迭部县","623025":"玛曲县","623026":"碌曲县","623027":"夏河县"},"630000":{"630100":"西宁市","630200":"海东市","632200":"海北藏族自治州","632300":"黄南藏族自治州","632500":"海南藏族自治州","632600":"果洛藏族自治州","632700":"玉树藏族自治州","632800":"海西蒙古族藏族自治州"},"630100":{"630102":"城东区","630103":"城中区","630104":"城西区","630105":"城北区","630121":"大通回族土族自治县","630122":"湟中县","630123":"湟源县"},"630200":{"630202":"乐都区","630203":"平安区","630222":"民和回族土族自治县","630223":"互助土族自治县","630224":"化隆回族自治县","630225":"循化撒拉族自治县"},"632200":{"632221":"门源回族自治县","632222":"祁连县","632223":"海晏县","632224":"刚察县"},"632300":{"632321":"同仁县","632322":"尖扎县","632323":"泽库县","632324":"河南蒙古族自治县"},"632500":{"632521":"共和县","632522":"同德县","632523":"贵德县","632524":"兴海县","632525":"贵南县"},"632600":{"632621":"玛沁县","632622":"班玛县","632623":"甘德县","632624":"达日县","632625":"久治县","632626":"玛多县"},"632700":{"632701":"玉树市","632722":"杂多县","632723":"称多县","632724":"治多县","632725":"囊谦县","632726":"曲麻莱县"},"632800":{"632801":"格尔木市","632802":"德令哈市","632821":"乌兰县","632822":"都兰县","632823":"天峻县"},"640000":{"640100":"银川市","640200":"石嘴山市","640300":"吴忠市","640400":"固原市","640500":"中卫市"},"640100":{"640104":"兴庆区","640105":"西夏区","640106":"金凤区","640121":"永宁县","640122":"贺兰县","640181":"灵武市"},"640200":{"640202":"大武口区","640205":"惠农区","640221":"平罗县"},"640300":{"640302":"利通区","640303":"红寺堡区","640323":"盐池县","640324":"同心县","640381":"青铜峡市"},"640400":{"640402":"原州区","640422":"西吉县","640423":"隆德县","640424":"泾源县","640425":"彭阳县"},"640500":{"640502":"沙坡头区","640521":"中宁县","640522":"海原县"},"650000":{"650100":"乌鲁木齐市","650200":"克拉玛依市","650400":"吐鲁番市","650500":"哈密市","652300":"昌吉回族自治州","652700":"博尔塔拉蒙古自治州","652800":"巴音郭楞蒙古自治州","652900":"阿克苏地区","653000":"克孜勒苏柯尔克孜自治州","653100":"喀什地区","653200":"和田地区","654000":"伊犁哈萨克自治州","654200":"塔城地区","654300":"阿勒泰地区","659001":"石河子市","659002":"阿拉尔市","659003":"图木舒克市","659004":"五家渠市","659006":"铁门关市"},"650100":{"650102":"天山区","650103":"沙依巴克区","650104":"新市区","650105":"水磨沟区","650106":"头屯河区","650107":"达坂城区","650109":"米东区","650121":"乌鲁木齐县"},"650200":{"650202":"独山子区","650203":"克拉玛依区","650204":"白碱滩区","650205":"乌尔禾区"},"650400":{"650402":"高昌区","650421":"鄯善县","650422":"托克逊县"},"650500":{"650502":"伊州区","650521":"巴里坤哈萨克自治县","650522":"伊吾县"},"652300":{"652301":"昌吉市","652302":"阜康市","652323":"呼图壁县","652324":"玛纳斯县","652325":"奇台县","652327":"吉木萨尔县","652328":"木垒哈萨克自治县"},"652700":{"652701":"博乐市","652702":"阿拉山口市","652722":"精河县","652723":"温泉县"},"652800":{"652801":"库尔勒市","652822":"轮台县","652823":"尉犁县","652824":"若羌县","652825":"且末县","652826":"焉耆回族自治县","652827":"和静县","652828":"和硕县","652829":"博湖县"},"652900":{"652901":"阿克苏市","652922":"温宿县","652923":"库车县","652924":"沙雅县","652925":"新和县","652926":"拜城县","652927":"乌什县","652928":"阿瓦提县","652929":"柯坪县"},"653000":{"653001":"阿图什市","653022":"阿克陶县","653023":"阿合奇县","653024":"乌恰县"},"653100":{"653101":"喀什市","653121":"疏附县","653122":"疏勒县","653123":"英吉沙县","653124":"泽普县","653125":"莎车县","653126":"叶城县","653127":"麦盖提县","653128":"岳普湖县","653129":"伽师县","653130":"巴楚县","653131":"塔什库尔干塔吉克自治县"},"653200":{"653201":"和田市","653221":"和田县","653222":"墨玉县","653223":"皮山县","653224":"洛浦县","653225":"策勒县","653226":"于田县","653227":"民丰县"},"654000":{"654002":"伊宁市","654003":"奎屯市","654004":"霍尔果斯市","654021":"伊宁县","654022":"察布查尔锡伯自治县","654023":"霍城县","654024":"巩留县","654025":"新源县","654026":"昭苏县","654027":"特克斯县","654028":"尼勒克县"},"654200":{"654201":"塔城市","654202":"乌苏市","654221":"额敏县","654223":"沙湾县","654224":"托里县","654225":"裕民县","654226":"和布克赛尔蒙古自治县"},"654300":{"654301":"阿勒泰市","654321":"布尔津县","654322":"富蕴县","654323":"福海县","654324":"哈巴河县","654325":"青河县","654326":"吉木乃县"},"659001":{"6590011":"北泉镇","6590015":"兵团一五二团","659001001":"新城街道","659001002":"向阳街道","659001003":"红山街道","659001004":"老街街道","659001005":"东城街道","659001101":"石河子镇"},"659002":{"6590022":"托喀依乡","6590025":"兵团七团","65900252":"兵团三团","659002001":"金银川路街道","659002002":"幸福路街道","659002003":"青松路街道","659002004":"南口街道","659002402":"工业园区","659002501":"兵团八团","659002503":"兵团十团","659002504":"兵团十一团","659002505":"兵团十二团","659002506":"兵团十三团","659002507":"兵团十四团","659002509":"兵团十六团","659002511":"兵团第一师水利水电工程处","659002512":"兵团第一师塔里木灌区水利管理处","659002513":"阿拉尔农场","659002514":"兵团第一师幸福农场","659002515":"中心监狱","659002516":"兵团一团","659002517":"兵团农一师沙井子水利管理处","659002518":"西工业园区管理委员会","659002519":"兵团二团"},"659003":{"65900351":"兵团五十团","659003001":"齐干却勒街道","659003002":"前海街道","659003003":"永安坝街道","659003504":"兵团四十四团","659003509":"兵团四十九团","659003511":"兵团五十一团","659003513":"兵团五十三团","659003514":"兵团图木舒克市喀拉拜勒镇"},"659004":{"6590045":"兵团一零一团","659004001":"军垦路街道","659004002":"青湖路街道","659004003":"人民路街道","659004501":"兵团一零二团","659004502":"兵团一零三团"},
  "659006":{"6590061":"博古其镇","659006101":"双丰镇"},
  "710000":{"710100":"台湾省"},
  "710100":{"710101":"金门","710102":"连江","710103":"苗栗","710104":"南投","710105":"澎湖","710106":"屏东","710107":"台东","710108":"台中","710109":"台南","710110":"台北","710111":"桃园","710112":"云林","710113":"新北","710114":"彰化","710115":"嘉义","710116":"新竹","710117":"花莲","710118":"宜兰","710119":"高雄","710120":"基隆"},
  "910000":{"810000":"香港特别行政区","820000":"澳门特别行政区"},
  "810000":{"810101":"中西区","810102":"东区","810103":"九龙城区","810104":"观塘区","810105":"深水埗区","810106":"湾仔区","810107":"黄大仙区","810108":"油尖旺区","810109":"离岛区","810110":"葵青区","810111":"北区","810112":"西贡区","810113":"沙田区","810114":"屯门区","810115":"大埔区","810116":"荃湾区","810117":"元朗区","810118":"香港","810119":"九龙","810120":"新界"},
  "820000":{"820101":"离岛","820102":"澳门半岛","820103":"凼仔","820104":"路凼城","820105":"路环"}
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/pom.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <groupId>org.jeecgframework.boot</groupId>
        <artifactId>lb-boot-base</artifactId>
        <version>3.0</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <description>公共模块</description>
    <artifactId>jeecg-boot-base-tools</artifactId>
    <dependencies>
        <!--集成springmvc框架 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- Redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>
        <!--加载hutool-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-core</artifactId>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-crypto</artifactId>
        </dependency>
        <!--加载beanutils-->
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
        </dependency>
    </dependencies>
</project>
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/annotation/RabbitComponent.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package org.jeecg.common.annotation;
import org.springframework.core.annotation.AliasFor;
import org.springframework.stereotype.Component;
import java.lang.annotation.*;
/**
 * @Author:zyf
 * @Date:2019-07-31 10:43
 * @Description: æ¶ˆæ¯é˜Ÿåˆ—初始化注解
 **/
@Documented
@Inherited
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Component
public @interface RabbitComponent {
    @AliasFor(
            annotation = Component.class
    )
    String value();
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/base/BaseMap.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,141 @@
package org.jeecg.common.base;
import cn.hutool.core.util.ObjectUtil;
import org.apache.commons.beanutils.ConvertUtils;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/**
 * è‡ªå®šä¹‰Map
 */
public class BaseMap extends HashMap<String, Object> {
    private static final long serialVersionUID = 1L;
    public BaseMap() {
    }
    public BaseMap(Map<String, Object> map) {
        this.putAll(map);
    }
    @Override
    public BaseMap put(String key, Object value) {
        super.put(key, Optional.ofNullable(value).orElse(""));
        return this;
    }
    public BaseMap add(String key, Object value) {
        super.put(key, Optional.ofNullable(value).orElse(""));
        return this;
    }
    @SuppressWarnings("unchecked")
    public <T> T get(String key) {
        Object obj = super.get(key);
        if (ObjectUtil.isNotEmpty(obj)) {
            return (T) obj;
        } else {
            return null;
        }
    }
    @SuppressWarnings("unchecked")
    public Boolean getBoolean(String key) {
        Object obj = super.get(key);
        if (ObjectUtil.isNotEmpty(obj)) {
            return Boolean.valueOf(obj.toString());
        } else {
            return false;
        }
    }
    public Long getLong(String key) {
        Object v = get(key);
        if (ObjectUtil.isNotEmpty(v)) {
            return new Long(v.toString());
        }
        return null;
    }
    public Long[] getLongs(String key) {
        Object v = get(key);
        if (ObjectUtil.isNotEmpty(v)) {
            return (Long[]) v;
        }
        return null;
    }
    public List<Long> getListLong(String key) {
        List<String> list = get(key);
        if (ObjectUtil.isNotEmpty(list)) {
            return list.stream().map(e -> new Long(e)).collect(Collectors.toList());
        } else {
            return null;
        }
    }
    public Long[] getLongIds(String key) {
        Object ids = get(key);
        if (ObjectUtil.isNotEmpty(ids)) {
            return (Long[]) ConvertUtils.convert(ids.toString().split(","), Long.class);
        } else {
            return null;
        }
    }
    public Integer getInt(String key, Integer def) {
        Object v = get(key);
        if (ObjectUtil.isNotEmpty(v)) {
            return Integer.parseInt(v.toString());
        } else {
            return def;
        }
    }
    public Integer getInt(String key) {
        Object v = get(key);
        if (ObjectUtil.isNotEmpty(v)) {
            return Integer.parseInt(v.toString());
        } else {
            return 0;
        }
    }
    public BigDecimal getBigDecimal(String key) {
        Object v = get(key);
        if (ObjectUtil.isNotEmpty(v)) {
            return new BigDecimal(v.toString());
        }
        return new BigDecimal("0");
    }
    @SuppressWarnings("unchecked")
    public <T> T get(String key, T def) {
        Object obj = super.get(key);
        if (ObjectUtil.isEmpty(obj)) {
            return def;
        }
        return (T) obj;
    }
    public static BaseMap toBaseMap(Map<String, Object> obj) {
        BaseMap map = new BaseMap();
        map.putAll(obj);
        return map;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/config/CommonConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package org.jeecg.common.config;
import org.jeecg.common.util.SpringContextHolder;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class CommonConfig {
    /**
     * Spring上下文工具配置
     *
     * @return
     */
    @Bean
    @ConditionalOnMissingBean(SpringContextHolder.class)
    public SpringContextHolder springContextHolder() {
        SpringContextHolder holder = new SpringContextHolder();
        return holder;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/config/mqtoken/TransmitUserTokenFilter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,44 @@
package org.jeecg.common.config.mqtoken;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
/**
 * å­˜æ”¾token到上下文供队列调用feign使用
 * @author zyf
 */
public class TransmitUserTokenFilter implements Filter {
    private static String X_ACCESS_TOKEN="X-Access-Token";
    public TransmitUserTokenFilter() {
    }
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        this.initUserInfo((HttpServletRequest) request);
        chain.doFilter(request, response);
    }
    private void initUserInfo(HttpServletRequest request) {
        String token = request.getHeader(X_ACCESS_TOKEN);
        if (token!=null) {
            try {
                //将token放入上下文中
                UserTokenContext.setToken(token);
            } catch (Exception e) {
            }
        }
    }
    @Override
    public void destroy() {
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/config/mqtoken/UserTokenContext.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package org.jeecg.common.config.mqtoken;
/**
 * ç”¨æˆ·token上下文
 * @author zyf
 */
public class UserTokenContext {
    private static ThreadLocal<String> userToken = new ThreadLocal<String>();
    public UserTokenContext() {
    }
    public static String getToken(){
        return userToken.get();
    }
    public static void setToken(String token){
        userToken.set(token);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/constant/CacheConstant.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,139 @@
package org.jeecg.common.constant;
/**
 * @author: huangxutao
 * @date: 2019-06-14
 * @description: ç¼“存常量
 */
public interface CacheConstant {
    /**
     * å­—典信息缓存(含禁用的字典项)
     */
    public static final String SYS_DICT_CACHE = "sys:cache:dict";
    public static final String SYS_DICT_CACHE_XMZT = "sys:cache:dict:xmzt";
    public static final String SYS_DICT_CACHE_XMLX = "sys:cache:dict:xmlx";
    public static final String SYS_DICT_CACHE_CPLB = "sys:cache:dict:cplb";
    public static final String SYS_DICT_CACHE_LCB = "sys:cache:dict:lcb";
    public static final String SYS_DICT_CACHE_FXDJ = "sys:cache:dict:fxdj";
    /**
     * ç¼“存项目
     */
    public static final String PRO_PROJECT_LIST = "pro:project:list:all";
    /**
     * å­—典信息缓存 status为有效的
     */
    public static final String SYS_ENABLE_DICT_CACHE = "sys:cache:dictEnable";
    /**
     * è¡¨å­—典信息缓存
     */
    public static final String SYS_DICT_TABLE_CACHE = "sys:cache:dictTable";
    public static final String SYS_DICT_TABLE_BY_KEYS_CACHE = SYS_DICT_TABLE_CACHE + "ByKeys";
    /**
     * æ•°æ®æƒé™é…ç½®ç¼“å­˜
     */
    public static final String SYS_DATA_PERMISSIONS_CACHE = "sys:cache:permission:datarules";
    /**
     * ç¼“存用户信息
     */
    public static final String SYS_USERS_CACHE = "sys:cache:user";
    /**
     * å…¨éƒ¨éƒ¨é—¨ä¿¡æ¯ç¼“å­˜
     */
    public static final String SYS_DEPARTS_CACHE = "sys:cache:depart:alldata";
    public static final String SYS_ORG_DEPART_CACHE = "sys:cache:depart:org";
    //缓存所有用户
    public static final String SYS_USER_ALL_CACHE = "sys:cache:user:all";
    /**
     * éƒ¨é—¨æˆå‘˜ä¿¡æ¯ç¼“å­˜
     */
    public static final String PERMISSION_DEPARTS = "permission:cache:departs";
    /**
     * éƒ¨é—¨æˆå‘˜ä¿¡æ¯ç¼“å­˜
     */
    public static final String PERMISSION_DEPARTS_USERS = "permission:cache:departsusers";
    /**
     * ç™»å½•用户角色
     */
    public static final String PERMISSION_USER_ROLE = "permission:cache:userrole";
    /**
     * ç™»å½•用户部门角色
     */
    public static final String PERMISSION_USER_DEPART_ROLE = "permission:cache:userdepartrole";
    /**
     * å…¨éƒ¨éƒ¨é—¨ids缓存
     */
    public static final String SYS_DEPART_IDS_CACHE = "sys:cache:depart:allids";
    /**
     * æµ‹è¯•缓存key
     */
    public static final String TEST_DEMO_CACHE = "test:demo";
    /**
     * å­—典信息缓存
     */
    public static final String SYS_DYNAMICDB_CACHE = "sys:cache:dbconnect:dynamic:";
    /**
     * gateway路由缓存
     */
    public static final String GATEWAY_ROUTES = "sys:cache:cloud:gateway_routes";
    /**
     * gateway路由 reload key
     */
    public static final String ROUTE_JVM_RELOAD_TOPIC = "gateway_jvm_route_reload_topic";
    /**
     * TODO å†—余代码 å¾…删除
     *插件商城排行榜
     */
    public static final String PLUGIN_MALL_RANKING = "pluginMall::rankingList";
    /**
     * TODO å†—余代码 å¾…删除
     *插件商城排行榜
     */
    public static final String PLUGIN_MALL_PAGE_LIST = "pluginMall::queryPageList";
    /**
     * online列表页配置信息缓存key
     */
    public static final String ONLINE_LIST = "sys:cache:online:list";
    /**
     * online表单页配置信息缓存key
     */
    public static final String ONLINE_FORM = "sys:cache:online:form";
    /**
     * online报表
     */
    public static final String ONLINE_RP = "sys:cache:online:rp";
    /**
     * online图表
     */
    public static final String ONLINE_GRAPH = "sys:cache:online:graph";
    /**
     * é€šè¿‡æ–‡ä»¶è·¯å¾„和文件名称缓存文件
     */
    public static final String DOC_FILE_PATH_CACHE = "doc:cache:filePath:path_name";
    /**
     * ç¼“存已删除的doc_file的id
     */
    public static final String DOC_FILE_DELETE_CACHE = "doc:cache:file:delete";
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/constant/GlobalConstants.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.common.constant;
public class GlobalConstants {
    /**
     * ä¸šåŠ¡å¤„ç†å™¨beanName传递参数
     */
    public static final String HANDLER_NAME = "handlerName";
    /**
     * redis消息通道名称
     */
    public static final String REDIS_TOPIC_NAME="jeecg_redis_topic";
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/client/JeecgRedisClient.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package org.jeecg.common.modules.redis.client;
import org.jeecg.common.base.BaseMap;
import org.jeecg.common.constant.GlobalConstants;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.core.RedisTemplate;
import javax.annotation.Resource;
/**
 * redis客户端
 */
@Configuration
public class JeecgRedisClient {
    @Resource
    private RedisTemplate<String, Object> redisTemplate;
    /**
     * å‘送消息
     *
     * @param handlerName
     * @param params
     */
    public void sendMessage(String handlerName, BaseMap params) {
        params.put(GlobalConstants.HANDLER_NAME, handlerName);
        redisTemplate.convertAndSend(GlobalConstants.REDIS_TOPIC_NAME, params);
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/config/RedisConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,161 @@
package org.jeecg.common.modules.redis.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.CacheConstant;
import org.jeecg.common.constant.GlobalConstants;
import org.jeecg.common.modules.redis.receiver.RedisReceiver;
import org.jeecg.common.modules.redis.writer.JeecgRedisCacheWriter;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.listener.ChannelTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter;
import org.springframework.data.redis.serializer.*;
import javax.annotation.Resource;
import java.time.Duration;
import static java.util.Collections.singletonMap;
/**
* å¼€å¯ç¼“存支持
* @author zyf
 * @Return:
*/
@Slf4j
@EnableCaching
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    @Resource
    private LettuceConnectionFactory lettuceConnectionFactory;
//    /**
//     * @description è‡ªå®šä¹‰çš„缓存key的生成策略 è‹¥æƒ³ä½¿ç”¨è¿™ä¸ªkey
//     *              åªéœ€è¦è®²æ³¨è§£ä¸ŠkeyGenerator的值设置为keyGenerator即可</br>
//     * @return è‡ªå®šä¹‰ç­–略生成的key
//     */
//    @Override
//    @Bean
//    public KeyGenerator keyGenerator() {
//        return new KeyGenerator() {
//            @Override
//            public Object generate(Object target, Method method, Object... params) {
//                StringBuilder sb = new StringBuilder();
//                sb.append(target.getClass().getName());
//                sb.append(method.getDeclaringClass().getName());
//                Arrays.stream(params).map(Object::toString).forEach(sb::append);
//                return sb.toString();
//            }
//        };
//    }
    /**
     * RedisTemplate配置
     * @param lettuceConnectionFactory
     * @return
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        log.info(" --- redis config init --- ");
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
        redisTemplate.setConnectionFactory(lettuceConnectionFactory);
        RedisSerializer<String> stringSerializer = new StringRedisSerializer();
        // key序列化
        redisTemplate.setKeySerializer(stringSerializer);
        // value序列化
        redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
        // Hash key序列化
        redisTemplate.setHashKeySerializer(stringSerializer);
        // Hash value序列化
        redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        redisTemplate.afterPropertiesSet();
        return redisTemplate;
    }
    /**
     * ç¼“存配置管理器
     *
     * @param factory
     * @return
     */
    @Bean
    public CacheManager cacheManager(LettuceConnectionFactory factory) {
        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = jacksonSerializer();
        // é…ç½®åºåˆ—化(解决乱码的问题),并且配置缓存默认有效期 6小时
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(6));
        RedisCacheConfiguration redisCacheConfiguration = config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                                                            .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));
                                                            //.disableCachingNullValues();
        // ä»¥é”å†™å…¥çš„æ–¹å¼åˆ›å»ºRedisCacheWriter对象
        //update-begin-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符*
        RedisCacheWriter writer = new JeecgRedisCacheWriter(factory, Duration.ofMillis(50L));
        //RedisCacheWriter.lockingRedisCacheWriter(factory);
        // åˆ›å»ºé»˜è®¤ç¼“存配置对象
        /* é»˜è®¤é…ç½®ï¼Œè®¾ç½®ç¼“存有效期 1小时*/
        //RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(1));
        /* è‡ªå®šä¹‰é…ç½®test:demo çš„超时时间为 5分钟*/
        RedisCacheManager cacheManager = RedisCacheManager.builder(writer).cacheDefaults(redisCacheConfiguration)
            .withInitialCacheConfigurations(singletonMap(CacheConstant.SYS_DICT_TABLE_CACHE,
                RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(10)).disableCachingNullValues()
                    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer))))
                .withInitialCacheConfigurations(singletonMap(CacheConstant.TEST_DEMO_CACHE, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofMinutes(5)).disableCachingNullValues()))
                .withInitialCacheConfigurations(singletonMap(CacheConstant.PLUGIN_MALL_RANKING, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(24)).disableCachingNullValues()))
                .withInitialCacheConfigurations(singletonMap(CacheConstant.PLUGIN_MALL_PAGE_LIST, RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofHours(24)).disableCachingNullValues()))
                .transactionAware().build();
        //update-end-author:taoyan date:20210316 for:注解CacheEvict根据key删除redis支持通配符*
        return cacheManager;
    }
    /**
     * redis ç›‘听配置
     *
     * @param redisConnectionFactory redis é…ç½®
     * @return
     */
    @Bean
    public RedisMessageListenerContainer redisContainer(RedisConnectionFactory redisConnectionFactory, RedisReceiver redisReceiver, MessageListenerAdapter commonListenerAdapter) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(redisConnectionFactory);
        container.addMessageListener(commonListenerAdapter, new ChannelTopic(GlobalConstants.REDIS_TOPIC_NAME));
        return container;
    }
    @Bean
    MessageListenerAdapter commonListenerAdapter(RedisReceiver redisReceiver) {
        MessageListenerAdapter messageListenerAdapter = new MessageListenerAdapter(redisReceiver, "onMessage");
        messageListenerAdapter.setSerializer(jacksonSerializer());
        return messageListenerAdapter;
    }
    private Jackson2JsonRedisSerializer jacksonSerializer() {
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        return jackson2JsonRedisSerializer;
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/listener/JeecgRedisListerer.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,12 @@
package org.jeecg.common.modules.redis.listener;
import org.jeecg.common.base.BaseMap;
/**
 * è‡ªå®šä¹‰æ¶ˆæ¯ç›‘听
 */
public interface JeecgRedisListerer {
    void onMessage(BaseMap message);
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/receiver/RedisReceiver.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package org.jeecg.common.modules.redis.receiver;
import cn.hutool.core.util.ObjectUtil;
import lombok.Data;
import org.jeecg.common.base.BaseMap;
import org.jeecg.common.constant.GlobalConstants;
import org.jeecg.common.modules.redis.listener.JeecgRedisListerer;
import org.jeecg.common.util.SpringContextHolder;
import org.springframework.stereotype.Component;
/**
 * @author zyf
 */
@Component
@Data
public class RedisReceiver {
    /**
     * æŽ¥å—消息并调用业务逻辑处理器
     *
     * @param params
     */
    public void onMessage(BaseMap params) {
        Object handlerName = params.get(GlobalConstants.HANDLER_NAME);
        JeecgRedisListerer messageListener = SpringContextHolder.getHandler(handlerName.toString(), JeecgRedisListerer.class);
        if (ObjectUtil.isNotEmpty(messageListener)) {
            messageListener.onMessage(params);
        }
    }
}
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/modules/redis/writer/JeecgRedisCacheWriter.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,221 @@
package org.jeecg.common.modules.redis.writer;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Collections;
import java.util.Optional;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
import java.util.function.Function;
import lombok.extern.slf4j.Slf4j;
import org.springframework.dao.PessimisticLockingFailureException;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStringCommands.SetOption;
import org.springframework.data.redis.core.types.Expiration;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
/**
 * è¯¥ç±»å‚ç…§ DefaultRedisCacheWriter é‡å†™äº† remove æ–¹æ³•实现通配符*删除
 */
@Slf4j
public class JeecgRedisCacheWriter implements RedisCacheWriter {
    private final RedisConnectionFactory connectionFactory;
    private final Duration sleepTime;
    public JeecgRedisCacheWriter(RedisConnectionFactory connectionFactory) {
        this(connectionFactory, Duration.ZERO);
    }
    public JeecgRedisCacheWriter(RedisConnectionFactory connectionFactory, Duration sleepTime) {
        Assert.notNull(connectionFactory, "ConnectionFactory must not be null!");
        Assert.notNull(sleepTime, "SleepTime must not be null!");
        this.connectionFactory = connectionFactory;
        this.sleepTime = sleepTime;
    }
    public void put(String name, byte[] key, byte[] value, @Nullable Duration ttl) {
        Assert.notNull(name, "Name must not be null!");
        Assert.notNull(key, "Key must not be null!");
        Assert.notNull(value, "Value must not be null!");
        this.execute(name, (connection) -> {
            if (shouldExpireWithin(ttl)) {
                connection.set(key, value, Expiration.from(ttl.toMillis(), TimeUnit.MILLISECONDS), SetOption.upsert());
            } else {
                connection.set(key, value);
            }
            return "OK";
        });
    }
    public byte[] get(String name, byte[] key) {
        Assert.notNull(name, "Name must not be null!");
        Assert.notNull(key, "Key must not be null!");
        return (byte[])this.execute(name, (connection) -> {
            return connection.get(key);
        });
    }
    public byte[] putIfAbsent(String name, byte[] key, byte[] value, @Nullable Duration ttl) {
        Assert.notNull(name, "Name must not be null!");
        Assert.notNull(key, "Key must not be null!");
        Assert.notNull(value, "Value must not be null!");
        return (byte[])this.execute(name, (connection) -> {
            if (this.isLockingCacheWriter()) {
                this.doLock(name, connection);
            }
            Object var7;
            try {
                boolean put;
                if (shouldExpireWithin(ttl)) {
                    put = connection.set(key, value, Expiration.from(ttl), SetOption.ifAbsent());
                } else {
                    put = connection.setNX(key, value);
                }
                if (!put) {
                    byte[] var11 = connection.get(key);
                    return var11;
                }
                var7 = null;
            } finally {
                if (this.isLockingCacheWriter()) {
                    this.doUnlock(name, connection);
                }
            }
            return (byte[])var7;
        });
    }
    public void remove(String name, byte[] key) {
        Assert.notNull(name, "Name must not be null!");
        Assert.notNull(key, "Key must not be null!");
        String keyString = new String(key);
        log.info("redis remove key:" + keyString);
        if(keyString!=null && keyString.endsWith("*")){
            execute(name, connection -> {
                // èŽ·å–æŸä¸ªå‰ç¼€æ‰€æ‹¥æœ‰çš„æ‰€æœ‰çš„é”®ï¼ŒæŸä¸ªå‰ç¼€å¼€å¤´ï¼ŒåŽé¢è‚¯å®šæ˜¯*
                Set<byte[]> keys = connection.keys(key);
                int delNum = 0;
                for (byte[] keyByte : keys) {
                    delNum += connection.del(keyByte);
                }
                return delNum;
            });
        }else{
            this.execute(name, (connection) -> {
                return connection.del(new byte[][]{key});
            });
        }
    }
    public void clean(String name, byte[] pattern) {
        Assert.notNull(name, "Name must not be null!");
        Assert.notNull(pattern, "Pattern must not be null!");
        this.execute(name, (connection) -> {
            boolean wasLocked = false;
            try {
                if (this.isLockingCacheWriter()) {
                    this.doLock(name, connection);
                    wasLocked = true;
                }
                byte[][] keys = (byte[][])((Set)Optional.ofNullable(connection.keys(pattern)).orElse(Collections.emptySet())).toArray(new byte[0][]);
                if (keys.length > 0) {
                    connection.del(keys);
                }
            } finally {
                if (wasLocked && this.isLockingCacheWriter()) {
                    this.doUnlock(name, connection);
                }
            }
            return "OK";
        });
    }
    void lock(String name) {
        this.execute(name, (connection) -> {
            return this.doLock(name, connection);
        });
    }
    void unlock(String name) {
        this.executeLockFree((connection) -> {
            this.doUnlock(name, connection);
        });
    }
    private Boolean doLock(String name, RedisConnection connection) {
        return connection.setNX(createCacheLockKey(name), new byte[0]);
    }
    private Long doUnlock(String name, RedisConnection connection) {
        return connection.del(new byte[][]{createCacheLockKey(name)});
    }
    boolean doCheckLock(String name, RedisConnection connection) {
        return connection.exists(createCacheLockKey(name));
    }
    private boolean isLockingCacheWriter() {
        return !this.sleepTime.isZero() && !this.sleepTime.isNegative();
    }
    private <T> T execute(String name, Function<RedisConnection, T> callback) {
        RedisConnection connection = this.connectionFactory.getConnection();
        try {
            this.checkAndPotentiallyWaitUntilUnlocked(name, connection);
            return callback.apply(connection);
        } finally {
            connection.close();
        }
    }
    private void executeLockFree(Consumer<RedisConnection> callback) {
        RedisConnection connection = this.connectionFactory.getConnection();
        try {
            callback.accept(connection);
        } finally {
            connection.close();
        }
    }
    private void checkAndPotentiallyWaitUntilUnlocked(String name, RedisConnection connection) {
        if (this.isLockingCacheWriter()) {
            try {
                while(this.doCheckLock(name, connection)) {
                    Thread.sleep(this.sleepTime.toMillis());
                }
            } catch (InterruptedException var4) {
                Thread.currentThread().interrupt();
                throw new PessimisticLockingFailureException(String.format("Interrupted while waiting to unlock cache %s", name), var4);
            }
        }
    }
    private static boolean shouldExpireWithin(@Nullable Duration ttl) {
        return ttl != null && !ttl.isZero() && !ttl.isNegative();
    }
    private static byte[] createCacheLockKey(String name) {
        return (name + "~lock").getBytes(StandardCharsets.UTF_8);
    }
}
在上述文件截断后对比
lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/RedisUtil.java lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/SpringContextHolder.java lb-boot/lb-boot-base/jeecg-boot-base-tools/src/main/java/org/jeecg/common/util/StringUtils.java lb-boot/lb-boot-base/pom.xml lb-boot/lb-boot-db/Dockerfile lb-boot/lb-boot-db/lb-boot.sql lb-boot/lb-boot-db/lb-doc.sql lb-boot/lb-boot-db/nacos.sql lb-boot/lb-boot-module-activiti/pom.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/Constant.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActBusiness.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActNode.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActZprocess.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/ActivitiConstant.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/Assignee.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/BaseAuditStatisticsEntity.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/BaseTaskEntity.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/Department.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/FlowCondition.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/entity/Role.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/ActDoAndApplyVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/BaseVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/DeleteBatchVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/HistoricProcessInsVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/HistoricTaskVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/ProcessInsVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/ProcessNodeVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/base/vo/TaskVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/config/ActivitiConfig.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/config/CustomProcessDiagramCanvas.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/config/CustomProcessDiagramGenerator.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/exception/CustomException.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/exception/ExceptionCode.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/utils/DictEnum.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/utils/DictModelConstant.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/common/utils/StringUtils.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActBusinessController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActProcessInsController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActTaskController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActivitiModelController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ActivitiProcessController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ReModelController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ReProcdefController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/controller/ServiceController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/manage/CustomGroupEntityManager.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/manage/CustomUserEntityManager.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActBusinessMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActNodeMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ActZprocessMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ReModelMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/ReProcdefMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActBusinessMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActNodeMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ActZprocessMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ReModelMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/mapper/xml/ReProcdefMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/model/converter/ActivitiConverter.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/model/entity/ReModelEntity.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/model/entity/ReProcdefEntity.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActBusinessService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActNodeService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/IActZprocessService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/ReModelService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/ReProcdefService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ActBusinessServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ActNodeServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ActZprocessServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ReModelServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/activiti/service/impl/ReProcdefServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/controller/ApplyLeaveController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/entity/ApplyLeave.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/ContactResultListener.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/CustomEventListener.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/ProblemResultListener.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/lisener/ProcessResultListener.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/ApplyLeaveMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/ApplyProcessMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/xml/mysql/ApplyLeaveMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/xml/mysql/ApplyProcessMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/mapper/xml/oracle/ApplyProcessMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/ApplyProcessService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/IApplyLeaveService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/impl/ApplyLeaveServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/apply/service/impl/ApplyProcessServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/controller/ApplyFormController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/entity/ApplyForm.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/mapper/ApplyFormMapper.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/mapper/xml/ApplyFormMapper.xml lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/service/IApplyFormService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/applyForm/service/impl/ApplyFormServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/controller/ApprovalController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/controller/ApprovalTaskController.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/dto/ApprovalOpinionDTO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/dto/CurrTaskNodeInfoDTO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/dto/DynamicFormConf.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/ApprovalOpinionVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/ApprovalTaskQueryVo.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/ApprovalVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/HistoryTaskVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/TaskCountDataVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/model/vo/TaskVO.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/ApprovalService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/ApprovalTaskService.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/impl/ApprovalServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/approval/service/impl/ApprovalTaskServiceImpl.java lb-boot/lb-boot-module-activiti/src/main/java/org/jeecg/modules/system/controller/SystemController.java lb-boot/lb-boot-module-activiti/src/main/resources/processes/会议室预约申请bak20200914.bpmn20.xml lb-boot/lb-boot-module-activiti/src/main/resources/processes/投稿bak20200915.bpmn20.xml lb-boot/lb-boot-module-activiti/src/main/resources/processes/报修bak20200914.bpmn20.xml lb-boot/lb-boot-module-activiti/src/main/resources/processes/物品领用bak20200914.bpmn20.xml lb-boot/lb-boot-module-activiti/src/main/resources/processes/财务预算bak20200914.bpmn20.xml lb-boot/lb-boot-module-activiti/src/main/resources/processes/采购验收bak20200914.bpmn20.xml lb-boot/lb-boot-module-activiti/src/main/resources/static/stencilset.json lb-boot/lb-boot-module-demo/pom.xml lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/JeecgDemoCloudApplication.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/controller/JcloudDemoController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/provider/JcloudDemoProvider.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/service/JcloudDemoService.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/cloud/service/impl/JcloudDemoServiceImpl.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/MockController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/area.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/area_mini.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/area_options.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_0.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_1.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_2.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_3.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/asyn_tree_list_31.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/getCntrNoCountInfo.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/getTubiao.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/graphreport_chart.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/permission.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/permission_no_page.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/role.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/service.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/sysdatalog.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/task_process.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/user.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/user_info.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/userinfo.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_activity.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_projects.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_radar.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/json/workplace_teams.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/controller/VxeMockController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/entity/MockEntity.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/json/ddjh.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/json/ddjh_s8.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/json/dlglong.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/mock/vxe/websocket/VXESocket.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/BigScreenTemplatController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgDemoController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderMainController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JeecgOrderTabMainController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/controller/JoaDemoController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgDemo.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderCustomer.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderMain.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JeecgOrderTicket.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/entity/JoaDemo.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgDemoMapper.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderCustomerMapper.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderMainMapper.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JeecgOrderTicketMapper.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/JoaDemoMapper.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgDemoMapper.xml lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgOrderCustomerMapper.xml lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgOrderMainMapper.xml lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JeecgOrderTicketMapper.xml lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/mapper/xml/JoaDemoMapper.xml lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgDemoService.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderCustomerService.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderMainService.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJeecgOrderTicketService.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/IJoaDemoService.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgDemoServiceImpl.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderCustomerServiceImpl.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderMainServiceImpl.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JeecgOrderTicketServiceImpl.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/service/impl/JoaDemoServiceImpl.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/test/vo/JeecgOrderMainPage.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/demo/xxljob/TestJobHandler.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/controller/DlMockController.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/entity/MockEntity.java lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/json/ddjh.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/json/ddjh_s8.json lb-boot/lb-boot-module-demo/src/main/java/org/jeecg/modules/dlglong/json/dlglong.json lb-boot/lb-boot-module-demo/src/main/resources/application.yml lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/easyui.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/jquery-ui.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/main_design1.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/css/room.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_comm.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_comm1.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_down.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/content_down1.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/index.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/index1.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/screenbg_design1.jpg lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/images/war_room_main.jpg lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/big_design1.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/china.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/echarts-wordcloud.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/echarts.min.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/geoCoord.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/jquery.easyui.min.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/jquery.min.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/resize.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template1/js/room.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/css/style.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/arrow.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/bg_img03.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/bg_img04.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/border_bg01.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/box_title.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/chart_icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/chart_icon_on.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/close.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/close_icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/data_icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/data_icon_on.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/fangda.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/index_bg.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/jian.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/line-blue.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/line_bg.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/line_img.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/menu_btn.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/menu_on.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/next.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/people_iocn.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/plus.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/popUP_bg.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/prev.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/select_icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/select_icon_on.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/selsct_time.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/settings_icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/settings_icon_on.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/teacher_icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/title_bg01.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/title_border.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/title_line.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/weather_img01.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雨转大雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/中雪转大雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/冻雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/多云.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大暴雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大暴雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雨转暴雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/大雪转暴雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雨转中雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/小雪转中雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/强沙尘暴.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/扬沙.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/晴.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/暴雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/暴雨转大暴雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/暴雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/沙尘暴.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/浮尘.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/特大暴雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/阴.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/阵雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/阵雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雨加雪.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雷阵雨.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雷阵雨加冰雹.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/雾.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/images/weather/霾.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/base.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/china.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/echarts.min.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/jquery-3.3.1.min.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/extend/layer.ext.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/laydate.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/need/laydate.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/danlan/icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/danlan/laydate.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/default/icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/laydate/skins/default/laydate.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layer.min.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layim/layim.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layim/layim.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/layim/loading.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/icon-ext.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/icon.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/icon_ext.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/loading-0.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/loading-1.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/loading-2.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/textbg.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_ico0.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading0.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading1.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading2.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_loading3.gif lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/default/xubox_title0.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/layer.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/layer.ext.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/moon/default.png lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/layer/skin/moon/style.css lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/pop_base.js lb-boot/lb-boot-module-demo/src/main/resources/static/bigscreen/template2/js/rem.js lb-boot/lb-boot-module-demo/src/main/resources/templates/bigscreen/template1/index.ftl lb-boot/lb-boot-module-demo/src/main/resources/templates/bigscreen/template2/index.ftl lb-boot/lb-boot-module-desk/initDB.txt lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/pom.xml lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/api/JeecgHelloApi.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/api/fallback/JeecgHelloFallback.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/entity/DeskFile.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/entity/JeecgHelloEntity.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/vo/DeskFileTree.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-api/src/main/java/org/jeecg/modules/desk/vo/JeecgHelloPage.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/pom.xml lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/controller/DeskFileController.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/controller/JeecgHelloController.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/mapper/DeskFileMapper.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/mapper/JeecgHelloMapper.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/mapper/xml/DeskFileMapper.xml lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/IDeskFileService.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/IJeecgHelloService.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/impl/DeskFileServiceImpl.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-biz/src/main/java/org/jeecg/modules/desk/service/impl/JeecgHelloServiceImpl.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/pom.xml lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/src/main/java/org/jeecg/JeecgDeskCloudApplication.java lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/src/main/resources/application.yml lb-boot/lb-boot-module-desk/lb-boot-module-desk-start/src/main/resources/bootstrap.yml lb-boot/lb-boot-module-desk/pom.xml lb-boot/lb-boot-module-doc/Dockerfile lb-boot/lb-boot-module-doc/doc/布署手册.docx lb-boot/lb-boot-module-doc/doc/文控管理系统概要设计说明书.docx lb-boot/lb-boot-module-doc/doc/文控系统操作手册.docx lb-boot/lb-boot-module-doc/doc/需求.md lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/pom.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/JeecgSystemClient.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/LbDocApi.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/fallback/JeecgSystemClientFallback.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/api/fallback/LbDocFallback.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/constant/Constant.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/constant/FileType.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchDeleteFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchDeleteRecoveryFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchDownloadFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/BatchMoveFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/CopyFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/CreateOfficeFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DeleteFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DeleteRecoveryFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DocTreeDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/DownloadFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/EditOfficeFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/MoveFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/PreviewDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/PreviewOfficeFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/RenameFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/RestoreFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/UnzipFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/UpdateFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/dto/UploadFileDTO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DeptPathPermission.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DocFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DocFilePath.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/DocOperationHis.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/Favorite.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/FileModel.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/Image.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/LbDocEntity.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/PathPermission.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/Range.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/RecoveryFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/UploadTask.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/UploadTaskDetail.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/entity/UserStorageFlow.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/enums/ResultCodeEnum.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/enums/UploadFileStatusEnum.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/CopyException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/NotLoginException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/QiwenException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/UFOPException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/exception/WriteException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/CharsetUtils.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/ConfigManager.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/DocumentManager.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/FileUtility.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/MD5.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/MimeUtils.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/util/UFOPUtils.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/CompareFileVo.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/CopyFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/DeleteFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/DocTree.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/DownloadFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/FileDetailVO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/ImageOperation.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/LbDocPage.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/PathPermissionVO.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/Previewer.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/QiwenFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/RecoveryFileListVo.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/ThumbImage.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/UploadFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/UploadFileResult.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/UploadFileVo.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/VideoOperation.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-api/src/main/java/org/jeecg/modules/doc/vo/WriteFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/pom.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/AsyncTaskComp.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Copier.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DeleteException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Deleter.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DocFileDealComp.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DocOperationHisComp.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/DownloadException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Downloader.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/ExtractCallback.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/FileConstant.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/FileOperation.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageCopier.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageDeleter.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageDownloader.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStoragePreviewer.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageUploader.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/LocalStorageWriter.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/PathFileUtil.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/PathPermissionComp.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/QiwenMultipartFile.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/RedisLock.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/UfopConfig.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/UploadException.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Uploader.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/component/Writer.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DeptPathPermissionController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DocFileController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DocFilePathController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/DocOperationHisController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/FavoriteController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/FileTransferController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/LbDocController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/OfficeController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/PathPermissionController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/RecoveryFileController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/controller/UserStorageFlowController.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/handler/JobHandler.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DeptPathPermissionMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DocFileMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DocFilePathMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/DocOperationHisMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/FavoriteMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/ImageMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/LbDocMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/PathPermissionMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/RecoveryFileMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/UploadTaskDetailMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/UploadTaskMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/UserStorageFlowMapper.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DeptPathPermissionMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DocFileMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DocFilePathMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/DocOperationHisMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/FavoriteMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/PathPermissionMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/RecoveryFileMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/UploadTaskDetailMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/UploadTaskMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/mapper/xml/UserStorageFlowMapper.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDeptPathPermissionService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDocFilePathService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDocFileService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IDocOperationHisService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IFavoriteService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IFiletransferService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/ILbDocService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IPathPermissionService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IRecoveryFileService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IUploadTaskDetailService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IUploadTaskService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/IUserStorageFlowService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DeptPathPermissionServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DocFilePathServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DocFileServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/DocOperationHisServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/FavoriteServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/FiletransferService.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/LbDocServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/PathPermissionServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/RecoveryFileServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/UploadTaskDetailServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/UploadTaskServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/service/impl/UserStorageFlowServiceImpl.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/threadpool/AsyncThreadPoolAutoConfiguration.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/threadpool/AsyncThreadPoolProperties.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-biz/src/main/java/org/jeecg/modules/doc/threadpool/BaseAsyncUncaughtExceptionHandler.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/pom.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/java/org/jeecg/JeecgDocCloudApplication.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/java/test/FileTest.java lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/application.yml lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/logback-spring.xml lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/settings.properties lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/Excel.xlsx lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/PowerPoint.pptx lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/Word.docx lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/ppt.pptx lb-boot/lb-boot-module-doc/lb-boot-module-doc-start/src/main/resources/static/template/xlsx.xlsx lb-boot/lb-boot-module-doc/pom.xml lb-boot/lb-boot-module-library/lb-boot-module-library-api/pom.xml lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/api/JeecgHelloApi.java lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/api/fallback/JeecgHelloFallback.java lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/entity/JeecgHelloEntity.java lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/entity/LibFirmware.java lb-boot/lb-boot-module-library/lb-boot-module-library-api/src/main/java/org/jeecg/modules/library/vo/JeecgHelloPage.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/pom.xml lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/controller/JeecgHelloController.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/controller/LibFirmwareController.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/mapper/JeecgHelloMapper.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/mapper/LibFirmwareMapper.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/mapper/xml/LibFirmwareMapper.xml lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/IJeecgHelloService.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/ILibFirmwareService.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/impl/JeecgHelloServiceImpl.java lb-boot/lb-boot-module-library/lb-boot-module-library-biz/src/main/java/org/jeecg/modules/library/service/impl/LibFirmwareServiceImpl.java lb-boot/lb-boot-module-library/lb-boot-module-library-start/pom.xml lb-boot/lb-boot-module-library/lb-boot-module-library-start/src/main/java/org/jeecg/JeecgLibraryCloudApplication.java lb-boot/lb-boot-module-library/lb-boot-module-library-start/src/main/resources/application.yml lb-boot/lb-boot-module-library/pom.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/pom.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/JeecgHelloApi.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/JeecgSystemClient.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/fallback/JeecgHelloFallback.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/api/fallback/JeecgSystemClientFallback.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/dto/LimsInsUseStatDto.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/dto/LimsInstrumentTypeDto.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/dto/LimsUsageRecordDto.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/DepartIdModel.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/JeecgHelloEntity.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsAppointment.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsAppointmentAudit.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsAppointmentOption.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInspection.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInspectionDetail.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInspectionItem.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInstrument.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsInstrumentType.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsRepairRecord.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/LimsUsageRecord.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/SysUser.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/entity/WxAccessToken.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsItemTargetDTO.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingBatchDTO.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingCategoryDTO.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingItemDTO.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/dto/LimsTestingTypeDTO.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsBatchDetail.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsBatchResult.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsBatchSample.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsItemTarget.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsProdModel.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsProdType.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingBatch.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingCategory.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingItem.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingOutline.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingProduct.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingStandCond.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingStandard.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/entity/LimsTestingType.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsBatchDetailVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsBatchResultVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsBatchSampleVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsTestingBatchVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/LimsTestingTypeVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/testing/vo/OutlineTreeVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/validate/AddGroup.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/validate/EditGroup.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/DuplicateCheckVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/JeecgHelloPage.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsAppointmentAuditVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsAppointmentVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInsUseStatVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInspectionItemVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInspectionRecordVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInstrumentTypeVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-api/src/main/java/org/jeecg/modules/lims/vo/LimsInstrumentVo.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/pom.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/config/WxConfig.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/config/WxProperties.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/JeecgHelloController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsAppointmentAuditController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsAppointmentController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsAppointmentOptionController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInspectionController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInspectionDetailController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInspectionItemController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInstrumentController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsInstrumentTypeController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsRepairRecordController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsStatController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/LimsUsageRecordController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/controller/WxPushController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/handler/JobHandler.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/JeecgHelloMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsAppointmentAuditMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsAppointmentMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsAppointmentOptionMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInspectionDetailMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInspectionItemMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInspectionMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInstrumentMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsInstrumentTypeMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsRepairRecordMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/LimsUsageRecordMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsAppointmentAuditMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsAppointmentMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsAppointmentOptionMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInspectionDetailMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInspectionItemMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInspectionMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInstrumentMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsInstrumentTypeMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsRepairRecordMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/mapper/xml/LimsUsageRecordMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/IJeecgHelloService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsAppointmentAuditService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsAppointmentOptionService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsAppointmentService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInspectionDetailService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInspectionItemService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInspectionService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInstrumentService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsInstrumentTypeService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsRepairRecordService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/ILimsUsageRecordService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/IWxService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/JeecgHelloServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsAppointmentAuditServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsAppointmentOptionServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsAppointmentServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInspectionDetailServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInspectionItemServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInspectionServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInstrumentServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsInstrumentTypeServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsRepairRecordServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/LimsUsageRecordServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/service/impl/WxServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsBatchDetailController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsBatchResultController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsBatchSampleController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsItemTargetController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsMiniController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsProdModelController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsProdTypeController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingBatchController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingCategoryController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingItemController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingOutlineController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingProductController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingStandCondController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingStandardController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/controller/LimsTestingTypeController.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsBatchDetailMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsBatchResultMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsBatchSampleMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsItemTargetMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsProdModelMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsProdTypeMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingBatchMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingCategoryMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingItemMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingOutlineMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingProductMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingStandCondMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingStandardMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/LimsTestingTypeMapper.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsBatchDetailMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsBatchResultMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsBatchSampleMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsItemTargetMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsProdModelMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsProdTypeMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingBatchMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingCategoryMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingItemMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingOutlineMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingProductMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingStandCondMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingStandardMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/mapper/xml/LimsTestingTypeMapper.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsBatchDetailService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsBatchResultService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsBatchSampleService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsItemTargetService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsProdModelService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsProdTypeService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingBatchService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingCategoryService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingItemService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingOutlineService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingProductService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingStandCondService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingStandardService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/ILimsTestingTypeService.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsBatchDetailServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsBatchResultServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsBatchSampleServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsItemTargetServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsProdModelServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsProdTypeServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingBatchServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingCategoryServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingItemServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingOutlineServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingProductServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingStandCondServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingStandardServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-biz/src/main/java/org/jeecg/modules/lims/testing/service/impl/LimsTestingTypeServiceImpl.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/pom.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/main/java/org/jeecg/JeecgLimsCloudApplication.java lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/main/resources/application.yml lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/main/resources/logback-spring.xml lb-boot/lb-boot-module-lims/lb-boot-module-lims-start/src/test/java/Test.java lb-boot/lb-boot-module-lims/pom.xml lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/pom.xml lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/api/JeecgHelloApi.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/api/fallback/JeecgHelloFallback.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/entity/JeecgHelloEntity.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-api/src/main/java/org/jeecg/modules/lis/vo/JeecgHelloPage.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/pom.xml lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/controller/JeecgHelloController.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/mapper/JeecgHelloMapper.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/service/IJeecgHelloService.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-biz/src/main/java/org/jeecg/modules/lis/service/impl/JeecgHelloServiceImpl.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-start/pom.xml lb-boot/lb-boot-module-lis/lb-boot-module-lis-start/src/main/java/org/jeecg/JeecgLisCloudApplication.java lb-boot/lb-boot-module-lis/lb-boot-module-lis-start/src/main/resources/application.yml lb-boot/lb-boot-module-lis/pom.xml lb-boot/lb-boot-module-project/pom.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/LbProjectCloudApplication.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/controller/BoardController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/mapper/BoardMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/mapper/xml/BoardMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/model/ProjectModel.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/service/IBoardService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/board/service/impl/BoardService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/controller/BonSaleRecordController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/controller/customer/BonProjectController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/controller/customer/BonSalesRecordController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/entity/BonProject.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/entity/BonSaleRecord.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/entity/BonSalesRecord.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/BonProjectMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/BonSaleRecordMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/BonSalesRecordMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/xml/BonProjectMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/xml/BonSaleRecordMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/mapper/xml/BonSalesRecordMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/IBonProjectService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/IBonSaleRecordService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/IBonSalesRecordService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/impl/BonProjectServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/impl/BonSaleRecordServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/service/impl/BonSalesRecordServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bon/util/Constant.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusAllocationController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusPaymentController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusPaymentItemController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/controller/BonusQuotaParamController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusAllocation.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusPayment.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusPaymentItem.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/entity/BonusQuotaParam.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusAllocationMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusPaymentItemMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusPaymentMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/BonusQuotaParamMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusAllocationMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusPaymentItemMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusPaymentMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/mapper/xml/BonusQuotaParamMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusAllocationService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusPaymentItemService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusPaymentService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/IBonusQuotaParamService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusAllocationServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusPaymentItemServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusPaymentServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/bonus/service/impl/BonusQuotaParamServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/excel/ExcelService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/excel/ExcelUtils.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/SystemClient.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/WeeklyClient.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/model/SysDepart.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/model/SysUser.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/feign/model/WekRecord.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/controller/ProProjectGroupController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/entity/ProProjectGroup.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/mapper/ProProjectGroupMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/mapper/xml/ProProjectGroupMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/service/IProProjectGroupService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/group/service/impl/ProProjectGroupServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/handler/JobHandler.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/controller/PaSoftBookController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/controller/PaSoftBookFileController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/entity/PaSoftbook.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/entity/PaSoftbookFile.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/PaSoftBookFileMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/PaSoftBookMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/xml/PaSoftBookFileMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/mapper/xml/PaSoftBookMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/IPaSoftBookFileService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/IPaSoftBookService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/impl/PaSoftBookFileService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/patent/service/impl/PaSoftBookService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/BulletinBoardController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProMilepostController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProPmoController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProProjectController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProSummaryController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/controller/ProTemplateController.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProMilepost.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProProject.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProProjectLink.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProProjectLinkTree.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProSummary.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProTemplate.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/entity/ProjectTreeVo.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProMilepostMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProProjectLinkMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProProjectMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProSummaryMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/ProTemplateMapper.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProMilepostMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProProjectLinkMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProProjectMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProSummaryMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/mapper/xml/ProTemplateMapper.xml lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProMilepostService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProProjectLinkService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProProjectService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProSummaryService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/IProTemplateService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProMilepostServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProProjectLinkService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProProjectService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProSummaryServiceImpl.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/service/impl/ProTemplateService.java lb-boot/lb-boot-module-project/src/main/java/org/jeecg/modules/project/vo/ProjectVo.java lb-boot/lb-boot-module-project/src/main/resources/application.yml lb-boot/lb-boot-module-project/src/test/java/ProjectTest.java lb-boot/lb-boot-module-system/.gitattributes lb-boot/lb-boot-module-system/Dockerfile lb-boot/lb-boot-module-system/pom.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/JeecgOneGUI.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/JeecgOneToMainUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/JeecgSystemApplication.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/init/CodeGenerateDbConfig.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/init/SystemInitListener.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/init/TomcatFactoryConfig.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/config/jimureport/JimuReportTokenService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/api/client/SystenFeignApi.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/api/controller/SystemAPIController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/cas/controller/CasClientController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/cas/util/CASServiceUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/cas/util/XmlUtils.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/controller/HrmBoardController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/controller/HrmRoomController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/controller/HrmRoomSeatController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/entity/HrmRoom.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/entity/HrmRoomSeat.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/HrmRoomMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/HrmRoomSeatMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/xml/HrmRoomMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/mapper/xml/HrmRoomSeatMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/IHrmRoomSeatService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/IHrmRoomService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/impl/HrmRoomSeatServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/service/impl/HrmRoomServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/hrm/vo/HrmRoomVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/controller/SysMessageTemplateController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/entity/MsgParams.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessage.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/entity/SysMessageTemplate.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/ISendMsgHandle.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgStatusEnum.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/enums/SendMsgTypeEnum.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/EmailSendMsgHandle.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/SmsSendMsgHandle.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/handle/impl/WxSendMsgHandle.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/job/SendMsgJob.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/SysMessageTemplateMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/mapper/xml/SysMessageTemplateMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/ISysMessageTemplateService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/service/impl/SysMessageTemplateServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/util/PushMsgUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/SocketHandler.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/TestSocketController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/controller/ActuatorRedisController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/domain/RedisInfo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/exception/RedisConnectException.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/RedisService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/MailHealthIndicator.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/monitor/service/impl/RedisServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/aop/LogRecordAspect.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/controller/NgAlainController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/NgAlainService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/ngalain/service/impl/NgAlainServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/controller/OSSFileController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/entity/OSSFile.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/mapper/OSSFileMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/service/IOSSFileService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/oss/service/impl/OSSFileServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/controller/QuartzJobController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/entity/QuartzJob.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/AsyncJob.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/SampleJob.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/job/SampleParamJob.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/QuartzJobMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/mapper/xml/QuartzJobMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/IQuartzJobService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/quartz/service/impl/QuartzJobServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/CommonController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/DuplicateCheckController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/LoginController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/MockVue3Controller.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysAnnouncementSendController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCategoryController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysCheckRuleController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataLogController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDataSourceController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartOrgController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartPermissionController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartRoleController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDepartTeamController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysDictItemController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysFeedbackController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysFillRuleController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysGatewayRouteController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysLogController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPermissionController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysPositionController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysRoleController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysTenantController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUploadController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserAgentController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/SysUserOnlineController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdAppController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/controller/ThirdLoginController.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysAnnouncement.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysAnnouncementSend.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysCategory.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysCheckRule.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataLog.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDataSource.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepart.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartPermission.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartRole.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartRolePermission.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartRoleUser.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartTeam.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDepartTeamUser.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDict.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysDictItem.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysFeedback.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysFillRule.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysGatewayRoute.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysLog.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPermission.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPermissionDataRule.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysPosition.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRole.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysRolePermission.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysTenant.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysThirdAccount.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUser.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserAgent.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserDepart.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/entity/SysUserRole.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysAnnouncementSendMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCategoryMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysCheckRuleMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataLogMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDataSourceMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartPermissionMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartRoleMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartRolePermissionMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartRoleUserMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartTeamMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDepartTeamUserMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictItemMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysDictMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysFeedbackMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysFillRuleMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysGatewayRouteMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysLogMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionDataRuleMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPermissionMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysPositionMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRoleMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysRolePermissionMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysTenantMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysThirdAccountMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserAgentMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserDepartMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/SysUserRoleMapper.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysAnnouncementSendMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysCategoryMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysCheckRuleMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDataLogMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDataSourceMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartPermissionMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartRoleMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartRolePermissionMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartRoleUserMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartTeamMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDepartTeamUserMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictItemMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysDictMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysFeedbackMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysFillRuleMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysGatewayRouteMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysLogMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionDataRuleMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPositionMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysTenantMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysThirdAccountMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserAgentMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserDepartMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysUserMapper.xml lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/AnnouncementSendModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartIdModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartOrgVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DepartUserModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/DuplicateCheckVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDepartTreeModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysDictTree.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysLoginModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysPermissionTree.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/SysUserSysDepartModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/ThirdLoginModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/model/TreeSelectModel.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/rule/CategoryCodeRule.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrderNumberRule.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/rule/OrgCodeRule.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementSendService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysAnnouncementService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCategoryService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysCheckRuleService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataLogService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDataSourceService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartPermissionService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRolePermissionService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartRoleUserService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartTeamService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDepartTeamUserService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictItemService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysDictService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysFeedbackService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysFillRuleService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysGatewayRouteService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysLogService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionDataRuleService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPermissionService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysPositionService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRolePermissionService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysRoleService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysTenantService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysThirdAccountService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserAgentService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserDepartService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserRoleService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/ISysUserService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/IThirdAppService.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ImportFileServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementSendServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysAnnouncementServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysBaseApiImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysCategoryServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysCheckRuleServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataLogServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDataSourceServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartPermissionServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRolePermissionServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartRoleUserServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartTeamServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDepartTeamUserServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictItemServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysDictServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysFeedbackServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysFillRuleServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysGatewayRouteServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysLogServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionDataRuleImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPermissionServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysPositionServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRolePermissionServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysRoleServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysTenantServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysThirdAccountServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserAgentServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserDepartServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserRoleServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/SysUserServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppDingtalkServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/ThirdAppWechatEnterpriseServiceImpl.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/FindsDepartsChildrenUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/PermissionDataUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/SecurityUtil.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/util/XSSUtils.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartTeamVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartUsersVO.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDepartVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysDictPage.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserDepVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserOnlineVO.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/SysUserRoleVO.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/thirdapp/JdtDepartmentTreeVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/thirdapp/JwDepartmentTreeVo.java lb-boot/lb-boot-module-system/src/main/java/org/jeecg/modules/system/vo/thirdapp/SyncInfoVo.java lb-boot/lb-boot-module-system/src/main/resources/application-dev.yml lb-boot/lb-boot-module-system/src/main/resources/application-prod.yml lb-boot/lb-boot-module-system/src/main/resources/application-test.yml lb-boot/lb-boot-module-system/src/main/resources/application.yml lb-boot/lb-boot-module-system/src/main/resources/banner.txt lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/blob.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/init/initValue.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/init/initValueSub.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/utils.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/validatorRulesTemplate/core.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/validatorRulesTemplate/main.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/common/validatorRulesTemplate/sub.ftl lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal__Style#Drawer.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/default/tree/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/[1-n]List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/erp/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/inner-table/onetomany/java/${bussiPackage}/${entityPackage}/vue/subTables/[1-n]SubTable.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/jvxe/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template-online/tab/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal__Style#Drawer.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/controller/${entityPackage}/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/entity/${entityPackage}/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/mapper/${entityPackage}/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/mapper/${entityPackage}/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/service/${entityPackage}/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/service/${entityPackage}/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue/${entityPackage}/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue/${entityPackage}/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/one2/java/${bussiPackage}/vue/${entityPackage}/modules/${entityName}Modal__Style#Drawer.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Form.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/controller/${entityName}Controller.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/${entityName}.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/entity/[1-n]Entity.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/${entityName}Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/[1-n]Mapper.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/xml/${entityName}Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/mapper/xml/[1-n]Mapper.xml lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/I${entityName}Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/[1-n]Service.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/impl/${entityName}ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/service/impl/[1-n]ServiceImpl.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vo/${entityName}Page.javai lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/${entityName}List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/[1-n]List.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/modules/${entityName}Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/code-template/onetomany2/java/${bussiPackage}/${entityPackage}/vue/modules/[1-n]Modal.vuei lb-boot/lb-boot-module-system/src/main/resources/jeecg/jeecg_config.properties lb-boot/lb-boot-module-system/src/main/resources/jeecg/jeecg_database.properties lb-boot/lb-boot-module-system/src/main/resources/logback-spring.xml lb-boot/lb-boot-module-system/src/main/resources/static/demo1.html lb-boot/lb-boot-module-system/src/main/resources/static/generic/LICENSE lb-boot/lb-boot-module-system/src/main/resources/static/generic/build/pdf.js lb-boot/lb-boot-module-system/src/main/resources/static/generic/build/pdf.worker.js lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78ms-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/78ms-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/83pv-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90ms-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90ms-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90msp-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90msp-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90pv-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/90pv-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Add-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-0.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-1.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-3.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-4.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-5.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-6.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-CNS1-UCS2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-0.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-1.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-3.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-4.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-5.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-GB1-UCS2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-0.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-1.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-3.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-4.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-5.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-6.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Japan1-UCS2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-0.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-1.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Adobe-Korea1-UCS2.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5pc-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/B5pc-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS1-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS1-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS2-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/CNS2-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETHK-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETHK-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETen-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETen-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETenms-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/ETenms-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Ext-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GB-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK2K-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBK2K-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBKp-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBKp-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBT-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBTpc-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBTpc-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBpc-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/GBpc-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdla-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdla-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdlb-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKdlb-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKgccs-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKgccs-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm314-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm314-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm471-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKm471-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKscs-B5-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/HKscs-B5-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Hankaku.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Hiragana.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-Johab-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-Johab-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-HW-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-HW-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCms-UHC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCpc-EUC-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/KSCpc-EUC-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Katakana.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/LICENSE lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/NWP-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/NWP-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/RKSJ-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/RKSJ-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/Roman.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UCS2-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UCS2-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF16-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF16-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF8-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniCNS-UTF8-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UCS2-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UCS2-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF16-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF16-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF8-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniGB-UTF8-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-HW-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-HW-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UCS2-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF16-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF16-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF8-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS-UTF8-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF16-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF16-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF8-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJIS2004-UTF8-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISPro-UCS2-HW-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISPro-UCS2-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISPro-UTF8-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX0213-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX0213-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX02132004-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniJISX02132004-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UCS2-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UCS2-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF16-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF16-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF32-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF32-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF8-H.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/UniKS-UTF8-V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/V.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/cmaps/WP-Symbol.bcmap lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/compatibility.js lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/compressed.tracemonkey-pldi-09.pdf lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/debugger.js lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-check.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-comment.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-help.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-insert.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-key.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-newparagraph.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-noicon.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-note.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/annotation-paragraph.svg lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-next@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/findbarButton-previous@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/grab.cur lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/grabbing.cur lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/loading-icon.gif lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/loading-small.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/loading-small@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-documentProperties.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-documentProperties@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-firstPage.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-firstPage@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-handTool.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-handTool@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-lastPage.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-lastPage@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCcw.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCcw@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCw.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/secondaryToolbarButton-rotateCw@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/shadow.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/texture.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-bookmark.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-bookmark@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-download.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-download@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-menuArrows.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-menuArrows@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-openFile.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-openFile@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageDown@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-pageUp@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-presentationMode.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-presentationMode@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-print.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-print@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-search.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-search@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-secondaryToolbarToggle@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-sidebarToggle@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewAttachments.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewAttachments@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline-rtl.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline-rtl@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewOutline@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewThumbnail.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-viewThumbnail@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomIn.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomIn@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomOut.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/images/toolbarButton-zoomOut@2x.png lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/l10n.js lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/locale/locale.properties lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/locale/zh-CN/viewer.properties lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/viewer.css lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/viewer.html lb-boot/lb-boot-module-system/src/main/resources/static/generic/web/viewer.js lb-boot/lb-boot-module-system/src/main/resources/static/view/userlist.html lb-boot/lb-boot-module-system/src/main/resources/templates/announcement/showContent.ftl lb-boot/lb-boot-module-system/src/main/resources/templates/demo3.ftl lb-boot/lb-boot-module-system/src/main/resources/templates/pdfPreviewIframe.ftl lb-boot/lb-boot-module-system/src/main/resources/templates/thirdLogin.ftl lb-boot/lb-boot-module-system/src/test/java/org/jeecg/SampleTest.java lb-boot/lb-boot-module-system/src/test/java/org/jeecg/SecurityToolsTest.java lb-boot/lb-boot-module-system/src/test/java/org/jeecg/modules/online/desform/test/DesformApiTest.java lb-boot/lb-boot-module-system/src/test/java/org/jeecg/modules/online/desform/test/OnlineApiTest.java lb-boot/lb-boot-module-system/src/test/java/org/jeecg/modules/system/test/SysUserTest.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/pom.xml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/api/JeecgHelloApi.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/api/fallback/JeecgHelloFallback.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/JeecgHelloEntity.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/ProProject.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/ProProjectLink.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/WekEvaluate.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/WekRecord.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/entity/WekUserRelation.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/ProjectClient.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/SystemClient.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/model/SysDepart.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/model/SysDepartTreeModel.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/feign/model/SysUser.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/JeecgHelloPage.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/ProjectTreeVo.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekEvaluateBean.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekProject.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekResultBean.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekTypeBean.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-api/src/main/java/org/jeecg/modules/weekly/vo/WekWeekBean.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/pom.xml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/JeecgHelloController.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/WekEvaluateController.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/WekRecordController.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/controller/WekUserRelationController.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/JeecgHelloMapper.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/WekEvaluateMapper.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/WekRecordMapper.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/WekUserRelationMapper.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/xml/WekEvaluateMapper.xml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/xml/WekRecordMapper.xml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/mapper/xml/WekUserRelationMapper.xml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IJeecgHelloService.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IWekEvaluateService.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IWekRecordService.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/IWekUserRelationService.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/JeecgHelloServiceImpl.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/WekEvaluateServiceImpl.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/WekRecordServiceImpl.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-biz/src/main/java/org/jeecg/modules/weekly/service/impl/WekUserRelationServiceImpl.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/pom.xml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/src/main/java/org/jeecg/JeecgWeeklyCloudApplication.java lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/src/main/resources/application.yml lb-boot/lb-boot-module-weekly/lb-boot-module-weekly-start/src/test/java/WeeklyTest.java lb-boot/lb-boot-module-weekly/pom.xml lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-dev.yaml lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg-gateway-router.json lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/nacos/jeecg.yaml lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/pom.xml lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/config/FeignConfig.java lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/config/PersonBeanConfiguration.java lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/IJeecgFeignService.java lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/java/org/jeecg/starter/cloud/feign/impl/JeecgFeignService.java lb-boot/lb-boot-starter/jeecg-boot-starter-cloud/src/main/resources/bootstrap.yml lb-boot/lb-boot-starter/jeecg-boot-starter-job/pom.xml lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/java/com/xxl/job/core/executor/XxlJobExecutor.java lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/config/XxlJobConfiguration.java lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/java/org/jeecg/boot/starter/job/prop/XxlJobProperties.java lb-boot/lb-boot-starter/jeecg-boot-starter-job/src/main/resources/META-INF/spring.factories lb-boot/lb-boot-starter/jeecg-boot-starter-lock/pom.xml lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JLock.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/JRepeat.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/annotation/LockConstant.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/BaseAspect.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/DistributedLockHandler.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/aspect/RepeatSubmitAspect.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/client/RedissonLockClient.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/config/RedissonConfiguration.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/RedissonManager.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/RedissonConfigStrategy.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/ClusterRedissonConfigStrategyImpl.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/MasterslaveRedissonConfigStrategyImpl.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/SentinelRedissonConfigStrategyImpl.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/core/strategy/impl/StandaloneRedissonConfigStrategyImpl.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/GlobalConstant.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/LockModel.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/enums/RedisConnectionType.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/java/org/jeecg/boot/starter/lock/prop/RedissonProperties.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/main/resources/META-INF/spring.factories lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockService.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTest.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/LockTestApplication.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/java/org/jeecg/boot/starter/lock/test/TestUser.java lb-boot/lb-boot-starter/jeecg-boot-starter-lock/src/test/resources/application.yml lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/pom.xml lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/client/RabbitMqClient.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/config/RabbitMqConfig.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/BaseRabbiMqHandler.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/core/MapMessageConverter.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/BaseApplicationEvent.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/EventObj.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgBusEventHandler.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/event/JeecgRemoteApplicationEvent.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/exchange/DelayExchangeBuilder.java lb-boot/lb-boot-starter/jeecg-boot-starter-rabbitmq/src/main/java/org/jeecg/boot/starter/rabbitmq/listenter/MqListener.java lb-boot/lb-boot-starter/pom.xml lb-boot/lb-cloud-module/docker-compose.yml lb-boot/lb-cloud-module/jeecg-cloud-gateway/Dockerfile lb-boot/lb-cloud-module/jeecg-cloud-gateway/README.md lb-boot/lb-cloud-module/jeecg-cloud-gateway/pom.xml lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/JeecgGatewayApplication.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/GatewayRoutersConfiguration.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/RateLimiterConfiguration.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/config/RouterDataType.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/fallback/FallbackController.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/GlobalAccessTokenFilter.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/filter/SentinelFilterContextConfig.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/HystrixFallbackHandler.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/LoderRouderHandler.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/MySwaggerResourceProvider.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/SentinelBlockRequestHandler.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/handler/SwaggerResourceController.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteLoader.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/DynamicRouteService.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/GatewayRouteVo.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/java/org/jeecg/loader/MyRouteDefinition.java lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/application.yml lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/keyStore/7228817__shlanbao.cn.pfx lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/keyStore/pfx-password.txt lb-boot/lb-cloud-module/jeecg-cloud-gateway/src/main/resources/logback-spring.xml lb-boot/lb-cloud-module/jeecg-cloud-monitor/pom.xml lb-boot/lb-cloud-module/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/JeecgMonitorApplication.java lb-boot/lb-cloud-module/jeecg-cloud-monitor/src/main/java/org/jeecg/monitor/config/SecuritySecureConfig.java lb-boot/lb-cloud-module/jeecg-cloud-monitor/src/main/resources/application.yml lb-boot/lb-cloud-module/jeecg-cloud-nacos/Dockerfile lb-boot/lb-cloud-module/jeecg-cloud-nacos/pom.xml lb-boot/lb-cloud-module/jeecg-cloud-nacos/src/main/java/com/alibaba/nacos/JeecgNacosApplication.java lb-boot/lb-cloud-module/jeecg-cloud-nacos/src/main/resources/application.yml lb-boot/lb-cloud-module/jeecg-cloud-sentinel/README.md lb-boot/lb-cloud-module/jeecg-cloud-sentinel/pom.xml lb-boot/lb-cloud-module/jeecg-cloud-sentinel/src/main/java/com/alibaba/csp/sentinel/dashboard/JeecgSentinelDashboardApplication.java lb-boot/lb-cloud-module/jeecg-cloud-sentinel/src/main/resources/application.properties lb-boot/lb-cloud-module/jeecg-cloud-system-start/Dockerfile lb-boot/lb-cloud-module/jeecg-cloud-system-start/pom.xml lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/JeecgSystemCloudApplication.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/constant/CloudConstant.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/ebus/DemoBusEvent.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/controller/JeecgTestFeignController.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/feign/JeecgTestClient.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/feign/JeecgTestClientDyn.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/feign/feign/fallback/JeecgTestClientFallback.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/lock/DemoLockTest.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloReceiver1.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloReceiver2.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloReceiver3.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/rabbitmq/HelloTimeReceiver.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/java/org/jeecg/modules/cloud/xxljob/DemoJobHandler.java lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/resources/application-dev.yml lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/resources/application.yml lb-boot/lb-cloud-module/jeecg-cloud-system-start/src/main/resources/logback-spring.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/Dockerfile lb-boot/lb-cloud-module/jeecg-cloud-xxljob/README.md lb-boot/lb-cloud-module/jeecg-cloud-xxljob/doc/db/tables_xxl_job.sql lb-boot/lb-cloud-module/jeecg-cloud-xxljob/pom.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/XxlJobAdminApplication.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/IndexController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobApiController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobCodeController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobGroupController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobInfoController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/JobLogController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/UserController.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/annotation/PermissionLimit.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/CookieInterceptor.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/PermissionInterceptor.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/interceptor/WebMvcConfig.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/controller/resolver/WebExceptionResolver.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarm.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/JobAlarmer.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/alarm/impl/EmailJobAlarm.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/conf/XxlJobAdminConfig.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/cron/CronExpression.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/exception/XxlJobException.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobInfo.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLog.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogGlue.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobLogReport.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobRegistry.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/model/XxlJobUser.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/RemoteHttpJobBean.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobDynamicScheduler.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/old/XxlJobThreadPool.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouteStrategyEnum.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/ExecutorRouter.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteBusyover.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteConsistentHash.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFailover.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteFirst.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLFU.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLRU.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteLast.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRandom.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/scheduler/XxlJobScheduler.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobFailMonitorHelper.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLogReportHelper.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobLosedMonitorHelper.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobRegistryMonitorHelper.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobScheduleHelper.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/thread/JobTriggerPoolHelper.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/TriggerTypeEnum.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/trigger/XxlJobTrigger.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/CookieUtil.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/FtlUtil.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/I18nUtil.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/JacksonUtil.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobGroupDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobInfoDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogGlueDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobLogReportDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobRegistryDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/dao/XxlJobUserDao.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/LoginService.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/XxlJobService.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/AdminBizImpl.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/application.yml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/i18n/message_en.properties lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/i18n/message_zh_CN.properties lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/i18n/message_zh_TC.properties lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/logback.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobInfoMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogGlueMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobLogReportMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobRegistryMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/mybatis-mapper/XxlJobUserMapper.xml lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/css/ionicons.min.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.eot lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.svg lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.ttf lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/Ionicons/fonts/ionicons.woff lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/PACE/pace.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/PACE/themes/blue/pace-theme-flash.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap-daterangepicker/daterangepicker.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/css/bootstrap.min.css.map lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.eot lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.svg lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.ttf lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/fonts/glyphicons-halflings-regular.woff2 lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/bootstrap/js/bootstrap.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/datatables.net/js/jquery.dataTables.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/fastclick/fastclick.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.css.map lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/css/font-awesome.min.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/FontAwesome.otf lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.eot lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.svg lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.ttf lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/jquery-slimscroll/jquery.slimscroll.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/jquery/jquery.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/bower_components/moment/moment.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/dist/css/AdminLTE.min.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/dist/css/skins/_all-skins.min.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/dist/js/adminlte.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/icheck.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue.png lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/adminlte/plugins/iCheck/square/blue@2x.png lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/favicon.ico lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/common.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/index.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/jobcode.index.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/jobgroup.index.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/jobinfo.index.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/joblog.detail.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/joblog.index.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/login.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/js/user.index.1.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/anyword-hint.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/addon/hint/show-hint.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/lib/codemirror.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/lib/codemirror.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/clike/clike.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/javascript/javascript.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/php/php.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/powershell/powershell.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/python/python.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/codemirror/mode/shell/shell.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/cronGen/cronGen.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/cronGen/cronGen_en.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/echarts/echarts.common.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/jquery/jquery.cookie.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/jquery/jquery.validate.min.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/layer.js lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/icon-ext.png lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/icon.png lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/layer.css lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-0.gif lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-1.gif lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/static/plugins/layer/theme/default/loading-2.gif lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/common/common.exception.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/common/common.macro.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/help.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/index.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/jobcode/jobcode.index.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/jobgroup/jobgroup.index.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/jobinfo/jobinfo.index.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/joblog/joblog.detail.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/joblog/joblog.index.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/login.ftl lb-boot/lb-cloud-module/jeecg-cloud-xxljob/src/main/resources/templates/user/user.index.ftl lb-boot/lb-cloud-module/pom.xml lb-boot/pom.xml lb-boot/新建模块 lb-ui/.dockerignore lb-ui/.editorconfig lb-ui/.env lb-ui/.env.development lb-ui/.env.production lb-ui/.env.test lb-ui/.eslintignore lb-ui/.gitattributes lb-ui/.gitignore lb-ui/.prettierrc lb-ui/Dockerfile lb-ui/LICENSE lb-ui/README.md lb-ui/babel.config.js lb-ui/idea.config.js lb-ui/package.json lb-ui/public/avatar2.jpg lb-ui/public/cdn/babel-polyfill/polyfill_7_2_5.js lb-ui/public/cdn/font-icon/font_2316098_umqusozousr.js lb-ui/public/codemirror/css/tomorrow-night.css lb-ui/public/color.less lb-ui/public/goright.png lb-ui/public/index.html lb-ui/public/logo.png lb-ui/public/mavonEditor/css/github-markdown.css lb-ui/public/mavonEditor/css/katex.min.css lb-ui/public/mavonEditor/css/tomorrow-night.css lb-ui/public/mavonEditor/js/highlight.min.js lb-ui/public/mavonEditor/js/katex.min.js lb-ui/public/mavonEditor/js/lang.hljs.js lb-ui/public/static/diagram-viewer/images/bg.png lb-ui/public/static/diagram-viewer/images/breadcrumbs.png lb-ui/public/static/diagram-viewer/images/checker-bg.png lb-ui/public/static/diagram-viewer/images/deployer/blue/message_catch.png lb-ui/public/static/diagram-viewer/images/deployer/business_rule.png lb-ui/public/static/diagram-viewer/images/deployer/error_catch.png lb-ui/public/static/diagram-viewer/images/deployer/error_throw.png lb-ui/public/static/diagram-viewer/images/deployer/manual.png lb-ui/public/static/diagram-viewer/images/deployer/message_catch.png lb-ui/public/static/diagram-viewer/images/deployer/message_throw.png lb-ui/public/static/diagram-viewer/images/deployer/receive.png lb-ui/public/static/diagram-viewer/images/deployer/script.png lb-ui/public/static/diagram-viewer/images/deployer/send.png lb-ui/public/static/diagram-viewer/images/deployer/service.png lb-ui/public/static/diagram-viewer/images/deployer/signal_catch.png lb-ui/public/static/diagram-viewer/images/deployer/signal_throw.png lb-ui/public/static/diagram-viewer/images/deployer/timer.png lb-ui/public/static/diagram-viewer/images/deployer/user.png lb-ui/public/static/diagram-viewer/index.html lb-ui/public/static/diagram-viewer/js/ActivitiRest.js lb-ui/public/static/diagram-viewer/js/ActivityImpl.js lb-ui/public/static/diagram-viewer/js/Color.js lb-ui/public/static/diagram-viewer/js/LineBreakMeasurer.js lb-ui/public/static/diagram-viewer/js/Polyline.js lb-ui/public/static/diagram-viewer/js/ProcessDiagramCanvas.js lb-ui/public/static/diagram-viewer/js/ProcessDiagramGenerator.js lb-ui/public/static/diagram-viewer/js/jquery/jquery.asyncqueue.js lb-ui/public/static/diagram-viewer/js/jquery/jquery.js lb-ui/public/static/diagram-viewer/js/jquery/jquery.progressbar.js lb-ui/public/static/diagram-viewer/js/jstools.js lb-ui/public/static/diagram-viewer/js/raphael.2.1.1.js lb-ui/public/static/diagram-viewer/js/raphael.js lb-ui/public/static/diagram-viewer/js/raphael_uncompressed.js lb-ui/public/static/diagram-viewer/js/textlayout.js lb-ui/public/static/diagram-viewer/style.css lb-ui/public/static/editor-app/app-cfg.js lb-ui/public/static/editor-app/app.js lb-ui/public/static/editor-app/configuration/properties-assignment-controller.js lb-ui/public/static/editor-app/configuration/properties-condition-expression-controller.js lb-ui/public/static/editor-app/configuration/properties-custom-controllers.js lb-ui/public/static/editor-app/configuration/properties-default-controllers.js lb-ui/public/static/editor-app/configuration/properties-event-listeners-controller.js lb-ui/public/static/editor-app/configuration/properties-execution-listeners-controller.js lb-ui/public/static/editor-app/configuration/properties-fields-controller.js lb-ui/public/static/editor-app/configuration/properties-form-properties-controller.js lb-ui/public/static/editor-app/configuration/properties-in-parameters-controller.js lb-ui/public/static/editor-app/configuration/properties-message-definitions-controller.js lb-ui/public/static/editor-app/configuration/properties-message-scope-controller.js lb-ui/public/static/editor-app/configuration/properties-multiinstance-controller.js lb-ui/public/static/editor-app/configuration/properties-out-parameters-controller.js lb-ui/public/static/editor-app/configuration/properties-sequenceflow-order-controller.js lb-ui/public/static/editor-app/configuration/properties-signal-definitions-controller.js lb-ui/public/static/editor-app/configuration/properties-signal-scope-controller.js lb-ui/public/static/editor-app/configuration/properties-task-listeners-controller.js lb-ui/public/static/editor-app/configuration/properties.js lb-ui/public/static/editor-app/configuration/properties/assignment-candidateGroup.html lb-ui/public/static/editor-app/configuration/properties/assignment-display-template.html lb-ui/public/static/editor-app/configuration/properties/assignment-popup-popup.html lb-ui/public/static/editor-app/configuration/properties/assignment-popup.html lb-ui/public/static/editor-app/configuration/properties/assignment-write-template.html lb-ui/public/static/editor-app/configuration/properties/boolean-property-template.html lb-ui/public/static/editor-app/configuration/properties/condition-expression-display-template.html lb-ui/public/static/editor-app/configuration/properties/condition-expression-popup.html lb-ui/public/static/editor-app/configuration/properties/condition-expression-write-template.html lb-ui/public/static/editor-app/configuration/properties/default-value-display-template.html lb-ui/public/static/editor-app/configuration/properties/event-listeners-display-template.html lb-ui/public/static/editor-app/configuration/properties/event-listeners-popup.html lb-ui/public/static/editor-app/configuration/properties/event-listeners-write-template.html lb-ui/public/static/editor-app/configuration/properties/execution-listeners-display-template.html lb-ui/public/static/editor-app/configuration/properties/execution-listeners-popup.html lb-ui/public/static/editor-app/configuration/properties/execution-listeners-write-template.html lb-ui/public/static/editor-app/configuration/properties/feedback-popup.html lb-ui/public/static/editor-app/configuration/properties/fields-display-template.html lb-ui/public/static/editor-app/configuration/properties/fields-popup.html lb-ui/public/static/editor-app/configuration/properties/fields-write-template.html lb-ui/public/static/editor-app/configuration/properties/form-properties-display-template.html lb-ui/public/static/editor-app/configuration/properties/form-properties-popup.html lb-ui/public/static/editor-app/configuration/properties/form-properties-write-template.html lb-ui/public/static/editor-app/configuration/properties/in-parameters-display-template.html lb-ui/public/static/editor-app/configuration/properties/in-parameters-popup.html lb-ui/public/static/editor-app/configuration/properties/in-parameters-write-template.html lb-ui/public/static/editor-app/configuration/properties/message-definitions-display-template.html lb-ui/public/static/editor-app/configuration/properties/message-definitions-popup.html lb-ui/public/static/editor-app/configuration/properties/message-definitions-write-template.html lb-ui/public/static/editor-app/configuration/properties/message-property-write-template.html lb-ui/public/static/editor-app/configuration/properties/multiinstance-property-write-template.html lb-ui/public/static/editor-app/configuration/properties/out-parameters-display-template.html lb-ui/public/static/editor-app/configuration/properties/out-parameters-popup.html lb-ui/public/static/editor-app/configuration/properties/out-parameters-write-template.html lb-ui/public/static/editor-app/configuration/properties/sequenceflow-order-display-template.html lb-ui/public/static/editor-app/configuration/properties/sequenceflow-order-popup.html lb-ui/public/static/editor-app/configuration/properties/sequenceflow-order-write-template.html lb-ui/public/static/editor-app/configuration/properties/signal-definitions-display-template.html lb-ui/public/static/editor-app/configuration/properties/signal-definitions-popup.html lb-ui/public/static/editor-app/configuration/properties/signal-definitions-write-template.html lb-ui/public/static/editor-app/configuration/properties/signal-property-write-template.html lb-ui/public/static/editor-app/configuration/properties/string-property-write-mode-template.html lb-ui/public/static/editor-app/configuration/properties/subprocess-reference-display-template.html lb-ui/public/static/editor-app/configuration/properties/subprocess-reference-popup.html lb-ui/public/static/editor-app/configuration/properties/subprocess-reference-write-template.html lb-ui/public/static/editor-app/configuration/properties/task-listeners-display-template.html lb-ui/public/static/editor-app/configuration/properties/task-listeners-popup.html lb-ui/public/static/editor-app/configuration/properties/task-listeners-write-template.html lb-ui/public/static/editor-app/configuration/properties/text-popup.html lb-ui/public/static/editor-app/configuration/properties/text-property-write-template.html lb-ui/public/static/editor-app/configuration/toolbar-custom-actions.js lb-ui/public/static/editor-app/configuration/toolbar-default-actions.js lb-ui/public/static/editor-app/configuration/toolbar.js lb-ui/public/static/editor-app/configuration/url-config.js lb-ui/public/static/editor-app/css/editor-ext.css lb-ui/public/static/editor-app/css/style-common.css lb-ui/public/static/editor-app/css/style-editor.css lb-ui/public/static/editor-app/css/style.css lb-ui/public/static/editor-app/editor-config.js lb-ui/public/static/editor-app/editor-controller.js lb-ui/public/static/editor-app/editor-utils.js lb-ui/public/static/editor-app/editor.html lb-ui/public/static/editor-app/editor/css/editor.css lb-ui/public/static/editor-app/editor/i18n/translation_de.js lb-ui/public/static/editor-app/editor/i18n/translation_en_us.js lb-ui/public/static/editor-app/editor/i18n/translation_signavio_de.js lb-ui/public/static/editor-app/editor/i18n/translation_signavio_en_us.js lb-ui/public/static/editor-app/editor/oryx.debug.js lb-ui/public/static/editor-app/editor/oryx.js lb-ui/public/static/editor-app/eventbus.js lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.eot lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.svg lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.ttf lb-ui/public/static/editor-app/fonts/activiti-admin-webfont.woff lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.eot lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.svg lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.ttf lb-ui/public/static/editor-app/fonts/glyphicons-halflings-regular.woff lb-ui/public/static/editor-app/header-controller.js lb-ui/public/static/editor-app/i18n/en.json lb-ui/public/static/editor-app/i18n/en.json_bak lb-ui/public/static/editor-app/images/bpmn-error.png lb-ui/public/static/editor-app/images/bpmn-warning.png lb-ui/public/static/editor-app/images/datadefinition.png lb-ui/public/static/editor-app/images/delete.png lb-ui/public/static/editor-app/images/loading.gif lb-ui/public/static/editor-app/images/logo-2x.png lb-ui/public/static/editor-app/images/logo.png lb-ui/public/static/editor-app/images/nw-handle-dark.gif lb-ui/public/static/editor-app/images/se-handle-dark.gif lb-ui/public/static/editor-app/images/shapemenu_highlight.png lb-ui/public/static/editor-app/images/wrench.png lb-ui/public/static/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js lb-ui/public/static/editor-app/libs/angular-cookies_1.2.13/angular-cookies.min.js.map lb-ui/public/static/editor-app/libs/angular-dragdrop.min-1.0.3.js lb-ui/public/static/editor-app/libs/angular-dragdrop_1.0.7/angular-dragdrop.min.js lb-ui/public/static/editor-app/libs/angular-mocks_1.2.13/angular-mocks.js lb-ui/public/static/editor-app/libs/angular-resource_1.2.13/angular-resource.js lb-ui/public/static/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js lb-ui/public/static/editor-app/libs/angular-resource_1.2.13/angular-resource.min.js.map lb-ui/public/static/editor-app/libs/angular-route_1.2.13/angular-route.js lb-ui/public/static/editor-app/libs/angular-route_1.2.13/angular-route.min.js lb-ui/public/static/editor-app/libs/angular-route_1.2.13/angular-route.min.js.map lb-ui/public/static/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.js lb-ui/public/static/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js lb-ui/public/static/editor-app/libs/angular-sanitize_1.2.13/angular-sanitize.min.js.map lb-ui/public/static/editor-app/libs/angular-scroll_0.5.7/angular-scroll.min.js lb-ui/public/static/editor-app/libs/angular-strap_2.0.5/angular-strap.min.js lb-ui/public/static/editor-app/libs/angular-strap_2.0.5/angular-strap.tpl.min.js lb-ui/public/static/editor-app/libs/angular-translate-loader-static-files/.bower.json lb-ui/public/static/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.js lb-ui/public/static/editor-app/libs/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js lb-ui/public/static/editor-app/libs/angular-translate-storage-cookie/.bower.json lb-ui/public/static/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.js lb-ui/public/static/editor-app/libs/angular-translate-storage-cookie/angular-translate-storage-cookie.min.js lb-ui/public/static/editor-app/libs/angular-translate_2.4.2/angular-translate.js lb-ui/public/static/editor-app/libs/angular-translate_2.4.2/angular-translate.min.js lb-ui/public/static/editor-app/libs/angular_1.2.13/angular-animate.min.js lb-ui/public/static/editor-app/libs/angular_1.2.13/angular.min.js lb-ui/public/static/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker-bs3.css lb-ui/public/static/editor-app/libs/bootstrap-daterangepicker_1.3.7/daterangepicker.js lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.css.map lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap-theme.min.css lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap.css.map lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/css/bootstrap.min.css lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.eot lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.svg lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.ttf lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/fonts/glyphicons-halflings-regular.woff lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/js/bootstrap.js lb-ui/public/static/editor-app/libs/bootstrap_3.1.1/js/bootstrap.min.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/.bower.json lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/.gitignore lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/CHANGES lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/CONTRIBUTORS.md lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/LICENSE lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/README.md lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-sham.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-sham.map lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-sham.min.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-shim.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-shim.map lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/es5-shim.min.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/package.json lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-kill.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h-matchers.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/helpers/h.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/index.html lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/index.min.html lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine-html.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.css lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/jasmine_favicon.png lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/lib/json2.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-array.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-date.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-function.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-number.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-object.js lb-ui/public/static/editor-app/libs/es5-shim-15.3.4.5/tests/spec/s-string.js lb-ui/public/static/editor-app/libs/jquery-ui-1.10.3.custom.min.js lb-ui/public/static/editor-app/libs/jquery.autogrow-textarea.js lb-ui/public/static/editor-app/libs/jquery_1.11.0/jquery.js lb-ui/public/static/editor-app/libs/jquery_1.11.0/jquery.min.js lb-ui/public/static/editor-app/libs/jquery_1.11.0/jquery.min.map lb-ui/public/static/editor-app/libs/json3_3.2.6/LICENSE lb-ui/public/static/editor-app/libs/json3_3.2.6/lib/json3.js lb-ui/public/static/editor-app/libs/json3_3.2.6/lib/json3.min.js lb-ui/public/static/editor-app/libs/momentjs_2.5.1/momentjs.min.js lb-ui/public/static/editor-app/libs/mousetrap-1.4.5.min.js lb-ui/public/static/editor-app/libs/ng-grid-2.0.7-min.js lb-ui/public/static/editor-app/libs/ng-grid-2.0.7.min.css lb-ui/public/static/editor-app/libs/pagination/tm.pagination.js lb-ui/public/static/editor-app/libs/path_parser.js lb-ui/public/static/editor-app/libs/prototype-1.5.1.js lb-ui/public/static/editor-app/libs/ui-utils.min-0.0.4.js lb-ui/public/static/editor-app/partials/root-stencil-item-template.html lb-ui/public/static/editor-app/partials/stencil-item-template.html lb-ui/public/static/editor-app/plugins.xml lb-ui/public/static/editor-app/popups/icon-template.html lb-ui/public/static/editor-app/popups/save-model.html lb-ui/public/static/editor-app/popups/select-shape.html lb-ui/public/static/editor-app/popups/unsaved-changes.html lb-ui/public/static/editor-app/select-shape-controller.js lb-ui/public/static/editor-app/stencil-controller.js lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.collapsed.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/event.subprocess.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/expanded.subprocess.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.business.rule.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.camel.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.manual.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.mule.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.receive.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.script.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.send.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.service.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.shell.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/list/type.user.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/subprocess.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/activity/task.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/artifact/text.annotation.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/cancel.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/compensation.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/error.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/message.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/signal.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/catching/timer.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/association.undirected.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/association.unidirectional.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/messageflow.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/connector/sequenceflow.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/dataobject/data.store.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/diagram.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/cancel.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/error.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/none.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/endevent/terminate.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/eventbased.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/exclusive.databased.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/inclusive.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/gateway/parallel.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/error.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/message.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/none.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/signal.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/startevent/timer.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/swimlane/lane.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/swimlane/pool.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/throwing/none.png lb-ui/public/static/editor-app/stencilsets/bpmn2.0/icons/throwing/signal.png lb-ui/public/static/editor-app/toolbar-controller.js lb-ui/public/static/modeler.html lb-ui/public/static/stencilset.json lb-ui/public/tinymce/langs/zh_CN.js lb-ui/public/tinymce/skins/lightgray/content.min.css lb-ui/public/tinymce/skins/lightgray/skin.min.css lb-ui/public/v2.js lb-ui/src/App.vue lb-ui/src/api/GroupRequest.js lb-ui/src/api/activiti/activiti.js lb-ui/src/api/api.js lb-ui/src/api/index.js lb-ui/src/api/lims.js lb-ui/src/api/login.js lb-ui/src/api/manage.js lb-ui/src/api/pro.js lb-ui/src/api/week.js lb-ui/src/assets/audio/wave.gif lb-ui/src/assets/background.svg lb-ui/src/assets/checkcode.png lb-ui/src/assets/company_logo.png lb-ui/src/assets/daiban.png lb-ui/src/assets/desk/cloud.png lb-ui/src/assets/desk/f01.png lb-ui/src/assets/desk/f03.png lb-ui/src/assets/desk/icon/computer.png lb-ui/src/assets/desk/icon/disk_shortcut_hover.png lb-ui/src/assets/desk/icon/docm.png lb-ui/src/assets/desk/icon/docx.png lb-ui/src/assets/desk/icon/folder.png lb-ui/src/assets/desk/icon/pdf.png lb-ui/src/assets/desk/icon/xls.png lb-ui/src/assets/desk/light.png lb-ui/src/assets/desk/loginbg3.png lb-ui/src/assets/desk/panel_tools.png lb-ui/src/assets/desk/righttop.gif lb-ui/src/assets/desk/rlist.gif lb-ui/src/assets/desk/win.png lb-ui/src/assets/duban.png lb-ui/src/assets/file/dir.png lb-ui/src/assets/file/file_7z.svg lb-ui/src/assets/file/file_avi.png lb-ui/src/assets/file/file_c#.png lb-ui/src/assets/file/file_c++.png lb-ui/src/assets/file/file_c.png lb-ui/src/assets/file/file_chm.png lb-ui/src/assets/file/file_css.png lb-ui/src/assets/file/file_csv.png lb-ui/src/assets/file/file_dmg.png lb-ui/src/assets/file/file_excel.svg lb-ui/src/assets/file/file_exe.png lb-ui/src/assets/file/file_flac.svg lb-ui/src/assets/file/file_gif.png lb-ui/src/assets/file/file_go.png lb-ui/src/assets/file/file_html.png lb-ui/src/assets/file/file_img.png lb-ui/src/assets/file/file_jar.png lb-ui/src/assets/file/file_java.png lb-ui/src/assets/file/file_js.png lb-ui/src/assets/file/file_json.png lb-ui/src/assets/file/file_jsp.png lb-ui/src/assets/file/file_kotlin.png lb-ui/src/assets/file/file_less.png lb-ui/src/assets/file/file_lua.png lb-ui/src/assets/file/file_markdown.png lb-ui/src/assets/file/file_music.png lb-ui/src/assets/file/file_nginx.png lb-ui/src/assets/file/file_oa.png lb-ui/src/assets/file/file_objective_c.png lb-ui/src/assets/file/file_open.png lb-ui/src/assets/file/file_pdf.png lb-ui/src/assets/file/file_php.png lb-ui/src/assets/file/file_powershell.png lb-ui/src/assets/file/file_ppt.svg lb-ui/src/assets/file/file_properties.png lb-ui/src/assets/file/file_python.png lb-ui/src/assets/file/file_r.png lb-ui/src/assets/file/file_rar.png lb-ui/src/assets/file/file_rtf.png lb-ui/src/assets/file/file_rust.png lb-ui/src/assets/file/file_sass.png lb-ui/src/assets/file/file_scss.png lb-ui/src/assets/file/file_shell.png lb-ui/src/assets/file/file_sql.png lb-ui/src/assets/file/file_stylus.png lb-ui/src/assets/file/file_svg.png lb-ui/src/assets/file/file_swift.png lb-ui/src/assets/file/file_tar.svg lb-ui/src/assets/file/file_txt.png lb-ui/src/assets/file/file_typescript.png lb-ui/src/assets/file/file_unknown.png lb-ui/src/assets/file/file_vue.png lb-ui/src/assets/file/file_word.svg lb-ui/src/assets/file/file_xml.png lb-ui/src/assets/file/file_yaml.png lb-ui/src/assets/file/file_zip.png lb-ui/src/assets/file/files.png lb-ui/src/assets/file/files1.png lb-ui/src/assets/file/less/mixins.less lb-ui/src/assets/file/less/varibles.less lb-ui/src/assets/guaz.png lb-ui/src/assets/less/JAreaLinkage.less lb-ui/src/assets/less/TableExpand.less lb-ui/src/assets/less/codemirror_idea.css lb-ui/src/assets/less/common.less lb-ui/src/assets/less/index.less lb-ui/src/assets/login-bg.svg lb-ui/src/assets/login-box-bg.svg lb-ui/src/assets/logo.png lb-ui/src/assets/logo.svg lb-ui/src/assets/nodata.png lb-ui/src/assets/pdf4.jpg lb-ui/src/assets/pro/icon_da.png lb-ui/src/assets/pro/icon_db.png lb-ui/src/assets/pro/icon_dy.png lb-ui/src/assets/pro/icon_lcb.png lb-ui/src/assets/pro/icon_ld.png lb-ui/src/assets/pro/icon_right.png lb-ui/src/assets/pro/icon_sl.png lb-ui/src/assets/pro/icon_tx.png lb-ui/src/assets/pro/icon_yb.png lb-ui/src/assets/pro/img/img1.png lb-ui/src/assets/pro/leader.png lb-ui/src/assets/pro/person.png lb-ui/src/assets/weekly/icon_down.png lb-ui/src/assets/weekly/icon_top.png lb-ui/src/assets/weekly/wr_logo.png lb-ui/src/assets/workcoe.png lb-ui/src/assets/zaiban.png lb-ui/src/cas/sso.js lb-ui/src/components/AvatarList/Item.vue lb-ui/src/components/AvatarList/List.vue lb-ui/src/components/AvatarList/index.js lb-ui/src/components/AvatarList/index.less lb-ui/src/components/ChartCard.vue lb-ui/src/components/CountDown/CountDown.vue lb-ui/src/components/CountDown/index.js lb-ui/src/components/Ellipsis/Ellipsis.vue lb-ui/src/components/Ellipsis/index.js lb-ui/src/components/JVxeCells/JVxeFileCell.vue lb-ui/src/components/JVxeCells/JVxeImageCell.vue lb-ui/src/components/JVxeCells/JVxePopupCell.vue lb-ui/src/components/JVxeCells/JVxeRadioCell.vue lb-ui/src/components/JVxeCells/JVxeSelectDictSearchCell.js lb-ui/src/components/JVxeCells/install.js lb-ui/src/components/NumberInfo/NumberInfo.vue lb-ui/src/components/NumberInfo/index.js lb-ui/src/components/NumberInfo/index.less lb-ui/src/components/README.md lb-ui/src/components/Trend/Trend.vue lb-ui/src/components/Trend/index.js lb-ui/src/components/Trend/index.less lb-ui/src/components/ZmTreeOrg/components/clone-org/index.vue lb-ui/src/components/ZmTreeOrg/components/contextmenu/index.vue lb-ui/src/components/ZmTreeOrg/components/contextmenu/menus.js lb-ui/src/components/ZmTreeOrg/components/tree-org/index.js lb-ui/src/components/ZmTreeOrg/components/tree-org/node.js lb-ui/src/components/ZmTreeOrg/components/tree-org/scale-view.vue lb-ui/src/components/ZmTreeOrg/components/tree-org/tree-org.vue lb-ui/src/components/ZmTreeOrg/components/zm-draggable/index.vue lb-ui/src/components/ZmTreeOrg/directives/drag/index.js lb-ui/src/components/ZmTreeOrg/directives/focus/index.js lb-ui/src/components/ZmTreeOrg/index.js lb-ui/src/components/ZmTreeOrg/plugin/core/index.js lb-ui/src/components/ZmTreeOrg/styles/index.less lb-ui/src/components/ZmTreeOrg/svg/collapse.svg lb-ui/src/components/ZmTreeOrg/svg/expand.svg lb-ui/src/components/ZmTreeOrg/svg/fullscreen.svg lb-ui/src/components/ZmTreeOrg/svg/unfullscreen.svg lb-ui/src/components/ZmTreeOrg/utils/dom.js lb-ui/src/components/ZmTreeOrg/utils/fns.js lb-ui/src/components/ZmTreeOrg/utils/log.js lb-ui/src/components/ZmTreeOrg/utils/polyfill.js lb-ui/src/components/ZmTreeOrg/utils/utils.js lb-ui/src/components/_util/Area.js lb-ui/src/components/_util/StringUtil.js lb-ui/src/components/_util/util.js lb-ui/src/components/chart/AreaChartTy.vue lb-ui/src/components/chart/Bar.vue lb-ui/src/components/chart/BarAndLine.vue lb-ui/src/components/chart/BarHorizontal.vue lb-ui/src/components/chart/BarMultid.vue lb-ui/src/components/chart/DashChartDemo.vue lb-ui/src/components/chart/IndexBar.vue lb-ui/src/components/chart/LineChartMultid.vue lb-ui/src/components/chart/Liquid.vue lb-ui/src/components/chart/MiniArea.vue lb-ui/src/components/chart/MiniBar.vue lb-ui/src/components/chart/MiniProgress.vue lb-ui/src/components/chart/Pie.vue lb-ui/src/components/chart/README.md lb-ui/src/components/chart/Radar.vue lb-ui/src/components/chart/RankList.vue lb-ui/src/components/chart/StackBar.vue lb-ui/src/components/chart/TransferBar.vue lb-ui/src/components/chart/Trend.vue lb-ui/src/components/chart/chart.less lb-ui/src/components/chart/mixins/ChartMixins.js lb-ui/src/components/dict/JDictSelectTag.vue lb-ui/src/components/dict/JDictSelectUtil.js lb-ui/src/components/dict/JMultiSelectTag.vue lb-ui/src/components/dict/JSearchSelectTag.vue lb-ui/src/components/dict/README.md lb-ui/src/components/dict/index.js lb-ui/src/components/index.less lb-ui/src/components/jeecg/JAreaLinkage.vue lb-ui/src/components/jeecg/JCategorySelect.vue lb-ui/src/components/jeecg/JCheckbox.vue lb-ui/src/components/jeecg/JCodeEditor.vue lb-ui/src/components/jeecg/JCron.vue lb-ui/src/components/jeecg/JDate.vue lb-ui/src/components/jeecg/JEasyCron/EasyCron.vue lb-ui/src/components/jeecg/JEasyCron/InputCron.vue lb-ui/src/components/jeecg/JEasyCron/format-date.js lb-ui/src/components/jeecg/JEasyCron/index.js lb-ui/src/components/jeecg/JEasyCron/tabs/const.js lb-ui/src/components/jeecg/JEasyCron/tabs/day.vue lb-ui/src/components/jeecg/JEasyCron/tabs/hour.vue lb-ui/src/components/jeecg/JEasyCron/tabs/minute.vue lb-ui/src/components/jeecg/JEasyCron/tabs/mixin.js lb-ui/src/components/jeecg/JEasyCron/tabs/mixin.less lb-ui/src/components/jeecg/JEasyCron/tabs/month.vue lb-ui/src/components/jeecg/JEasyCron/tabs/second.vue lb-ui/src/components/jeecg/JEasyCron/tabs/week.vue lb-ui/src/components/jeecg/JEasyCron/tabs/year.vue lb-ui/src/components/jeecg/JEasyCron/validator.js lb-ui/src/components/jeecg/JEditableTable.vue lb-ui/src/components/jeecg/JEditor.vue lb-ui/src/components/jeecg/JEllipsis.vue lb-ui/src/components/jeecg/JFormContainer.vue lb-ui/src/components/jeecg/JImageUpload.vue lb-ui/src/components/jeecg/JImportModal.vue lb-ui/src/components/jeecg/JInput.vue lb-ui/src/components/jeecg/JMarkdownEditor/default-options.js lb-ui/src/components/jeecg/JMarkdownEditor/index.vue lb-ui/src/components/jeecg/JModal/JModal.vue lb-ui/src/components/jeecg/JModal/JPrompt.vue lb-ui/src/components/jeecg/JModal/index.js lb-ui/src/components/jeecg/JPopup.vue lb-ui/src/components/jeecg/JSelectMultiple.vue lb-ui/src/components/jeecg/JSlider.vue lb-ui/src/components/jeecg/JSuperQuery.vue lb-ui/src/components/jeecg/JSwitch.vue lb-ui/src/components/jeecg/JTime.vue lb-ui/src/components/jeecg/JTreeDict.vue lb-ui/src/components/jeecg/JTreeSelect.vue lb-ui/src/components/jeecg/JTreeTable.vue lb-ui/src/components/jeecg/JUpload.vue lb-ui/src/components/jeecg/JVxeTable/components/JVxeDetailsModal.vue lb-ui/src/components/jeecg/JVxeTable/components/JVxePagination.vue lb-ui/src/components/jeecg/JVxeTable/components/JVxeSubPopover.vue lb-ui/src/components/jeecg/JVxeTable/components/JVxeTable.js lb-ui/src/components/jeecg/JVxeTable/components/JVxeToolbar.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeCheckboxCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeDateCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeDepartSelectCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeDragSortCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeInputCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeNormalCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeProgressCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeSelectCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeSlotCell.js lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeTagsCell.js lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeTextareaCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeTimeCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeUploadCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/JVxeUserSelectCell.vue lb-ui/src/components/jeecg/JVxeTable/components/cells/ReloadEffect.js lb-ui/src/components/jeecg/JVxeTable/index.js lb-ui/src/components/jeecg/JVxeTable/install.js lb-ui/src/components/jeecg/JVxeTable/jvxeTypes.js lb-ui/src/components/jeecg/JVxeTable/less/j-vxe-table.less lb-ui/src/components/jeecg/JVxeTable/less/reload-effect.less lb-ui/src/components/jeecg/JVxeTable/less/size/tiny.less lb-ui/src/components/jeecg/JVxeTable/mixins/JVxeCellMixins.js lb-ui/src/components/jeecg/JVxeTable/mixins/vxe.web.socket.mixins.js lb-ui/src/components/jeecg/JVxeTable/utils/cellUtils.js lb-ui/src/components/jeecg/JVxeTable/utils/vxeUtils.js lb-ui/src/components/jeecg/README.md lb-ui/src/components/jeecg/README_JEditableTable.md lb-ui/src/components/jeecg/README_JPopup.md lb-ui/src/components/jeecg/index.js lb-ui/src/components/jeecg/minipop/JFilePop.vue lb-ui/src/components/jeecg/minipop/JInputPop.vue lb-ui/src/components/jeecg/modal/JCronModal.vue lb-ui/src/components/jeecg/modal/JPopupOnlReport.vue lb-ui/src/components/jeecgbiz/JSelectBizComponent/JSelectBizComponentModal.vue lb-ui/src/components/jeecgbiz/JSelectBizComponent/JSelectBizQueryItem.js lb-ui/src/components/jeecgbiz/JSelectBizComponent/README.md lb-ui/src/components/jeecgbiz/JSelectBizComponent/index.vue lb-ui/src/components/jeecgbiz/JSelectDepart.vue lb-ui/src/components/jeecgbiz/JSelectMultiDepUser.vue lb-ui/src/components/jeecgbiz/JSelectMultiProject.vue lb-ui/src/components/jeecgbiz/JSelectMultiUser.vue lb-ui/src/components/jeecgbiz/JSelectPosition.vue lb-ui/src/components/jeecgbiz/JSelectRole.vue lb-ui/src/components/jeecgbiz/JSelectUserByDep.vue lb-ui/src/components/jeecgbiz/README.md lb-ui/src/components/jeecgbiz/modal/JSelectDepartModal.vue lb-ui/src/components/jeecgbiz/modal/JSelectUserByDepModal.vue lb-ui/src/components/jeecgbiz/modal/SelectUserListModal.vue lb-ui/src/components/jeecgbiz/thirdApp/JThirdAppButton.vue lb-ui/src/components/jeecgbiz/thirdApp/JThirdAppDropdown.vue lb-ui/src/components/layouts/BasicLayout.vue lb-ui/src/components/layouts/BlankLayout.vue lb-ui/src/components/layouts/IframeFReportView.vue lb-ui/src/components/layouts/IframePageView.vue lb-ui/src/components/layouts/PageView.vue lb-ui/src/components/layouts/RouteView.vue lb-ui/src/components/layouts/TabLayout.vue lb-ui/src/components/layouts/UserLayout.vue lb-ui/src/components/layouts/index.js lb-ui/src/components/lazy_antd.js lb-ui/src/components/menu/Contextmenu.vue lb-ui/src/components/menu/SideMenu.vue lb-ui/src/components/menu/index.js lb-ui/src/components/page/GlobalFooter.vue lb-ui/src/components/page/GlobalHeader.vue lb-ui/src/components/page/GlobalLayout.vue lb-ui/src/components/page/PageHeader.vue lb-ui/src/components/page/PageLayout.vue lb-ui/src/components/page/SHeaderNotice.vue lb-ui/src/components/setting/SettingDrawer.vue lb-ui/src/components/setting/SettingItem.vue lb-ui/src/components/table/README.md lb-ui/src/components/table/StandardTable.vue lb-ui/src/components/table/index.js lb-ui/src/components/tools/Breadcrumb.vue lb-ui/src/components/tools/DepartSelect.vue lb-ui/src/components/tools/DetailList.vue lb-ui/src/components/tools/DynamicNotice.vue lb-ui/src/components/tools/FooterToolBar.vue lb-ui/src/components/tools/HeadInfo.vue lb-ui/src/components/tools/HeaderNotice.vue lb-ui/src/components/tools/Logo.vue lb-ui/src/components/tools/ShowAnnouncement.vue lb-ui/src/components/tools/TwoStepCaptcha.vue lb-ui/src/components/tools/UserMenu.vue lb-ui/src/components/tools/UserPassword.vue lb-ui/src/components/tools/setting.js lb-ui/src/config/index.js lb-ui/src/config/router.config.js lb-ui/src/defaultSettings.js lb-ui/src/icons.js lb-ui/src/main.js lb-ui/src/mixins/DisabledAuthFilterMixin.js lb-ui/src/mixins/JEditableTableMixin.js lb-ui/src/mixins/JEditableTableModelMixin.js lb-ui/src/mixins/JVxeTableMixin.js lb-ui/src/mixins/JVxeTableModelMixin.js lb-ui/src/mixins/JeecgListMixin.js lb-ui/src/mixins/OnlineCommonUtil.js lb-ui/src/mixins/WebsocketMixin.js lb-ui/src/permission.js lb-ui/src/plugins/element.js lb-ui/src/router/README.md lb-ui/src/router/index.js lb-ui/src/store/getters.js lb-ui/src/store/index.js lb-ui/src/store/modules/app.js lb-ui/src/store/modules/enhance.js lb-ui/src/store/modules/fileList.js lb-ui/src/store/modules/online.js lb-ui/src/store/modules/permission.js lb-ui/src/store/modules/user.js lb-ui/src/store/mutation-types.js lb-ui/src/utils/JEditableTableUtil.js lb-ui/src/utils/LunarFullCalendarUtil.js lb-ui/src/utils/auth.js lb-ui/src/utils/authFilter.js lb-ui/src/utils/axios.js lb-ui/src/utils/browser.js lb-ui/src/utils/commonUploadFile.js lb-ui/src/utils/desform/CustomExpression.js lb-ui/src/utils/device.js lb-ui/src/utils/encryption/aesEncrypt.js lb-ui/src/utils/encryption/signMd5Utils.js lb-ui/src/utils/filter.js lb-ui/src/utils/hasPermission.js lb-ui/src/utils/libs/globalFunction/common.js lb-ui/src/utils/libs/globalFunction/file.js lb-ui/src/utils/libs/globalFunction/index.js lb-ui/src/utils/libs/map.js lb-ui/src/utils/mixin.js lb-ui/src/utils/permissions.js lb-ui/src/utils/portal/constant.js lb-ui/src/utils/props-util.js lb-ui/src/utils/request.js lb-ui/src/utils/rules.js lb-ui/src/utils/storage.js lb-ui/src/utils/util.js lb-ui/src/utils/validate.js lb-ui/src/utils/vueBus.js lb-ui/src/views/Home.vue lb-ui/src/views/account/center/Index.vue lb-ui/src/views/account/center/page/App.vue lb-ui/src/views/account/center/page/Article.vue lb-ui/src/views/account/center/page/Project.vue lb-ui/src/views/account/center/page/index.js lb-ui/src/views/account/settings/AvatarModal.vue lb-ui/src/views/account/settings/BaseSetting.vue lb-ui/src/views/account/settings/Binding.vue lb-ui/src/views/account/settings/Custom.vue lb-ui/src/views/account/settings/Index.vue lb-ui/src/views/account/settings/Notification.vue lb-ui/src/views/account/settings/Security.vue lb-ui/src/views/activiti/ActivitiFileList.vue lb-ui/src/views/activiti/ActivitiFileModel.vue lb-ui/src/views/activiti/ActivitiList.vue lb-ui/src/views/activiti/ActivitiModel.vue lb-ui/src/views/activiti/ActivitiModelModal.vue lb-ui/src/views/activiti/ModelList.vue lb-ui/src/views/activiti/ProcessModelList.vue lb-ui/src/views/activiti/applyHome.vue lb-ui/src/views/activiti/applyList.vue lb-ui/src/views/activiti/doneManage.vue lb-ui/src/views/activiti/form/demoForm.vue lb-ui/src/views/activiti/historicDetail.vue lb-ui/src/views/activiti/mixins/activitiApproveMixin.js lb-ui/src/views/activiti/mixins/activitiMixin.js lb-ui/src/views/activiti/processFinishManage.vue lb-ui/src/views/activiti/processInsManage.vue lb-ui/src/views/activiti/todoManage.vue lb-ui/src/views/bon/2-customer/BonProjectList.vue lb-ui/src/views/bon/2-customer/BonSalesRecordList.vue lb-ui/src/views/bon/2-customer/index.vue lb-ui/src/views/bon/2-customer/modules/BonProjectForm.vue lb-ui/src/views/bon/2-customer/modules/BonProjectModal.Style#Drawer.vue lb-ui/src/views/bon/2-customer/modules/BonProjectModal.vue lb-ui/src/views/bon/2-customer/modules/BonSalesRecordForm.vue lb-ui/src/views/bon/2-customer/modules/BonSalesRecordModal.Style#Drawer.vue lb-ui/src/views/bon/2-customer/modules/BonSalesRecordModal.vue lb-ui/src/views/bon/BonSaleRecordList.vue lb-ui/src/views/bon/modules/BonSaleRecordForm.vue lb-ui/src/views/bon/modules/BonSaleRecordModal.Style#Drawer.vue lb-ui/src/views/bon/modules/BonSaleRecordModal.vue lb-ui/src/views/bonus/BonusPaymentGx.vue lb-ui/src/views/bonus/BonusPaymentKh.vue lb-ui/src/views/bonus/BonusPaymentList.vue lb-ui/src/views/bonus/BonusPaymentSc.vue lb-ui/src/views/bonus/BonusPaymentXm.vue lb-ui/src/views/bonus/modules/BonusPaymentModal.vue lb-ui/src/views/bonus/modules/DeGxModal.vue lb-ui/src/views/bonus/modules/DeKhModal.vue lb-ui/src/views/bonus/modules/DeScModal.vue lb-ui/src/views/bonus/modules/DeXmModal.vue lb-ui/src/views/bonus/modules/FpGxModal.vue lb-ui/src/views/bonus/modules/FpKhModal.vue lb-ui/src/views/bonus/modules/FpScModal.vue lb-ui/src/views/bonus/modules/FpXmModal.vue lb-ui/src/views/bonus/modules/HsGxModal.vue lb-ui/src/views/bonus/modules/HsKhModal.vue lb-ui/src/views/bonus/modules/HsScModal.vue lb-ui/src/views/bonus/modules/HsXmModal.vue lb-ui/src/views/bonus/modules/KpModal.vue lb-ui/src/views/bonus/modules/PaymentProjectModal.vue lb-ui/src/views/dashboard/Analysis.vue lb-ui/src/views/dashboard/IndexBdc.vue lb-ui/src/views/dashboard/IndexChart.vue lb-ui/src/views/dashboard/IndexTask.vue lb-ui/src/views/dashboard/Monitor.vue lb-ui/src/views/dashboard/Workplace.vue lb-ui/src/views/dashboard/module/Gantt.vue lb-ui/src/views/desktop/Home.vue lb-ui/src/views/desktop/module/CustomModal.vue lb-ui/src/views/desktop/module/EditableCell.vue lb-ui/src/views/desktop/module/RecentModal.vue lb-ui/src/views/desktop/module/UploadModal.vue lb-ui/src/views/document/DeptPathRoleUserList.vue lb-ui/src/views/document/DocOperationHisList.vue lb-ui/src/views/document/File.vue lb-ui/src/views/document/OnlyOffice.vue lb-ui/src/views/document/PathRoleUserList.vue lb-ui/src/views/document/RoleUserFlow.vue lb-ui/src/views/document/components/box/audioPreview/BoxMask.vue lb-ui/src/views/document/components/box/audioPreview/index.js lb-ui/src/views/document/components/box/codePreview/BoxMask.vue lb-ui/src/views/document/components/box/codePreview/fold.js lb-ui/src/views/document/components/box/codePreview/index.js lb-ui/src/views/document/components/box/codePreview/mode.js lb-ui/src/views/document/components/box/codePreview/theme.js lb-ui/src/views/document/components/box/contextMenu/Box.vue lb-ui/src/views/document/components/box/contextMenu/index.js lb-ui/src/views/document/components/box/imgPreview/BoxMask.vue lb-ui/src/views/document/components/box/imgPreview/index.js lb-ui/src/views/document/components/box/markdownPreview/BoxMask.vue lb-ui/src/views/document/components/box/markdownPreview/index.js lb-ui/src/views/document/components/box/selectFile/Box.vue lb-ui/src/views/document/components/box/selectFile/index.js lb-ui/src/views/document/components/box/uploadFile/Box.vue lb-ui/src/views/document/components/box/uploadFile/index.js lb-ui/src/views/document/components/box/videoPreview/BoxMask.vue lb-ui/src/views/document/components/box/videoPreview/VideoPlayer.vue lb-ui/src/views/document/components/box/videoPreview/index.js lb-ui/src/views/document/components/dialog/addFile/Dialog.vue lb-ui/src/views/document/components/dialog/addFile/index.js lb-ui/src/views/document/components/dialog/addFolder/Dialog.vue lb-ui/src/views/document/components/dialog/addFolder/index.js lb-ui/src/views/document/components/dialog/compareFile/Dialog.vue lb-ui/src/views/document/components/dialog/compareFile/index.js lb-ui/src/views/document/components/dialog/copyFile/Dialog.vue lb-ui/src/views/document/components/dialog/copyFile/index.js lb-ui/src/views/document/components/dialog/deleteFile/Dialog.vue lb-ui/src/views/document/components/dialog/deleteFile/index.js lb-ui/src/views/document/components/dialog/moveFile/Dialog.vue lb-ui/src/views/document/components/dialog/moveFile/index.js lb-ui/src/views/document/components/dialog/renameFile/Dialog.vue lb-ui/src/views/document/components/dialog/renameFile/index.js lb-ui/src/views/document/components/dialog/restoreFile/Dialog.vue lb-ui/src/views/document/components/dialog/restoreFile/index.js lb-ui/src/views/document/components/dialog/saveShareFile/Dialog.vue lb-ui/src/views/document/components/dialog/saveShareFile/index.js lb-ui/src/views/document/components/dialog/shareFile/Dialog.vue lb-ui/src/views/document/components/dialog/shareFile/index.js lb-ui/src/views/document/components/dialog/showFileDetail/Dialog.vue lb-ui/src/views/document/components/dialog/showFileDetail/index.js lb-ui/src/views/document/components/dialog/unzipFile/Dialog.vue lb-ui/src/views/document/components/dialog/unzipFile/index.js lb-ui/src/views/document/components/fileOperationPlugins.js lb-ui/src/views/document/modules/DocOperationHisForm.vue lb-ui/src/views/document/modules/DocOperationHisModal.Style#Drawer.vue lb-ui/src/views/document/modules/DocOperationHisModal.vue lb-ui/src/views/document/modules/FileGrid.vue lb-ui/src/views/document/modules/FileList.vue lb-ui/src/views/document/modules/FileSide.vue lb-ui/src/views/document/modules/FileTable.vue lb-ui/src/views/document/modules/OperationMenu.vue lb-ui/src/views/examples/form/BasicForm.vue lb-ui/src/views/examples/form/advancedForm/AdvancedForm.vue lb-ui/src/views/examples/form/advancedForm/RepositoryForm.vue lb-ui/src/views/examples/form/advancedForm/TaskForm.vue lb-ui/src/views/examples/form/stepForm/Step1.vue lb-ui/src/views/examples/form/stepForm/Step2.vue lb-ui/src/views/examples/form/stepForm/Step3.vue lb-ui/src/views/examples/form/stepForm/StepForm.vue lb-ui/src/views/examples/list/CardList.vue lb-ui/src/views/examples/list/PermissionList.vue lb-ui/src/views/examples/list/RoleList.vue lb-ui/src/views/examples/list/StandardList.vue lb-ui/src/views/examples/list/TableInnerEditList.vue lb-ui/src/views/examples/list/TableList.vue lb-ui/src/views/examples/list/UserList.vue lb-ui/src/views/examples/list/modules/RoleModal.vue lb-ui/src/views/examples/list/search/SearchLayout.vue lb-ui/src/views/examples/profile/advanced/Advanced.vue lb-ui/src/views/examples/profile/basic/Index.vue lb-ui/src/views/exception/403.vue lb-ui/src/views/exception/404.vue lb-ui/src/views/exception/500.vue lb-ui/src/views/exception/ExceptionPage.vue lb-ui/src/views/exception/type.js lb-ui/src/views/hrm/CompanyOrgTree.vue lb-ui/src/views/hrm/DepartOrgTree.vue lb-ui/src/views/hrm/DepartSeatPlan.vue lb-ui/src/views/hrm/HrmRoomList.vue lb-ui/src/views/hrm/HrmRoomUserList.vue lb-ui/src/views/hrm/HrmUserList.vue lb-ui/src/views/hrm/home.vue lb-ui/src/views/hrm/modules/CompanyLeftDrawer.vue lb-ui/src/views/hrm/modules/CompanyRightDrawer.vue lb-ui/src/views/hrm/modules/DepartInfoList.vue lb-ui/src/views/hrm/modules/DepartPostCheckList.vue lb-ui/src/views/hrm/modules/HrmRoomForm.vue lb-ui/src/views/hrm/modules/HrmRoomModal.vue lb-ui/src/views/hrm/modules/HrmRoomUserForm.vue lb-ui/src/views/hrm/modules/HrmRoomUserModal.vue lb-ui/src/views/hrm/modules/RoomBlock.vue lb-ui/src/views/hrm/modules/RoomSeatModal.vue lb-ui/src/views/hrm/modules/seat.less lb-ui/src/views/jeecg/ImagCropper.vue lb-ui/src/views/jeecg/ImagPreview.vue lb-ui/src/views/jeecg/ImgDragSort.vue lb-ui/src/views/jeecg/ImgTurnPage.vue lb-ui/src/views/jeecg/InterfaceTest.vue lb-ui/src/views/jeecg/JVXETableDemo.vue lb-ui/src/views/jeecg/JVxeDemo/JVxeDemo1.vue lb-ui/src/views/jeecg/JVxeDemo/JVxeDemo2.vue lb-ui/src/views/jeecg/JVxeDemo/JVxeDemo3.vue lb-ui/src/views/jeecg/JVxeDemo/demo/JSBCDemo.vue lb-ui/src/views/jeecg/JVxeDemo/demo/PopupSubTable.vue lb-ui/src/views/jeecg/JVxeDemo/demo/SocketReload.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/ErpTemplate.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Index.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template1.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template2.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template3.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template4.vue lb-ui/src/views/jeecg/JVxeDemo/layout-demo/Template5.vue lb-ui/src/views/jeecg/JeecgDemoList.vue lb-ui/src/views/jeecg/JeecgEditableTableExample.vue lb-ui/src/views/jeecg/JeecgOrderMainList.vue lb-ui/src/views/jeecg/JeecgOrderMainListForJEditableTable.vue lb-ui/src/views/jeecg/JeecgOrderMainListForJVxeTable.vue lb-ui/src/views/jeecg/JeecgPdfView.vue lb-ui/src/views/jeecg/JeecgTreeTable.vue lb-ui/src/views/jeecg/PrintDemo.vue lb-ui/src/views/jeecg/RowspanTable.vue lb-ui/src/views/jeecg/SelectDemo.vue lb-ui/src/views/jeecg/SplitPanel.vue lb-ui/src/views/jeecg/TableExpandeSub.vue lb-ui/src/views/jeecg/TableTotal.vue lb-ui/src/views/jeecg/ThirdAppMessageTest.vue lb-ui/src/views/jeecg/helloworld.vue lb-ui/src/views/jeecg/helloworld2.vue lb-ui/src/views/jeecg/modules/JEditableTable/DefaultTable.vue lb-ui/src/views/jeecg/modules/JEditableTable/ReadOnlyTable.vue lb-ui/src/views/jeecg/modules/JEditableTable/ThreeLinkage.vue lb-ui/src/views/jeecg/modules/JeecgDemoModal.vue lb-ui/src/views/jeecg/modules/JeecgDemoTabsModal.vue lb-ui/src/views/jeecg/modules/JeecgOrderMainModal.vue lb-ui/src/views/jeecg/modules/JeecgOrderModalForJEditableTable.vue lb-ui/src/views/jeecg/modules/JeecgOrderModalForJVexTable.vue lb-ui/src/views/jeecg/modules/PdfPreviewModal.vue lb-ui/src/views/jeecg/modules/SplitPanelA.vue lb-ui/src/views/jeecg/modules/SplitPanelB.vue lb-ui/src/views/jeecg/modules/SplitPanelModal.vue lb-ui/src/views/jeecg/modules/SuperQueryModal.vue lb-ui/src/views/jeecg/modules/VueCronModal.vue lb-ui/src/views/jeecg/report/Analysis.vue lb-ui/src/views/jeecg/report/ArchivesStatisticst.vue lb-ui/src/views/jeecg/report/ViserChartDemo.vue lb-ui/src/views/jeecg/tablist/JeecgOrderCustomerList.vue lb-ui/src/views/jeecg/tablist/JeecgOrderDMainList.vue lb-ui/src/views/jeecg/tablist/JeecgOrderTicketList.vue lb-ui/src/views/jeecg/tablist/form/JeecgOrderCustomerModal.vue lb-ui/src/views/jeecg/tablist/form/JeecgOrderDMainModal.vue lb-ui/src/views/jeecg/tablist/form/JeecgOrderTicketModal.vue lb-ui/src/views/kb/IndexLcb.vue lb-ui/src/views/kb/LCB.vue lb-ui/src/views/kb/PMO.vue lb-ui/src/views/kb/ProjectDetail.vue lb-ui/src/views/kb/YLB.vue lb-ui/src/views/kb/modules/LCBModal.vue lb-ui/src/views/kb/modules/TimeLine.vue lb-ui/src/views/kb/modules/indexGantt.vue lb-ui/src/views/lims/LimsAppointmentList.vue lb-ui/src/views/lims/LimsAppointmentOptionList.vue lb-ui/src/views/lims/LimsInspectionDetailList.vue lb-ui/src/views/lims/LimsInspectionItemList.vue lb-ui/src/views/lims/LimsInspectionList.vue lb-ui/src/views/lims/LimsInstrumentList.vue lb-ui/src/views/lims/LimsInstrumentTypeList.vue lb-ui/src/views/lims/LimsRepairRecordList.vue lb-ui/src/views/lims/LimsUsageRecordList.vue lb-ui/src/views/lims/limsStatPage.vue lb-ui/src/views/lims/modules/LimsAppointmentForm.vue lb-ui/src/views/lims/modules/LimsAppointmentModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsAppointmentModal.vue lb-ui/src/views/lims/modules/LimsAppointmentOptionForm.vue lb-ui/src/views/lims/modules/LimsAppointmentOptionModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsAppointmentOptionModal.vue lb-ui/src/views/lims/modules/LimsInspectionDetailForm.vue lb-ui/src/views/lims/modules/LimsInspectionDetailModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsInspectionDetailModal.vue lb-ui/src/views/lims/modules/LimsInspectionForm.vue lb-ui/src/views/lims/modules/LimsInspectionItemForm.vue lb-ui/src/views/lims/modules/LimsInspectionItemModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsInspectionItemModal.vue lb-ui/src/views/lims/modules/LimsInspectionModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsInspectionModal.vue lb-ui/src/views/lims/modules/LimsInstrumentForm.vue lb-ui/src/views/lims/modules/LimsInstrumentModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsInstrumentModal.vue lb-ui/src/views/lims/modules/LimsInstrumentTypeForm.vue lb-ui/src/views/lims/modules/LimsInstrumentTypeModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsInstrumentTypeModal.vue lb-ui/src/views/lims/modules/LimsRepairRecordForm.vue lb-ui/src/views/lims/modules/LimsRepairRecordModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsRepairRecordModal.vue lb-ui/src/views/lims/modules/LimsUsageRecordForm.vue lb-ui/src/views/lims/modules/LimsUsageRecordModal.Style#Drawer.vue lb-ui/src/views/lims/modules/LimsUsageRecordModal.vue lb-ui/src/views/lims/stat/EquUseStat.vue lb-ui/src/views/lims/stat/RepairStat.vue lb-ui/src/views/lims/stat/SpotStat.vue lb-ui/src/views/lims/stat/UserUseStat.vue lb-ui/src/views/limsTest/LimsBatchDetailList.vue lb-ui/src/views/limsTest/LimsBatchResultList.vue lb-ui/src/views/limsTest/LimsBatchSampleList.vue lb-ui/src/views/limsTest/LimsItemTargetIdent.vue lb-ui/src/views/limsTest/LimsItemTargetList.vue lb-ui/src/views/limsTest/LimsProdTypeList.vue lb-ui/src/views/limsTest/LimsTestingBatchList.vue lb-ui/src/views/limsTest/LimsTestingOutlineList.vue lb-ui/src/views/limsTest/LimsTestingProductList.vue lb-ui/src/views/limsTest/LimsTestingStandardList.vue lb-ui/src/views/limsTest/OutlineMaintainPage.vue lb-ui/src/views/limsTest/ProductModelList.vue lb-ui/src/views/limsTest/StandMaintainPage.vue lb-ui/src/views/limsTest/components/CondTag.vue lb-ui/src/views/limsTest/components/EdiStrtableCell.vue lb-ui/src/views/limsTest/components/EditableCell.vue lb-ui/src/views/limsTest/modules/LimsBatchDetailForm.vue lb-ui/src/views/limsTest/modules/LimsBatchDetailModal.vue lb-ui/src/views/limsTest/modules/LimsBatchResultForm.vue lb-ui/src/views/limsTest/modules/LimsBatchResultModal.vue lb-ui/src/views/limsTest/modules/LimsBatchSampleForm.vue lb-ui/src/views/limsTest/modules/LimsBatchSampleModal.vue lb-ui/src/views/limsTest/modules/LimsItemTargetForm.vue lb-ui/src/views/limsTest/modules/LimsItemTargetModal.vue lb-ui/src/views/limsTest/modules/LimsItemTargetTechForm.vue lb-ui/src/views/limsTest/modules/LimsItemTargetTechModal.vue lb-ui/src/views/limsTest/modules/LimsProdModelForm.vue lb-ui/src/views/limsTest/modules/LimsProdModelModal.vue lb-ui/src/views/limsTest/modules/LimsProdTypeForm.vue lb-ui/src/views/limsTest/modules/LimsProdTypeModal.vue lb-ui/src/views/limsTest/modules/LimsTestingBatchForm.vue lb-ui/src/views/limsTest/modules/LimsTestingBatchModal.vue lb-ui/src/views/limsTest/modules/LimsTestingBatchModal2.vue lb-ui/src/views/limsTest/modules/LimsTestingCategoryForm.vue lb-ui/src/views/limsTest/modules/LimsTestingCategoryModal.vue lb-ui/src/views/limsTest/modules/LimsTestingItemForm.vue lb-ui/src/views/limsTest/modules/LimsTestingOutlineForm.vue lb-ui/src/views/limsTest/modules/LimsTestingOutlineModal.vue lb-ui/src/views/limsTest/modules/LimsTestingProductForm.vue lb-ui/src/views/limsTest/modules/LimsTestingProductModal.vue lb-ui/src/views/limsTest/modules/LimsTestingStandardForm.vue lb-ui/src/views/limsTest/modules/LimsTestingStandardModal.vue lb-ui/src/views/limsTest/modules/LimsTestingTypeForm.vue lb-ui/src/views/limsTest/modules/SelectOutlineModal.vue lb-ui/src/views/limsTest/report/BatchDetailReport.vue lb-ui/src/views/limsTest/report/InspectResultReport.vue lb-ui/src/views/modules/message/SysMessageList.vue lb-ui/src/views/modules/message/SysMessageTemplateList.vue lb-ui/src/views/modules/message/modules/SysMessageModal.vue lb-ui/src/views/modules/message/modules/SysMessageTemplateModal.vue lb-ui/src/views/modules/message/modules/SysMessageTestModal.vue lb-ui/src/views/modules/monitor/DiskMonitoring.vue lb-ui/src/views/modules/monitor/HttpTrace.vue lb-ui/src/views/modules/monitor/JvmInfo.vue lb-ui/src/views/modules/monitor/RedisInfo.vue lb-ui/src/views/modules/monitor/RedisTerminal.vue lb-ui/src/views/modules/monitor/SystemInfo.vue lb-ui/src/views/modules/monitor/TomcatInfo.vue lb-ui/src/views/modules/oss/OSSFileList.vue lb-ui/src/views/patent/PaSoftBookList.vue lb-ui/src/views/patent/modules/PaSoftbookModal.vue lb-ui/src/views/patent/modules/PaUploadFileModal.vue lb-ui/src/views/pro/BoardInfo.vue lb-ui/src/views/pro/MilestoneInfo.vue lb-ui/src/views/pro/ProProjectGroupList.vue lb-ui/src/views/pro/ProjectList.vue lb-ui/src/views/pro/TemplateList.vue lb-ui/src/views/pro/modules/LinkListComponent.vue lb-ui/src/views/pro/modules/MilestoneModal.vue lb-ui/src/views/pro/modules/ProGroupSelectModal.vue lb-ui/src/views/pro/modules/ProProjectGroupForm.vue lb-ui/src/views/pro/modules/ProProjectGroupModal.vue lb-ui/src/views/pro/modules/ProjectModal.vue lb-ui/src/views/pro/modules/ProjectModal1.vue lb-ui/src/views/pro/modules/ProjectModal2.vue lb-ui/src/views/pro/modules/ProjectModal3.vue lb-ui/src/views/pro/modules/ProjectModal4.vue lb-ui/src/views/pro/modules/ProjectModal5.vue lb-ui/src/views/pro/modules/ProjectModal6.vue lb-ui/src/views/pro/modules/ProjectModal7.vue lb-ui/src/views/pro/modules/UploadTemplateModal.vue lb-ui/src/views/pro/modules/linkModal.vue lb-ui/src/views/pro/overView.vue lb-ui/src/views/pro/report/ProjectListReport.vue lb-ui/src/views/result/Error.vue lb-ui/src/views/result/Result.vue lb-ui/src/views/result/Success.vue lb-ui/src/views/system/AddressList.vue lb-ui/src/views/system/DataLogList.vue lb-ui/src/views/system/DepartList.vue lb-ui/src/views/system/DepartList2.vue lb-ui/src/views/system/DepartListSync.vue lb-ui/src/views/system/DepartTeamUserList.vue lb-ui/src/views/system/DepartUserList.vue lb-ui/src/views/system/DictDeleteList.vue lb-ui/src/views/system/DictItemList.vue lb-ui/src/views/system/DictList.vue lb-ui/src/views/system/LogList.vue lb-ui/src/views/system/NewPermissionList.vue lb-ui/src/views/system/PermissionDataRuleList.vue lb-ui/src/views/system/PermissionList.vue lb-ui/src/views/system/QuartzJobList.vue lb-ui/src/views/system/RoleList.vue lb-ui/src/views/system/RoleUserList.vue lb-ui/src/views/system/SysAnnouncementList.vue lb-ui/src/views/system/SysCategoryList.vue lb-ui/src/views/system/SysCheckRuleList.vue lb-ui/src/views/system/SysDataSourceList.vue lb-ui/src/views/system/SysFeedbackList.vue lb-ui/src/views/system/SysFillRuleList.vue lb-ui/src/views/system/SysGatewayRouteList.vue lb-ui/src/views/system/SysGatewayRouteList2.vue lb-ui/src/views/system/SysPositionList.vue lb-ui/src/views/system/SysUserOnlineList.vue lb-ui/src/views/system/TenantList.vue lb-ui/src/views/system/UserAnnouncementList.vue lb-ui/src/views/system/UserList.vue lb-ui/src/views/system/modules/AddressListLeft.vue lb-ui/src/views/system/modules/AddressListRight.vue lb-ui/src/views/system/modules/DataLogCompareModal.vue lb-ui/src/views/system/modules/DataLogModal.vue lb-ui/src/views/system/modules/DepartAuthModal.vue lb-ui/src/views/system/modules/DepartDataruleModal.vue lb-ui/src/views/system/modules/DepartModal.vue lb-ui/src/views/system/modules/DepartWindow.vue lb-ui/src/views/system/modules/DeptBaseInfo.vue lb-ui/src/views/system/modules/DeptRoleAuthModal.vue lb-ui/src/views/system/modules/DeptRoleDataruleModal.vue lb-ui/src/views/system/modules/DeptRoleInfo.vue lb-ui/src/views/system/modules/DeptRoleUserModal.vue lb-ui/src/views/system/modules/DeptTeamInfo.vue lb-ui/src/views/system/modules/DeptUserInfo.vue lb-ui/src/views/system/modules/DictItemModal.vue lb-ui/src/views/system/modules/DictModal.vue lb-ui/src/views/system/modules/GateWayRouteModal.vue lb-ui/src/views/system/modules/PasswordModal.vue lb-ui/src/views/system/modules/PermissionDataRuleModal.vue lb-ui/src/views/system/modules/PermissionModal.vue lb-ui/src/views/system/modules/QuartzJobModal.vue lb-ui/src/views/system/modules/RoleDataruleModal.vue lb-ui/src/views/system/modules/RoleModal.vue lb-ui/src/views/system/modules/SelectUserListModal.vue lb-ui/src/views/system/modules/SelectUserModal.vue lb-ui/src/views/system/modules/SysAnnouncementModal.vue lb-ui/src/views/system/modules/SysCategoryModal.vue lb-ui/src/views/system/modules/SysCheckRuleModal.vue lb-ui/src/views/system/modules/SysCheckRuleTestModal.vue lb-ui/src/views/system/modules/SysDataSourceModal.vue lb-ui/src/views/system/modules/SysDepartRoleModal.vue lb-ui/src/views/system/modules/SysDepartTeamModal.vue lb-ui/src/views/system/modules/SysFeedbackForm.vue lb-ui/src/views/system/modules/SysFeedbackModal.vue lb-ui/src/views/system/modules/SysFillRuleModal.vue lb-ui/src/views/system/modules/SysPositionModal.vue lb-ui/src/views/system/modules/SysUserAgentModal.vue lb-ui/src/views/system/modules/TenantForm.vue lb-ui/src/views/system/modules/TenantModal.vue lb-ui/src/views/system/modules/UserModal.vue lb-ui/src/views/system/modules/UserRecycleBinModal.vue lb-ui/src/views/system/modules/UserRoleModal.vue lb-ui/src/views/system/modules/icon/Icon.less lb-ui/src/views/system/modules/icon/Icons.vue lb-ui/src/views/user/Login.vue lb-ui/src/views/user/LoginAccount.vue lb-ui/src/views/user/LoginPhone.vue lb-ui/src/views/user/LoginSelectDepartment.vue lb-ui/src/views/user/LoginSelectTenant.vue lb-ui/src/views/user/alteration/Alteration.vue lb-ui/src/views/user/alteration/Step2.vue lb-ui/src/views/user/alteration/Step3.vue lb-ui/src/views/user/alteration/Step4.vue lb-ui/src/views/user/oauth2/OAuth2Login.vue lb-ui/src/views/user/register/Register.vue lb-ui/src/views/user/register/RegisterResult.vue lb-ui/src/views/user/third/JeecgThirdLoginMixin.js lb-ui/src/views/user/third/ThirdLogin.vue lb-ui/src/views/week/Weekly.vue lb-ui/src/views/week/WeeklySubmitView.vue lb-ui/src/views/week/modules/RightAllProjectWeekly.vue lb-ui/src/views/week/modules/RightDepartUserWeekly.vue lb-ui/src/views/week/modules/RightExportWeekly.vue lb-ui/src/views/week/modules/RightJuniorBatchWeekly.vue lb-ui/src/views/week/modules/RightJuniorWeekly.vue lb-ui/src/views/week/modules/RightOwnWeekly.vue lb-ui/src/views/week/modules/RightPersonalWeekly.vue lb-ui/src/views/week/modules/RightProjectWeekly.vue lb-ui/src/views/week/modules/RightStatisticsPro.vue lb-ui/src/views/week/modules/RightStatisticsUser.vue lb-ui/src/views/week/modules/RightStatisticsWeekly.vue lb-ui/src/views/week/modules/RightWriteWeekly.vue lb-ui/src/views/week/modules/StatisticsBar.vue lb-ui/src/views/week/modules/StatisticsPie.vue lb-ui/src/views/week/modules/WeeklyDetailModal.vue lb-ui/src/views/week/modules/WeeklyLeft.vue lb-ui/src/views/week/modules/WeeklyListCompent.vue lb-ui/src/views/week/modules/WeeklyListProjectCompent.vue lb-ui/src/views/week/modules/WeeklyRight.vue lb-ui/src/vuebus/event-bus.js lb-ui/vue.config.js