From 4683e3129067e7c4057371e7e31f8ae30346cc9a Mon Sep 17 00:00:00 2001 From: zhuoda Date: Mon, 31 Mar 2025 23:19:41 +0800 Subject: [PATCH] =?UTF-8?q?v3.15.0=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E5=8D=87=E7=BA=A7SaToken=E5=88=B0=E6=9C=80=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC;=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E9=87=8D?= =?UTF-8?q?=E7=A3=85=E4=BC=98=E5=8C=96=20=E6=95=B0=E6=8D=AE=E5=AD=97?= =?UTF-8?q?=E5=85=B8;=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E5=8D=87?= =?UTF-8?q?=E7=BA=A7wangEditor-next;=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=BC=93=E5=AD=98=E5=AE=9E=E7=8E=B0redis?= =?UTF-8?q?=E4=B8=8Ecaffeine?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- smart-admin-api-java17-springboot3/pom.xml | 2 +- .../admin/interceptor/AdminInterceptor.java | 11 +- .../sa/admin/listener/AdminStartupRunner.java | 24 -- .../business/category/dao/CategoryDao.java | 1 - .../domain/entity/CategoryEntity.java | 7 +- .../category/domain/vo/CategoryTreeVO.java | 7 +- .../module/business/goods/dao/GoodsDao.java | 1 - .../goods/domain/form/GoodsAddForm.java | 4 +- .../goods/domain/form/GoodsQueryForm.java | 6 +- .../business/goods/service/GoodsService.java | 7 +- .../module/business/oa/bank/BankDao.java | 1 - .../oa/enterprise/dao/EnterpriseDao.java | 1 - .../enterprise/dao/EnterpriseEmployeeDao.java | 1 - .../business/oa/invoice/InvoiceDao.java | 1 - .../business/oa/notice/dao/NoticeDao.java | 1 - .../business/oa/notice/dao/NoticeTypeDao.java | 1 - .../service/DataScopeSqlConfigService.java | 5 +- .../service/DataScopeViewService.java | 1 + .../system/department/dao/DepartmentDao.java | 1 - .../domain/entity/DepartmentEntity.java | 2 +- .../department/domain/vo/DepartmentVO.java | 7 +- .../controller/EmployeeController.java | 2 +- .../system/employee/dao/EmployeeDao.java | 3 +- .../domain/form/EmployeeUpdateCenterForm.java | 2 +- .../employee/service/EmployeeService.java | 10 +- .../login/controller/LoginController.java | 2 +- .../system/login/service/LoginService.java | 13 +- .../admin/module/system/menu/dao/MenuDao.java | 1 - .../system/position/dao/PositionDao.java | 1 - .../admin/module/system/role/dao/RoleDao.java | 1 - .../system/role/dao/RoleDataScopeDao.java | 1 - .../system/role/dao/RoleEmployeeDao.java | 1 - .../module/system/role/dao/RoleMenuDao.java | 1 - .../system/support/AdminDictController.java | 142 +++++--- ...ializer.java => DictDataDeserializer.java} | 9 +- .../lab1024/sa/base/config/CacheConfig.java | 35 ++ .../sa/base/config/DataSourceConfig.java | 2 +- .../lab1024/sa/base/config/FileConfig.java | 4 +- .../sa/base/config/RepeatSubmitConfig.java | 11 +- .../sa/base/constant/CacheKeyConst.java | 8 +- .../advice/DecryptRequestAdvice.java | 11 +- .../advice/EncryptResponseAdvice.java | 15 +- .../module/support/cache/CacheService.java | 49 +-- .../cache/CaffeineCacheServiceImpl.java | 71 ++++ .../support/cache/RedisCacheServiceImpl.java | 86 +++++ .../support/changelog/dao/ChangeLogDao.java | 1 - .../dao/CodeGeneratorConfigDao.java | 1 - .../codegenerator/dao/CodeGeneratorDao.java | 1 - .../backend/domain/MapperVariableService.java | 13 +- .../backend/domain/VOVariableService.java | 8 - .../base/module/support/config/ConfigDao.java | 1 - .../annoation/DataTracerFieldDict.java | 4 +- .../support/datatracer/dao/DataTracerDao.java | 1 - .../DataTracerChangeContentService.java | 23 +- .../dict/controller/DictController.java | 57 --- .../base/module/support/dict/dao/DictDao.java | 36 ++ .../module/support/dict/dao/DictDataDao.java | 32 ++ .../module/support/dict/dao/DictKeyDao.java | 48 --- .../module/support/dict/dao/DictValueDao.java | 56 --- ...ctValueEntity.java => DictDataEntity.java} | 48 ++- .../{DictKeyEntity.java => DictEntity.java} | 42 ++- .../support/dict/domain/form/DictAddForm.java | 29 ++ .../dict/domain/form/DictDataAddForm.java | 38 ++ .../dict/domain/form/DictDataUpdateForm.java | 28 ++ .../dict/domain/form/DictKeyAddForm.java | 33 -- .../dict/domain/form/DictKeyQueryForm.java | 24 -- .../dict/domain/form/DictKeyUpdateForm.java | 22 -- .../dict/domain/form/DictQueryForm.java | 26 ++ .../dict/domain/form/DictUpdateForm.java | 34 ++ .../dict/domain/form/DictValueAddForm.java | 43 --- .../dict/domain/form/DictValueQueryForm.java | 29 -- .../dict/domain/form/DictValueUpdateForm.java | 22 -- .../support/dict/domain/vo/DictDataVO.java | 49 +++ .../support/dict/domain/vo/DictKeyVO.java | 29 -- .../module/support/dict/domain/vo/DictVO.java | 41 +++ .../support/dict/domain/vo/DictValueVO.java | 35 -- .../support/dict/manager/DictManager.java | 47 +++ .../dict/service/DictCacheService.java | 135 ------- .../support/dict/service/DictService.java | 325 ++++++++++------- .../support/feedback/dao/FeedbackDao.java | 1 - .../base/module/support/file/dao/FileDao.java | 1 - .../support/heartbeat/HeartBeatRecordDao.java | 1 - .../helpdoc/dao/HelpDocCatalogDao.java | 1 - .../support/helpdoc/dao/HelpDocDao.java | 1 - .../support/job/repository/SmartJobDao.java | 1 - .../job/repository/SmartJobLogDao.java | 1 - .../module/support/loginlog/LoginLogDao.java | 1 - .../loginlog/domain/LoginLogEntity.java | 5 + .../support/loginlog/domain/LoginLogVO.java | 2 + .../module/support/mail/MailTemplateDao.java | 1 - .../support/message/dao/MessageDao.java | 1 - .../support/operatelog/OperateLogDao.java | 1 - .../support/reload/dao/ReloadItemDao.java | 1 - .../support/reload/dao/ReloadResultDao.java | 1 - .../repeatsubmit/RepeatSubmitAspect.java | 32 +- .../repeatsubmit/annoation/RepeatSubmit.java | 6 - .../ticket/AbstractRepeatSubmitTicket.java | 18 +- .../ticket/RepeatSubmitCaffeineTicket.java | 11 +- .../ticket/RepeatSubmitRedisTicket.java | 16 +- .../securityprotect/dao/LoginFailDao.java | 1 - .../securityprotect/dao/PasswordLogDao.java | 1 - .../service/SecurityFileService.java | 11 +- .../service/SecurityPasswordService.java | 5 +- .../serialnumber/dao/SerialNumberDao.java | 1 - .../dao/SerialNumberRecordDao.java | 1 - .../java/dao/Dao.java.vm | 5 +- .../java/domain/vo/VO.java.vm | 2 +- .../java/service/Service.java.vm | 11 +- .../java/sql/Menu.sql.vm | 8 +- .../code-generator-template/js/form.vue.vm | 4 +- .../code-generator-template/js/list.vue.vm | 2 +- .../mapper/support/DictDataMapper.xml | 45 +++ .../mapper/support/DictKeyMapper.xml | 37 -- .../resources/mapper/support/DictMapper.xml | 45 +++ .../mapper/support/DictValueMapper.xml | 44 --- .../mapper/support/FeedbackMapper.xml | 2 +- .../src/main/resources/prod/sa-base.yaml | 2 +- smart-admin-api-java8-springboot2/pom.xml | 2 +- .../admin/interceptor/AdminInterceptor.java | 5 +- .../sa/admin/listener/AdminStartupRunner.java | 24 -- .../business/category/dao/CategoryDao.java | 1 - .../domain/entity/CategoryEntity.java | 7 +- .../category/domain/vo/CategoryTreeVO.java | 7 +- .../module/business/goods/dao/GoodsDao.java | 1 - .../goods/domain/form/GoodsAddForm.java | 4 +- .../goods/domain/form/GoodsQueryForm.java | 4 +- .../business/goods/domain/vo/GoodsVO.java | 1 - .../business/goods/service/GoodsService.java | 7 +- .../module/business/oa/bank/BankDao.java | 1 - .../oa/enterprise/dao/EnterpriseDao.java | 1 - .../enterprise/dao/EnterpriseEmployeeDao.java | 1 - .../business/oa/invoice/InvoiceDao.java | 1 - .../business/oa/notice/dao/NoticeDao.java | 1 - .../business/oa/notice/dao/NoticeTypeDao.java | 1 - .../system/department/dao/DepartmentDao.java | 1 - .../department/domain/vo/DepartmentVO.java | 7 +- .../system/employee/dao/EmployeeDao.java | 1 - .../system/login/service/LoginService.java | 13 +- .../admin/module/system/menu/dao/MenuDao.java | 1 - .../system/position/dao/PositionDao.java | 1 - .../admin/module/system/role/dao/RoleDao.java | 1 - .../system/role/dao/RoleDataScopeDao.java | 1 - .../system/role/dao/RoleEmployeeDao.java | 1 - .../module/system/role/dao/RoleMenuDao.java | 1 - .../system/support/AdminCacheController.java | 2 +- .../system/support/AdminDictController.java | 144 +++++--- .../controller/SupportBaseController.java | 1 + ...ializer.java => DictDataDeserializer.java} | 9 +- .../base/common/util/SmartResponseUtil.java | 31 +- .../lab1024/sa/base/config/CacheConfig.java | 35 ++ .../sa/base/config/DataSourceConfig.java | 2 +- .../lab1024/sa/base/config/FileConfig.java | 4 +- .../sa/base/config/RepeatSubmitConfig.java | 11 +- .../sa/base/constant/CacheKeyConst.java | 8 +- .../advice/DecryptRequestAdvice.java | 11 +- .../advice/EncryptResponseAdvice.java | 16 +- .../module/support/cache/CacheService.java | 58 +--- .../cache/CaffeineCacheServiceImpl.java | 71 ++++ .../support/cache/RedisCacheServiceImpl.java | 86 +++++ .../support/changelog/dao/ChangeLogDao.java | 1 - .../dao/CodeGeneratorConfigDao.java | 1 - .../codegenerator/dao/CodeGeneratorDao.java | 1 - .../backend/domain/VOVariableService.java | 8 - .../base/module/support/config/ConfigDao.java | 1 - .../annoation/DataTracerFieldDict.java | 4 +- .../support/datatracer/dao/DataTracerDao.java | 1 - .../DataTracerChangeContentService.java | 23 +- .../dict/controller/DictController.java | 57 --- .../base/module/support/dict/dao/DictDao.java | 36 ++ .../module/support/dict/dao/DictDataDao.java | 32 ++ .../module/support/dict/dao/DictKeyDao.java | 48 --- .../module/support/dict/dao/DictValueDao.java | 56 --- ...ctValueEntity.java => DictDataEntity.java} | 48 ++- .../{DictKeyEntity.java => DictEntity.java} | 42 ++- .../support/dict/domain/form/DictAddForm.java | 31 ++ .../dict/domain/form/DictDataAddForm.java | 39 +++ .../dict/domain/form/DictDataUpdateForm.java | 28 ++ .../dict/domain/form/DictKeyAddForm.java | 34 -- .../dict/domain/form/DictKeyQueryForm.java | 24 -- .../dict/domain/form/DictKeyUpdateForm.java | 23 -- .../dict/domain/form/DictQueryForm.java | 26 ++ .../dict/domain/form/DictUpdateForm.java | 36 ++ .../dict/domain/form/DictValueAddForm.java | 44 --- .../dict/domain/form/DictValueQueryForm.java | 30 -- .../dict/domain/form/DictValueUpdateForm.java | 23 -- .../support/dict/domain/vo/DictDataVO.java | 49 +++ .../support/dict/domain/vo/DictKeyVO.java | 29 -- .../module/support/dict/domain/vo/DictVO.java | 41 +++ .../support/dict/domain/vo/DictValueVO.java | 35 -- .../support/dict/manager/DictManager.java | 47 +++ .../dict/service/DictCacheService.java | 135 ------- .../support/dict/service/DictService.java | 328 +++++++++++------- .../support/feedback/dao/FeedbackDao.java | 1 - .../base/module/support/file/dao/FileDao.java | 1 - .../support/heartbeat/HeartBeatRecordDao.java | 1 - .../helpdoc/dao/HelpDocCatalogDao.java | 1 - .../support/helpdoc/dao/HelpDocDao.java | 1 - .../support/job/repository/SmartJobDao.java | 1 - .../job/repository/SmartJobLogDao.java | 1 - .../module/support/loginlog/LoginLogDao.java | 1 - .../loginlog/domain/LoginLogEntity.java | 5 + .../support/loginlog/domain/LoginLogVO.java | 2 + .../module/support/mail/MailTemplateDao.java | 1 - .../support/message/dao/MessageDao.java | 1 - .../support/operatelog/OperateLogDao.java | 1 - .../support/reload/dao/ReloadItemDao.java | 1 - .../support/reload/dao/ReloadResultDao.java | 1 - .../repeatsubmit/RepeatSubmitAspect.java | 32 +- .../repeatsubmit/annoation/RepeatSubmit.java | 8 +- .../ticket/AbstractRepeatSubmitTicket.java | 18 +- .../ticket/RepeatSubmitCaffeineTicket.java | 12 +- .../ticket/RepeatSubmitRedisTicket.java | 18 +- .../securityprotect/dao/LoginFailDao.java | 1 - .../securityprotect/dao/PasswordLogDao.java | 1 - .../serialnumber/dao/SerialNumberDao.java | 1 - .../dao/SerialNumberRecordDao.java | 1 - .../java/dao/Dao.java.vm | 1 - .../java/domain/vo/VO.java.vm | 2 +- .../java/service/Service.java.vm | 11 +- .../code-generator-template/js/form.vue.vm | 4 +- .../code-generator-template/js/list.vue.vm | 2 +- .../mapper/support/DictDataMapper.xml | 45 +++ .../mapper/support/DictKeyMapper.xml | 37 -- .../resources/mapper/support/DictMapper.xml | 45 +++ .../mapper/support/DictValueMapper.xml | 44 --- .../mapper/support/FeedbackMapper.xml | 2 +- .../src/main/resources/prod/sa-base.yaml | 5 +- smart-admin-web-javascript/.gitignore | 1 + smart-admin-web-javascript/package.json | 7 +- smart-admin-web-javascript/src/App.vue | 2 +- .../src/api/support/dict-api.js | 86 +++-- .../src/components/dict-preview/index.vue | 28 -- .../framework/boolean-select/index.vue | 2 +- .../{ => framework}/smart-copy-icon/index.vue | 0 .../{ => framework}/text-ellipsis/index.vue | 2 +- .../components/framework/wangeditor/index.vue | 4 +- .../index.vue | 10 +- .../components/support/dict-label/index.vue | 16 + .../components/support/dict-select/index.vue | 23 +- .../table-header-cell}/index.vue | 14 +- .../support/table-operator/index.vue | 22 +- .../smart-table-column-modal.vue | 11 +- .../src/config/app-config.js | 4 +- .../src/constants/support/dict-const.js | 21 ++ .../top-expand-menu/recursion-menu.vue | 258 +++++++------- .../components/top-expand-menu/sub-menu.vue | 2 +- .../components/top-expand-menu/top-menu.vue | 205 +++++------ smart-admin-web-javascript/src/main.js | 17 +- .../src/plugins/dict-plugin.js | 31 ++ .../src/plugins/privilege-plugin.js | 1 + .../src/store/modules/system/dict.js | 78 +++-- .../src/store/modules/system/user.js | 8 +- .../src/theme/index.less | 19 +- smart-admin-web-javascript/src/utils/dict.js | 22 -- .../erp/goods/components/goods-form-modal.vue | 3 +- .../views/business/erp/goods/goods-list.vue | 19 +- .../support/change-log/change-log-list.vue | 4 +- .../code-generator/code-generator-list.vue | 4 +- ...code-generator-table-config-form-field.vue | 18 +- .../src/views/support/config/config-list.vue | 4 +- ...ate-modal.vue => dict-data-form-modal.vue} | 61 ++-- .../dict/components/dict-data-modal.vue | 247 +++++++++++++ ...-operate-modal.vue => dict-form-modal.vue} | 45 +-- .../dict/components/dict-value-modal.vue | 221 ------------ .../src/views/support/dict/index.vue | 118 ++++--- .../src/views/support/file/file-list.vue | 4 +- .../support/heart-beat/heart-beat-list.vue | 4 +- .../job/components/deleted-job-list.vue | 4 +- .../job/components/job-log-list-modal.vue | 4 +- .../src/views/support/job/job-list.vue | 4 +- .../level3protect/data-masking-list.vue | 2 +- .../support/operate-log/operate-log-list.vue | 4 +- .../serial-number/serial-number-list.vue | 4 +- .../account/components/operate-log/index.vue | 4 +- .../system/department/department-list.vue | 4 +- .../src/views/system/login/login.vue | 5 + .../src/views/system/login2/login.vue | 5 + .../src/views/system/login3/login.vue | 5 + smart-admin-web-javascript/vite.config.js | 2 +- smart-admin-web-typescript/.gitignore | 1 + smart-admin-web-typescript/package.json | 3 +- smart-admin-web-typescript/src/App.vue | 5 +- .../src/api/support/dict-api.ts | 86 +++-- .../src/components/dict-preview/index.vue | 28 -- .../framework/boolean-select/index.vue | 2 +- .../{ => framework}/smart-copy-icon/index.vue | 2 +- .../framework/smart-enum-radio/index.vue | 6 +- .../framework/smart-enum-select/index.vue | 6 +- .../{ => framework}/text-ellipsis/index.vue | 22 +- .../components/framework/wangeditor/index.vue | 5 +- .../index.vue | 10 +- .../components/support/dict-label/index.vue | 16 + .../components/support/dict-select/index.vue | 18 +- .../table-header-cell}/index.vue | 14 +- .../support/table-operator/index.vue | 22 +- .../smart-table-column-modal.vue | 110 ++++-- .../src/config/app-config.ts | 4 +- .../src/constants/support/dict-const.ts | 21 ++ .../header-user-space/header-setting.vue | 2 +- .../components/top-expand-menu/index.vue | 6 +- .../top-expand-menu/recursion-menu.vue | 14 +- .../components/top-expand-menu/sub-menu.vue | 2 +- .../components/top-expand-menu/top-menu.vue | 3 +- .../src/layout/index.vue | 4 +- .../src/layout/side-expand-layout.vue | 23 +- smart-admin-web-typescript/src/main.ts | 17 +- .../src/plugins/dict-plugin.ts | 31 ++ .../src/store/modules/system/dict.ts | 78 +++-- .../src/store/modules/system/user.ts | 7 + .../src/theme/index.less | 19 +- smart-admin-web-typescript/src/utils/dict.ts | 22 -- .../erp/goods/components/goods-form-modal.vue | 3 +- .../views/business/erp/goods/goods-list.vue | 25 +- .../components/notice-view-record-list.vue | 174 +++++----- .../views/business/oa/notice/notice-list.vue | 2 +- .../support/change-log/change-log-list.vue | 4 +- .../code-generator/code-generator-list.vue | 4 +- ...code-generator-table-config-form-basic.vue | 16 +- ...code-generator-table-config-form-field.vue | 18 +- ...or-table-config-form-insert-and-update.vue | 2 +- .../src/views/support/config/config-list.vue | 4 +- ...ate-modal.vue => dict-data-form-modal.vue} | 61 ++-- .../dict/components/dict-data-modal.vue | 247 +++++++++++++ ...-operate-modal.vue => dict-form-modal.vue} | 45 +-- .../dict/components/dict-value-modal.vue | 221 ------------ .../src/views/support/dict/index.vue | 118 ++++--- .../src/views/support/file/file-list.vue | 4 +- .../support/heart-beat/heart-beat-list.vue | 4 +- .../job/components/deleted-job-list.vue | 4 +- .../job/components/job-log-list-modal.vue | 4 +- .../src/views/support/job/job-list.vue | 12 +- .../level3protect/data-masking-list.vue | 2 +- .../support/operate-log/operate-log-list.vue | 4 +- .../serial-number/serial-number-list.vue | 4 +- .../account/components/center/index.vue | 9 +- .../account/components/operate-log/index.vue | 4 +- .../account/components/password/index.vue | 1 - .../src/views/system/account/index.vue | 3 +- .../components/department-form-modal.vue | 42 +-- .../system/department/department-list.vue | 4 +- .../src/views/system/home/home-notice.vue | 12 +- .../src/views/system/login/login.vue | 5 + .../src/views/system/login2/login.vue | 5 + .../src/views/system/login3/login.vue | 5 + .../views/system/position/position-form.vue | 1 + smart-admin-web-typescript/vite.config.ts | 2 +- smart_admin_v3.sql | 97 +++--- 347 files changed, 4203 insertions(+), 3792 deletions(-) delete mode 100644 smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java rename smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/{DictValueVoDeserializer.java => DictDataDeserializer.java} (77%) create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java rename smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/{DictValueEntity.java => DictDataEntity.java} (50%) rename smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/{DictKeyEntity.java => DictEntity.java} (55%) create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictDataMapper.xml delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictMapper.xml delete mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml delete mode 100644 smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java rename smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/{DictValueVoDeserializer.java => DictDataDeserializer.java} (77%) create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java rename smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/{DictValueEntity.java => DictDataEntity.java} (50%) rename smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/{DictKeyEntity.java => DictEntity.java} (55%) create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictDataMapper.xml delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictMapper.xml delete mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml delete mode 100644 smart-admin-web-javascript/src/components/dict-preview/index.vue rename smart-admin-web-javascript/src/components/{ => framework}/smart-copy-icon/index.vue (100%) rename smart-admin-web-javascript/src/components/{ => framework}/text-ellipsis/index.vue (95%) rename smart-admin-web-javascript/src/components/support/{dict-key-select => dict-code-select}/index.vue (86%) create mode 100644 smart-admin-web-javascript/src/components/support/dict-label/index.vue rename smart-admin-web-javascript/src/components/{smart-table-header-cell => support/table-header-cell}/index.vue (87%) create mode 100644 smart-admin-web-javascript/src/constants/support/dict-const.js create mode 100644 smart-admin-web-javascript/src/plugins/dict-plugin.js delete mode 100644 smart-admin-web-javascript/src/utils/dict.js rename smart-admin-web-javascript/src/views/support/dict/components/{dict-value-operate-modal.vue => dict-data-form-modal.vue} (52%) create mode 100644 smart-admin-web-javascript/src/views/support/dict/components/dict-data-modal.vue rename smart-admin-web-javascript/src/views/support/dict/components/{dict-key-operate-modal.vue => dict-form-modal.vue} (63%) delete mode 100644 smart-admin-web-javascript/src/views/support/dict/components/dict-value-modal.vue delete mode 100644 smart-admin-web-typescript/src/components/dict-preview/index.vue rename smart-admin-web-typescript/src/components/{ => framework}/smart-copy-icon/index.vue (94%) rename smart-admin-web-typescript/src/components/{ => framework}/text-ellipsis/index.vue (71%) rename smart-admin-web-typescript/src/components/support/{dict-key-select => dict-code-select}/index.vue (86%) create mode 100644 smart-admin-web-typescript/src/components/support/dict-label/index.vue rename smart-admin-web-typescript/src/components/{smart-table-header-cell => support/table-header-cell}/index.vue (87%) create mode 100644 smart-admin-web-typescript/src/constants/support/dict-const.ts create mode 100644 smart-admin-web-typescript/src/plugins/dict-plugin.ts delete mode 100644 smart-admin-web-typescript/src/utils/dict.ts rename smart-admin-web-typescript/src/views/support/dict/components/{dict-value-operate-modal.vue => dict-data-form-modal.vue} (53%) create mode 100644 smart-admin-web-typescript/src/views/support/dict/components/dict-data-modal.vue rename smart-admin-web-typescript/src/views/support/dict/components/{dict-key-operate-modal.vue => dict-form-modal.vue} (63%) delete mode 100644 smart-admin-web-typescript/src/views/support/dict/components/dict-value-modal.vue diff --git a/smart-admin-api-java17-springboot3/pom.xml b/smart-admin-api-java17-springboot3/pom.xml index 60d8a911..9f0e2636 100644 --- a/smart-admin-api-java17-springboot3/pom.xml +++ b/smart-admin-api-java17-springboot3/pom.xml @@ -48,7 +48,7 @@ 0.9.1 0.9.0 3.1 - 1.37.0 + 1.41.0 2.7.0 1.80 2.13.4 diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java index 28cd5511..5bf8c733 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java @@ -2,9 +2,8 @@ package net.lab1024.sa.admin.interceptor; import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.exception.SaTokenException; -import cn.dev33.satoken.strategy.SaStrategy; import cn.dev33.satoken.stp.StpUtil; -import cn.hutool.core.util.StrUtil; +import cn.dev33.satoken.strategy.SaAnnotationStrategy; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -84,7 +83,7 @@ public class AdminInterceptor implements HandlerInterceptor { // --------------- 第三步: 校验 权限 --------------- SmartRequestUtil.setRequestUser(requestEmployee); - if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { + if (SaAnnotationStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { return true; } @@ -93,7 +92,7 @@ public class AdminInterceptor implements HandlerInterceptor { return true; } - SaStrategy.instance.checkMethodAnnotation.accept(method); + SaAnnotationStrategy.instance.checkMethodAnnotation.accept(method); } catch (SaTokenException e) { /* @@ -126,7 +125,6 @@ public class AdminInterceptor implements HandlerInterceptor { * 检测:token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结 */ private void checkActiveTimeout(RequestEmployee requestEmployee) { - // 用户不在线,也不用检测 if (requestEmployee == null) { return; @@ -137,12 +135,9 @@ public class AdminInterceptor implements HandlerInterceptor { } - @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // 清除上下文 SmartRequestUtil.remove(); } - - } \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java deleted file mode 100644 index 959045d1..00000000 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lab1024.sa.admin.listener; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -/** - * admin 应用启动加载 - * - * @Author 1024创新实验室-主任:卓大 - * @Date 2021-08-26 18:46:32 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Slf4j -@Component -public class AdminStartupRunner implements CommandLineRunner { - - - @Override - public void run(String... args) { - } -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java index fbed2e96..c107b26a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface CategoryDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java index 83933a1d..b8d0a775 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -15,11 +16,13 @@ import java.time.LocalDateTime; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data @TableName("t_category") -public class CategoryEntity { +public class CategoryEntity implements Serializable { + + private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Long categoryId; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java index 3c55b658..f847b40c 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.business.category.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.util.List; /** @@ -12,10 +13,12 @@ import java.util.List; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data -public class CategoryTreeVO { +public class CategoryTreeVO implements Serializable { + + private static final long serialVersionUID = 1L; @Schema(description = "类目id") private Long categoryId; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java index 148a685d..932f4807 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface GoodsDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java index 02d27022..c13620c8 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java @@ -7,7 +7,7 @@ import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer; +import net.lab1024.sa.base.common.json.deserializer.DictDataDeserializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; @@ -39,7 +39,7 @@ public class GoodsAddForm { @Schema(description = "产地") @NotBlank(message = "产地 不能为空 ") - @JsonDeserialize(using = DictValueVoDeserializer.class) + @JsonDeserialize(using = DictDataDeserializer.class) private String place; @Schema(description = "商品价格") diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java index 6f61e100..d726a9a5 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; import net.lab1024.sa.base.common.domain.PageParam; -import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer; +import net.lab1024.sa.base.common.json.deserializer.DictDataDeserializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; @@ -17,7 +17,7 @@ import org.hibernate.validator.constraints.Length; * @Date 2021-10-25 20:26:54 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data public class GoodsQueryForm extends PageParam { @@ -34,7 +34,7 @@ public class GoodsQueryForm extends PageParam { private Integer goodsStatus; @Schema(description = "产地") - @JsonDeserialize(using = DictValueVoDeserializer.class) + @JsonDeserialize(using = DictDataDeserializer.class) private String place; @Schema(description = "上架状态") diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java index f6b41bde..e4d59fb2 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java @@ -26,7 +26,6 @@ import net.lab1024.sa.base.common.util.SmartEnumUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; import net.lab1024.sa.base.module.support.dict.service.DictService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; @@ -60,7 +59,7 @@ public class GoodsService { private DataTracerService dataTracerService; @Resource - private DictCacheService dictCacheService; + private DictService dictService; /** * 添加商品 @@ -194,13 +193,13 @@ public class GoodsService { */ public List getAllGoods() { List goodsEntityList = goodsDao.selectList(null); - String keyCode="GODOS_PLACE"; + String dictCode = "GOODS_PLACE"; return goodsEntityList.stream() .map(e -> GoodsExcelVO.builder() .goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class)) .categoryName(categoryQueryService.queryCategoryName(e.getCategoryId())) - .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(keyCode,code)).collect(Collectors.joining(","))) + .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictService.getDictDataLabel(dictCode, code)).collect(Collectors.joining(","))) .price(e.getPrice()) .goodsName(e.getGoodsName()) .remark(e.getRemark()) diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java index bc508070..f553221c 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface BankDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java index ee358cb3..bde94996 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java @@ -23,7 +23,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface EnterpriseDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java index d27d392d..e73a493e 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java @@ -22,7 +22,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface EnterpriseEmployeeDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java index 1336fe5f..68c8d9a9 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface InvoiceDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java index f6c5060f..c3609d61 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java @@ -27,7 +27,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface NoticeDao extends BaseMapper { // ================================= 数据范围相关 【子表】 ================================= diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java index b08e5289..7f7ee5ca 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface NoticeTypeDao extends BaseMapper { } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java index b7063914..493d3b1a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeSqlConfigService.java @@ -33,7 +33,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2020/11/28 20:59:17 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -89,7 +89,6 @@ public class DataScopeSqlConfigService { /** * 根据调用的方法获取,此方法的配置信息 - * */ public DataScopeSqlConfig getSqlConfig(String method) { return this.dataScopeMethodMap.get(method); @@ -125,7 +124,7 @@ public class DataScopeSqlConfigService { log.warn("data scope custom strategy class:{} ,bean is null", sqlConfigDTO.getJoinSqlImplClazz()); return ""; } - return powerStrategy.getCondition(viewTypeEnum,paramMap, sqlConfigDTO); + return powerStrategy.getCondition(viewTypeEnum, paramMap, sqlConfigDTO); } if (DataScopeWhereInTypeEnum.EMPLOYEE == sqlConfigDTO.getDataScopeWhereInType()) { List canViewEmployeeIds = dataScopeViewService.getCanViewEmployeeId(viewTypeEnum, employeeId); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java index b48134e6..15585731 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/service/DataScopeViewService.java @@ -56,6 +56,7 @@ public class DataScopeViewService { if (DataScopeViewTypeEnum.DEPARTMENT_AND_SUB == viewType) { return this.getDepartmentAndSubEmployeeIdList(employeeId); } + // 可以查看所有员工数据 return Lists.newArrayList(); } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java index 3103af3f..4924d5a5 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface DepartmentDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java index 3887b47f..a76ea7e9 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/entity/DepartmentEntity.java @@ -36,7 +36,7 @@ public class DepartmentEntity { /** * 负责人员工 id */ - @TableField(updateStrategy = FieldStrategy.ALWAYS) + @TableField(updateStrategy = FieldStrategy.IGNORED) private Long managerId; /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java index 3566f877..c973a959 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -12,10 +13,12 @@ import java.time.LocalDateTime; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data -public class DepartmentVO { +public class DepartmentVO implements Serializable { + + private static final long serialVersionUID = 1L; @Schema(description = "部门id") private Long departmentId; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java index b86f63e8..2d11e03e 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/controller/EmployeeController.java @@ -117,7 +117,7 @@ public class EmployeeController { @Operation(summary = "查询员工-根据部门id @author 卓大") @GetMapping("/employee/getAllEmployeeByDepartmentId/{departmentId}") public ResponseDTO> getAllEmployeeByDepartmentId(@PathVariable Long departmentId) { - return employeeService.getAllEmployeeByDepartmentId(departmentId, Boolean.FALSE); + return employeeService.getAllEmployeeByDepartmentId(departmentId); } @Operation(summary = "查询所有员工 @author 卓大") diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java index 60a510df..1b02fadf 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java @@ -22,7 +22,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface EmployeeDao extends BaseMapper { /** * 查询员工列表 @@ -35,7 +34,7 @@ public interface EmployeeDao extends BaseMapper { List selectEmployeeByDisabledAndDeleted(@Param("disabledFlag") Boolean disabledFlag, @Param("deletedFlag") Boolean deletedFlag); /** - * 更新禁用状态 + * 更新单个 */ void updateDisableFlag(@Param("employeeId") Long employeeId, @Param("disabledFlag") Boolean disabledFlag); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java index a857ae4b..d28252c4 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdateCenterForm.java @@ -53,4 +53,4 @@ public class EmployeeUpdateCenterForm { @Schema(description = "备注") @Length(max = 200, message = "备注最多200字符") private String remark; -} +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java index 5d684d31..69e79891 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/service/EmployeeService.java @@ -239,7 +239,6 @@ public class EmployeeService { return ResponseDTO.ok(); } - /** * 更新登录人头像 * @@ -384,11 +383,8 @@ public class EmployeeService { /** * 获取某个部门的员工信息 */ - public ResponseDTO> getAllEmployeeByDepartmentId(Long departmentId, Boolean disabledFlag) { - List employeeEntityList = employeeDao.selectByDepartmentId(departmentId, disabledFlag); - if (disabledFlag != null) { - employeeEntityList = employeeEntityList.stream().filter(e -> e.getDisabledFlag().equals(disabledFlag)).collect(Collectors.toList()); - } + public ResponseDTO> getAllEmployeeByDepartmentId(Long departmentId) { + List employeeEntityList = employeeDao.selectByDepartmentId(departmentId, Boolean.FALSE); if (CollectionUtils.isEmpty(employeeEntityList)) { return ResponseDTO.ok(Collections.emptyList()); @@ -429,7 +425,7 @@ public class EmployeeService { * 根据登录名获取员工 */ public EmployeeEntity getByLoginName(String loginName) { - return employeeDao.getByLoginName(loginName, null); + return employeeDao.getByLoginName(loginName, false); } } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java index cac01bf4..28aa85ed 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/controller/LoginController.java @@ -27,7 +27,7 @@ import org.springframework.web.bind.annotation.*; * @Date 2021-12-15 21:05:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @RestController @Tag(name = AdminSwaggerTagConst.System.SYSTEM_LOGIN) diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java index b118b967..27bbc71b 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java @@ -167,12 +167,12 @@ public class LoginService implements StpInterface { // 验证账号状态 if (employeeEntity.getDeletedFlag()) { - saveLoginLog(employeeEntity, ip, userAgent, "账号已删除", LoginLogResultEnum.LOGIN_FAIL); + saveLoginLog(employeeEntity, ip, userAgent, "账号已删除", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum); return ResponseDTO.userErrorParam("您的账号已被删除,请联系工作人员!"); } if (employeeEntity.getDisabledFlag()) { - saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL); + saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum); return ResponseDTO.userErrorParam("您的账号已被禁用,请联系工作人员!"); } @@ -206,9 +206,9 @@ public class LoginService implements StpInterface { } // 密码错误 - if ( !SecurityPasswordService.matchesPwd(requestPassword,employeeEntity.getLoginPwd()) ) { + if (!SecurityPasswordService.matchesPwd(requestPassword, employeeEntity.getLoginPwd())) { // 记录登录失败 - saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL); + saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum); // 记录等级保护次数 String msg = securityLoginService.recordLoginFail(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE, employeeEntity.getLoginName(), loginFailEntityResponseDTO.getData()); return msg == null ? ResponseDTO.userErrorParam("登录名或密码错误!") : ResponseDTO.error(UserErrorCode.LOGIN_FAIL_WILL_LOCK, msg); @@ -237,7 +237,7 @@ public class LoginService implements StpInterface { LoginResultVO loginResultVO = getLoginResult(requestEmployee, token); //保存登录记录 - saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : loginDeviceEnum.getDesc(), LoginLogResultEnum.LOGIN_SUCCESS); + saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : StringConst.EMPTY, LoginLogResultEnum.LOGIN_SUCCESS, loginDeviceEnum); // 设置 token loginResultVO.setToken(token); @@ -411,7 +411,7 @@ public class LoginService implements StpInterface { /** * 保存登录日志 */ - private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result) { + private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result, LoginDeviceEnum loginDeviceEnum) { LoginLogEntity loginEntity = LoginLogEntity.builder() .userId(employeeEntity.getEmployeeId()) .userType(UserTypeEnum.ADMIN_EMPLOYEE.getValue()) @@ -420,6 +420,7 @@ public class LoginService implements StpInterface { .loginIp(ip) .loginIpRegion(SmartIpUtil.getRegion(ip)) .remark(remark) + .loginDevice(loginDeviceEnum.getDesc()) .loginResult(result.getValue()) .createTime(LocalDateTime.now()) .build(); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java index d57d17be..e2cd1b5a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface MenuDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java index fbd9b9b3..5fd307a5 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java @@ -19,7 +19,6 @@ import org.springframework.stereotype.Component; */ @Mapper -@Component public interface PositionDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java index e05b2998..9cb9b1e4 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java @@ -16,7 +16,6 @@ import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java index 3ffbc329..16ddf39a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleDataScopeDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java index 3c2cdd0a..71de64cc 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java @@ -25,7 +25,6 @@ import java.util.Set; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleEmployeeDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java index f65361ca..dd11d845 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleMenuDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java index ba658018..cb5f5f01 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java @@ -8,26 +8,24 @@ import jakarta.validation.Valid; import net.lab1024.sa.base.common.controller.SupportBaseController; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.ValidateList; import net.lab1024.sa.base.constant.SwaggerTagConst; import net.lab1024.sa.base.module.support.dict.domain.form.*; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO; import net.lab1024.sa.base.module.support.dict.service.DictService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; /** - * 字典 + * 数据字典 Controller * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Tag(name = SwaggerTagConst.Support.DICT) @RestController @@ -36,60 +34,106 @@ public class AdminDictController extends SupportBaseController { @Resource private DictService dictService; - @Resource - private DictCacheService dictCacheService; + // ------------------- 获取全部数据 ------------------- - @Operation(summary = "分页查询数据字典KEY - @author 罗伊") - @PostMapping("/dict/key/query") - public ResponseDTO> keyQuery(@Valid @RequestBody DictKeyQueryForm queryForm) { - return dictService.keyQuery(queryForm); + @Operation(summary = "获取全部数据(供前端缓存使用) @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/getAllDictData") + public ResponseDTO> getAll() { + return ResponseDTO.ok(dictService.getAll()); } - - @Operation(summary = "数据字典KEY-添加- @author 罗伊") - @PostMapping("/dict/key/add") - @SaCheckPermission("support:dict:add") - public ResponseDTO keyAdd(@Valid @RequestBody DictKeyAddForm keyAddForm) { - return dictService.keyAdd(keyAddForm); + @Operation(summary = "获取所有字典code @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/getAllDict") + public ResponseDTO> getAllDict() { + return ResponseDTO.ok(dictService.getAllDict()); } - @Operation(summary = "数据字典缓存-刷新- @author 罗伊") - @GetMapping("/dict/cache/refresh") - @SaCheckPermission("support:dict:refresh") - public ResponseDTO cacheRefresh() { - return dictCacheService.cacheRefresh(); + // ------------------- 字典 ------------------- + + @Operation(summary = "分页查询 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/queryPage") + @SaCheckPermission("dict:query") + public ResponseDTO> queryPage(@RequestBody @Valid DictQueryForm queryForm) { + return ResponseDTO.ok(dictService.queryPage(queryForm)); } - @Operation(summary = "数据字典Value-添加- @author 罗伊") - @PostMapping("/dict/value/add") - public ResponseDTO valueAdd(@Valid @RequestBody DictValueAddForm valueAddForm) { - return dictService.valueAdd(valueAddForm); + @Operation(summary = "添加 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/add") + @SaCheckPermission("dict:add") + public ResponseDTO add(@RequestBody @Valid DictAddForm addForm) { + return dictService.add(addForm); } - @Operation(summary = "数据字典KEY-更新- @author 罗伊") - @PostMapping("/dict/key/edit") - @SaCheckPermission("support:dict:edit") - public ResponseDTO keyEdit(@Valid @RequestBody DictKeyUpdateForm keyUpdateForm) { - return dictService.keyEdit(keyUpdateForm); + @Operation(summary = "更新 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/update") + @SaCheckPermission("dict:update") + public ResponseDTO update(@RequestBody @Valid DictUpdateForm updateForm) { + return dictService.update(updateForm); } - @Operation(summary = "数据字典Value-更新- @author 罗伊") - @PostMapping("/dict/value/edit") - public ResponseDTO valueEdit(@Valid @RequestBody DictValueUpdateForm valueUpdateForm) { - return dictService.valueEdit(valueUpdateForm); + @Operation(summary = "字典数据 启用/禁用 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/updateDisabled/{dictId}") + @SaCheckPermission("dictData:updateDisabled") + public ResponseDTO updateDisabled(@PathVariable Long dictId) { + return dictService.updateDisabled(dictId); } - @Operation(summary = "数据字典KEY-删除- @author 罗伊") - @PostMapping("/dict/key/delete") - @SaCheckPermission("support:dict:delete") - public ResponseDTO keyDelete(@RequestBody List keyIdList) { - return dictService.keyDelete(keyIdList); + @Operation(summary = "批量删除 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/batchDelete") + @SaCheckPermission("dict:delete") + public ResponseDTO batchDelete(@RequestBody ValidateList idList) { + return dictService.batchDelete(idList); } - @Operation(summary = "数据字典Value-删除- @author 罗伊") - @PostMapping("/dict/value/delete") - public ResponseDTO valueDelete(@RequestBody List valueIdList) { - return dictService.valueDelete(valueIdList); + @Operation(summary = "单个删除 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/delete/{dictId}") + @SaCheckPermission("dict:delete") + public ResponseDTO batchDelete(@PathVariable Long dictId) { + return dictService.delete(dictId); + } + + // ------------------- 字典数据 ------------------- + + @Operation(summary = "字典数据 分页查询 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/dictData/queryDictData/{dictId}") + @SaCheckPermission("dictData:query") + public ResponseDTO> queryDictData(@PathVariable Long dictId) { + return ResponseDTO.ok(dictService.queryDictData(dictId)); + } + + @Operation(summary = "字典数据 启用/禁用 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/dictData/updateDisabled/{dictDataId}") + @SaCheckPermission("dictData:updateDisabled") + public ResponseDTO updateDictDataDisabled(@PathVariable Long dictDataId) { + return dictService.updateDictDataDisabled(dictDataId); + } + + @Operation(summary = "字典数据 添加 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/dictData/add") + @SaCheckPermission("dictData:add") + public ResponseDTO addDictData(@RequestBody @Valid DictDataAddForm addForm) { + return dictService.addDictData(addForm); + } + + @Operation(summary = "字典数据 更新 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/dictData/update") + @SaCheckPermission("dictData:update") + public ResponseDTO updateDictData(@RequestBody @Valid DictDataUpdateForm updateForm) { + return dictService.updateDictData(updateForm); + } + + @Operation(summary = "字典数据 批量删除 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/dictData/batchDelete") + @SaCheckPermission("dictData:delete") + public ResponseDTO batchDeleteDictData(@RequestBody ValidateList idList) { + return dictService.batchDeleteDictData(idList); + } + + @Operation(summary = "字典数据 单个删除 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/dictData/delete/{dictDataId}") + @SaCheckPermission("dictData:delete") + public ResponseDTO deleteDictData(@PathVariable Long dictDataId) { + return dictService.deleteDictData(dictDataId); } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataDeserializer.java similarity index 77% rename from smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java rename to smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataDeserializer.java index 7631db6a..33690458 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataDeserializer.java @@ -1,18 +1,15 @@ package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * 字典反序列化 @@ -21,13 +18,13 @@ import java.util.stream.Collectors; * @Date 2022-08-12 22:17:53 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Slf4j -public class DictValueVoDeserializer extends JsonDeserializer { +public class DictDataDeserializer extends JsonDeserializer { @Override - public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { List list = new ArrayList<>(); ObjectCodec objectCodec = jsonParser.getCodec(); JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java new file mode 100644 index 00000000..bf6de16a --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java @@ -0,0 +1,35 @@ +package net.lab1024.sa.base.config; + +import net.lab1024.sa.base.module.support.cache.CacheService; +import net.lab1024.sa.base.module.support.cache.CaffeineCacheServiceImpl; +import net.lab1024.sa.base.module.support.cache.RedisCacheServiceImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 缓存配置 + * + * @author zhoumingfa + * @date 2025/03/28 + */ +@Configuration +public class CacheConfig { + + private static final String REDIS_CACHE = "redis"; + private static final String CAFFEINE_CACHE = "caffeine"; + + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = REDIS_CACHE) + public CacheService redisCacheService() { + return new RedisCacheServiceImpl(); + } + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = CAFFEINE_CACHE) + public CacheService caffeineCacheService() { + return new CaffeineCacheServiceImpl(); + } + +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java index 91f44019..24fdc89d 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java @@ -145,7 +145,7 @@ public class DataSourceConfig { if (dataScopePlugin != null) { pluginsList.add(dataScopePlugin); } - factoryBean.setPlugins(pluginsList.toArray(new Interceptor[pluginsList.size()])); + factoryBean.setPlugins(pluginsList.toArray(new Interceptor[0])); // 添加字段自动填充处理 factoryBean.setGlobalConfig(new GlobalConfig().setBanner(false).setMetaObjectHandler(new MybatisPlusFillHandler())); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java index ca770124..a929cca6 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java @@ -25,7 +25,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; * @Date 2019-09-02 23:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data @Configuration @@ -68,7 +68,7 @@ public class FileConfig implements WebMvcConfigurer { * @return */ @Bean - @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = "cloud") + @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = MODE_CLOUD) public AmazonS3 initAmazonS3() { ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTPS); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java index c62caa51..5a9130ff 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java @@ -1,11 +1,13 @@ package net.lab1024.sa.base.config; +import jakarta.annotation.Resource; import net.lab1024.sa.base.common.constant.StringConst; import net.lab1024.sa.base.common.util.SmartRequestUtil; import net.lab1024.sa.base.module.support.repeatsubmit.RepeatSubmitAspect; -import net.lab1024.sa.base.module.support.repeatsubmit.ticket.RepeatSubmitCaffeineTicket; +import net.lab1024.sa.base.module.support.repeatsubmit.ticket.RepeatSubmitRedisTicket; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.ValueOperations; /** * 重复提交配置 @@ -14,14 +16,17 @@ import org.springframework.context.annotation.Configuration; * @Date 2021/10/9 18:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Configuration public class RepeatSubmitConfig { + @Resource + private ValueOperations valueOperations; + @Bean public RepeatSubmitAspect repeatSubmitAspect() { - RepeatSubmitCaffeineTicket caffeineTicket = new RepeatSubmitCaffeineTicket(this::ticket); + RepeatSubmitRedisTicket caffeineTicket = new RepeatSubmitRedisTicket(valueOperations, this::ticket); return new RepeatSubmitAspect(caffeineTicket); } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java index 852f6272..17aa2d22 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java @@ -7,8 +7,14 @@ package net.lab1024.sa.base.constant; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class CacheKeyConst { + public static class Dict { + + public static final String DICT_DATA = "dict_data_cache"; + + } + } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java index 9adf42ad..72a86e29 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java @@ -1,6 +1,6 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.common.util.SmartStringUtil; @@ -25,7 +25,7 @@ import java.lang.reflect.Type; * @Date 2023/10/21 11:41:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室,Since 2012 + * @Copyright 1024创新实验室,Since 2012 */ @Slf4j @@ -37,16 +37,19 @@ public class DecryptRequestAdvice extends RequestBodyAdviceAdapter { @Resource private ApiEncryptService apiEncryptService; + @Resource + private ObjectMapper objectMapper; + @Override public boolean supports(MethodParameter methodParameter, Type targetType, Class> converterType) { return methodParameter.hasMethodAnnotation(ApiDecrypt.class) || methodParameter.hasParameterAnnotation(ApiDecrypt.class) || methodParameter.getContainingClass().isAnnotationPresent(ApiDecrypt.class); } @Override - public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { try { String bodyStr = IOUtils.toString(inputMessage.getBody(), ENCODING); - ApiEncryptForm apiEncryptForm = JSONObject.parseObject(bodyStr, ApiEncryptForm.class); + ApiEncryptForm apiEncryptForm = objectMapper.readValue(bodyStr, ApiEncryptForm.class); if (SmartStringUtil.isEmpty(apiEncryptForm.getEncryptData())) { return inputMessage; } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java index 0d6afa15..10cbc141 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java @@ -24,13 +24,13 @@ import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; * @Date 2023/10/24 09:52:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室,Since 2012 + * @Copyright 1024创新实验室,Since 2012 */ @Slf4j @ControllerAdvice -public class EncryptResponseAdvice implements ResponseBodyAdvice { +public class EncryptResponseAdvice implements ResponseBodyAdvice> { @Resource private ApiEncryptService apiEncryptService; @@ -44,19 +44,18 @@ public class EncryptResponseAdvice implements ResponseBodyAdvice { } @Override - public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { - if (body.getData() == null) { + public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { + if (body == null || body.getData() == null) { return body; } - String encrypt = null; try { - encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + String encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + body.setData(encrypt); + body.setDataType(DataTypeEnum.ENCRYPT.getValue()); } catch (JsonProcessingException e) { throw new RuntimeException(e); } - body.setData(encrypt); - body.setDataType(DataTypeEnum.ENCRYPT.getValue()); return body; } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java index 0229b3f4..9b5d07bc 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java @@ -14,61 +14,30 @@ import java.util.Set; import java.util.stream.Collectors; /** - * 缓存操作 + * 缓存服务 * * @Author 1024创新实验室: 罗伊 * @Date 2021/10/11 20:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Service -public class CacheService { - - @Resource - private CaffeineCacheManager caffeineCacheManager; +public interface CacheService { /** * 获取所有缓存名称 - * */ - public List cacheNames() { - return Lists.newArrayList(caffeineCacheManager.getCacheNames()); - } + List cacheNames(); /** - * 某个缓存下的所有key - * + * 某个缓存下的所有 key */ - public List cacheKey(String cacheName) { - CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); - if (cache == null) { - return Lists.newArrayList(); - } - Set cacheKey = cache.getNativeCache().asMap().keySet(); - return cacheKey.stream().map(e -> e.toString()).collect(Collectors.toList()); - } + List cacheKey(String cacheName); /** - * 移除某个key - * + * 移除某个 key */ + void removeCache(String cacheName); - public void removeCache(String cacheName) { - CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); - if (cache != null) { - cache.clear(); - } - } - - @SmartReload(ReloadConst.CACHE_SERVICE) - public void clearAllCache() { - Collection cacheNames = caffeineCacheManager.getCacheNames(); - for (String name : cacheNames) { - CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(name); - if (cache != null) { - cache.clear(); - } - } - } -} +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java new file mode 100644 index 00000000..0abf454f --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java @@ -0,0 +1,71 @@ +package net.lab1024.sa.base.module.support.cache; + +import com.google.common.collect.Lists; +import jakarta.annotation.Resource; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import org.springframework.cache.caffeine.CaffeineCache; +import org.springframework.cache.caffeine.CaffeineCacheManager; + +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * caffeine 缓存实现 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021/10/11 20:07 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +public class CaffeineCacheServiceImpl implements CacheService { + + @Resource + private CaffeineCacheManager caffeineCacheManager; + + /** + * 获取所有缓存名称 + */ + @Override + public List cacheNames() { + return Lists.newArrayList(caffeineCacheManager.getCacheNames()); + } + + /** + * 某个缓存下的所有 key + */ + @Override + public List cacheKey(String cacheName) { + CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); + if (cache == null) { + return Lists.newArrayList(); + } + Set cacheKey = cache.getNativeCache().asMap().keySet(); + return cacheKey.stream().map(e -> e.toString()).collect(Collectors.toList()); + } + + /** + * 移除某个 key + */ + @Override + public void removeCache(String cacheName) { + CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); + if (cache != null) { + cache.clear(); + } + } + + @SmartReload(ReloadConst.CACHE_SERVICE) + public void clearAllCache() { + Collection cacheNames = caffeineCacheManager.getCacheNames(); + for (String name : cacheNames) { + CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + } + } +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java new file mode 100644 index 00000000..5e04fcca --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java @@ -0,0 +1,86 @@ +package net.lab1024.sa.base.module.support.cache; + +import cn.hutool.core.util.StrUtil; +import com.google.common.collect.Lists; +import jakarta.annotation.Resource; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import org.springframework.data.redis.cache.RedisCache; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; + +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * redis 缓存实现 + * + * @author zhoumingfa + * @date 2025/3/28 + */ +public class RedisCacheServiceImpl implements CacheService { + + @Resource + private RedisCacheManager redisCacheManager; + + @Resource + private RedisConnectionFactory redisConnectionFactory; + + /** + * 获取所有缓存名称 + */ + @Override + public List cacheNames() { + return Lists.newArrayList(redisCacheManager.getCacheNames()); + } + + /** + * 某个缓存下的所有 key + */ + @Override + public List cacheKey(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache == null) { + return Lists.newArrayList(); + } + // 获取 Redis 连接 + RedisConnection connection = redisConnectionFactory.getConnection(); + // 根据指定的 key 模式获取所有匹配的键 + Set keys = connection.keyCommands().keys((cacheName + ":*").getBytes()); + + if (keys != null) { + return keys.stream().map(key -> { + String redisKey = StrUtil.str(key, "utf-8"); + // 从 Redis 键中提取出最后一个冒号后面的字符串作为真正的键 + return redisKey.substring(redisKey.lastIndexOf(":") + 1); + }).collect(Collectors.toList()); + } + connection.close(); + return Lists.newArrayList(cacheName); + } + + /** + * 移除某个 key + */ + @Override + public void removeCache(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache != null) { + cache.clear(); + } + } + + @SmartReload(ReloadConst.CACHE_SERVICE) + public void clearAllCache() { + Collection cacheNames = redisCacheManager.getCacheNames(); + for (String name : cacheNames) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + } + } +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java index 0ec0d5a7..09f72cc8 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java @@ -20,7 +20,6 @@ import org.springframework.stereotype.Component; */ @Mapper -@Component public interface ChangeLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java index d7a53419..b9763c61 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java @@ -14,7 +14,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface CodeGeneratorConfigDao extends BaseMapper { } \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java index 2b4f84a1..ab609ad1 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface CodeGeneratorDao { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java index bc16c991..efd88d9a 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/MapperVariableService.java @@ -8,7 +8,10 @@ import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryFi import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; import org.apache.commons.collections4.CollectionUtils; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * @Author 1024创新实验室-主任:卓大 @@ -39,7 +42,7 @@ public class MapperVariableService extends CodeGenerateBaseVariableService { List columnNameList = queryField.getColumnNameList(); if (columnNameList.size() == 1) { // AND INSTR(t_notice.title,#{query.keywords}) - stringBuilder.append(" AND INSTR(") + stringBuilder.append("AND INSTR(") .append(form.getTableName()).append(".").append(queryField.getColumnNameList().get(0)) .append(",#{queryForm.") .append(queryField.getFieldName()) @@ -47,21 +50,21 @@ public class MapperVariableService extends CodeGenerateBaseVariableService { } else { for (int i = 0; i < columnNameList.size(); i++) { if (i == 0) { - stringBuilder.append("AND ( INSTR(") + stringBuilder.append("AND (\n INSTR(") .append(form.getTableName()).append(".").append(queryField.getColumnNameList().get(i)) .append(",#{queryForm.") .append(queryField.getFieldName()) .append("})"); } else { // OR INSTR(t_notice.author,#{query.keywords}) - stringBuilder.append("\n OR INSTR(") + stringBuilder.append("\n OR INSTR(") .append(form.getTableName()).append(".").append(queryField.getColumnNameList().get(i)) .append(",#{queryForm.") .append(queryField.getFieldName()) .append("})"); } } - stringBuilder.append("\n )"); + stringBuilder.append("\n )"); } fieldMap.put("likeStr", stringBuilder.toString()); } else if (CodeQueryFieldQueryTypeEnum.DICT.equalsValue(queryField.getQueryTypeEnum())) { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java index cde09227..45844fed 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java @@ -84,14 +84,6 @@ public class VOVariableService extends CodeGenerateBaseVariableService { packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); } - - //字典 - if (isDict(field.getColumnName(), form)) { - finalFieldMap.put("dict", "\n @JsonSerialize(using = DictValueVoSerializer.class)"); - packageList.add("import com.fasterxml.jackson.databind.annotation.JsonSerialize;"); - packageList.add("import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer;"); - } - //文件上传 if (isFile(field.getColumnName(), form)) { finalFieldMap.put("file", "\n @JsonSerialize(using = FileKeyVoSerializer.class)"); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java index 77330d60..bb525b8a 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface ConfigDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java index 0e65d902..6fefae21 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java @@ -12,11 +12,11 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface DataTracerFieldDict { - String keyCode() default ""; + String dictCode(); } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java index b6d3e05e..9f467a76 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface DataTracerDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java index c67e8569..e872c7be 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java @@ -16,7 +16,8 @@ import net.lab1024.sa.base.common.util.SmartStringUtil; import net.lab1024.sa.base.module.support.datatracer.annoation.*; import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst; import net.lab1024.sa.base.module.support.datatracer.domain.bo.DataTracerContentBO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import net.lab1024.sa.base.module.support.dict.service.DictService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContext; @@ -39,7 +40,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -48,7 +49,7 @@ public class DataTracerChangeContentService { @Resource private ApplicationContext applicationContext; @Resource - private DictCacheService dictCacheService; + private DictService dictService; /** * 字段描述缓存 */ @@ -64,7 +65,7 @@ public class DataTracerChangeContentService { * * @param oldObjectList 原始对象列表 * @param newObjectList 新的对象列表 - * @param Class类型 + * @param Class类型 * @return 变更内容 */ public String getChangeContent(List oldObjectList, List newObjectList) { @@ -143,7 +144,7 @@ public class DataTracerChangeContentService { /** * 单个对象变动内容 * - * @param oldObjectList 旧的对象列表 + * @param oldObjectList 旧的对象列表 * @param newObjectList 新的对象列表 * @return 拼接后的内容 */ @@ -163,7 +164,7 @@ public class DataTracerChangeContentService { * 获取一个对象的内容信息 * * @param objectList 对象列表 - * @param 类型 + * @param 类型 * @return 内容 */ private String getObjectListContent(List objectList) { @@ -275,7 +276,6 @@ public class DataTracerChangeContentService { /** * 获取字段值 - * */ private DataTracerContentBO getFieldValue(Field field, Object object) { Object fieldValue = ""; @@ -303,7 +303,8 @@ public class DataTracerChangeContentService { fieldContent = SmartEnumUtil.getEnumDescByValue(fieldValue, dataTracerFieldEnum.enumClass()); } } else if (dataTracerFieldDict != null) { - fieldContent = dictCacheService.selectValueNameByValueCodeSplit(dataTracerFieldDict.keyCode(), fieldValue.toString()); + DictDataVO dictData = dictService.getDictData(dataTracerFieldDict.dictCode(), fieldValue.toString()); + fieldContent = dictData == null ? fieldValue.toString() : dictData.getDataLabel(); } else if (dataTracerFieldSql != null) { fieldContent = this.getRelateDisplayValue(fieldValue, dataTracerFieldSql); } else if (fieldValue instanceof Date) { @@ -330,7 +331,6 @@ public class DataTracerChangeContentService { /** * 获取关联字段的显示值 - * */ private String getRelateDisplayValue(Object fieldValue, DataTracerFieldSql dataTracerFieldSql) { Class relateMapper = dataTracerFieldSql.relateMapper(); @@ -351,7 +351,6 @@ public class DataTracerChangeContentService { /** * 获取字段描述信息 优先 OperateField 没得话swagger判断 - * */ private String getFieldDesc(Field field) { // 根据字段名称 从缓存中查询 @@ -370,7 +369,6 @@ public class DataTracerChangeContentService { /** * 获取操作类型 - * */ private String getOperateType(Object oldObject, Object newObject) { if (oldObject == null && newObject != null) { @@ -384,7 +382,6 @@ public class DataTracerChangeContentService { /** * 校验是否进行比对 - * */ private boolean valid(Object oldObject, Object newObject) { if (oldObject == null && newObject == null) { @@ -404,7 +401,6 @@ public class DataTracerChangeContentService { /** * 校验 - * */ private boolean valid(List oldObjectList, List newObjectList) { if (CollectionUtils.isEmpty(oldObjectList) && CollectionUtils.isEmpty(newObjectList)) { @@ -429,7 +425,6 @@ public class DataTracerChangeContentService { /** * 查询 包含 file key 注解的字段 * 使用缓存 - * */ private List getField(Object obj) { // 从缓存中查询 diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java deleted file mode 100644 index e2a06c6b..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java +++ /dev/null @@ -1,57 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.controller; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import jakarta.annotation.Resource; -import jakarta.validation.Valid; -import net.lab1024.sa.base.common.controller.SupportBaseController; -import net.lab1024.sa.base.common.domain.PageResult; -import net.lab1024.sa.base.common.domain.ResponseDTO; -import net.lab1024.sa.base.constant.SwaggerTagConst; -import net.lab1024.sa.base.module.support.dict.domain.form.DictValueQueryForm; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; -import net.lab1024.sa.base.module.support.dict.service.DictService; -import org.springframework.web.bind.annotation.*; - -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Tag(name = SwaggerTagConst.Support.DICT) -@RestController -public class DictController extends SupportBaseController { - - @Resource - private DictService dictService; - @Resource - private DictCacheService dictCacheService; - - - @Operation(summary = "查询全部字典key - @author 卓大") - @GetMapping("/dict/key/queryAll") - public ResponseDTO> queryAll() { - return ResponseDTO.ok(dictService.queryAllKey()); - } - - @Operation(summary = "分页查询数据字典value - @author 罗伊") - @PostMapping("/dict/value/query") - public ResponseDTO> valueQuery(@Valid @RequestBody DictValueQueryForm queryForm) { - return dictService.valueQuery(queryForm); - } - - @Operation(summary = "数据字典-值列表- @author 罗伊") - @GetMapping("/dict/value/list/{keyCode}") - public ResponseDTO> valueList(@PathVariable String keyCode) { - List dictValueVOList = dictCacheService.selectByKeyCode(keyCode); - return ResponseDTO.ok(dictValueVOList); - } -} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java new file mode 100644 index 00000000..b53bdf0a --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java @@ -0,0 +1,36 @@ +package net.lab1024.sa.base.module.support.dict.dao; + +import java.util.List; + +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; +import net.lab1024.sa.base.module.support.dict.domain.form.DictQueryForm; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +/** + * 数据字典 Dao + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Mapper +@Component +public interface DictDao extends BaseMapper { + + /** + * 分页 查询 + */ + List queryPage(Page page, @Param("queryForm") DictQueryForm queryForm); + + /** + * 根据 dictCode 去查询 + */ + DictEntity selectByCode(@Param("code") String code); + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java new file mode 100644 index 00000000..f02492b1 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java @@ -0,0 +1,32 @@ +package net.lab1024.sa.base.module.support.dict.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictDataEntity; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +import java.util.Collection; +import java.util.List; + +/** + * 字典数据表 Dao + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Mapper +@Component +public interface DictDataDao extends BaseMapper { + + List queryByDictId(@Param("dictId") Long dictId); + + List selectByDictDataIds(@Param("dictDataIdList") Collection dictDataIds); + + DictDataEntity selectByDictIdAndValue(@Param("dictId") Long dictId, @Param("dataValue") String dataValue); + + List getAll(); +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java deleted file mode 100644 index 36d9dac2..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.base.module.support.dict.domain.form.DictKeyQueryForm; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Mapper -@Component -public interface DictKeyDao extends BaseMapper { - - /** - * 查找所有未删除的自带key - */ - List selectByDeletedFlag(@Param("deletedFlag") Boolean deletedFlag); - - /** - * 逻辑删除 - * - */ - void updateDeletedFlagByIdList(@Param("dictKeyIdList") List dictKeyIdList, @Param("deletedFlag") Boolean deletedFlag); - - /** - * 分页查询 - * - */ - List query(Page page, @Param("query") DictKeyQueryForm queryForm); - - /** - * 跟进code查询 - */ - DictKeyEntity selectByCode(@Param("keyCode")String keyCode, @Param("deletedFlag") Boolean deletedFlag); -} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java deleted file mode 100644 index 2f0070a1..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.base.module.support.dict.domain.form.DictValueQueryForm; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Mapper -@Component -public interface DictValueDao extends BaseMapper { - - /** - * 查找所有未删除的自带key - * - */ - List selectByDeletedFlag(@Param("deletedFlag") Boolean deletedFlag); - - /** - * 查找所有未删除的自带key - * - */ - List selectByDeletedFlagAndKeyId(@Param("dictKeyId") Long dictKeyId, @Param("deletedFlag") Boolean deletedFlag); - - /** - * 逻辑删除 - * - */ - void updateDeletedFlagByIdList(@Param("dictValueIdList") List dictValueIdList, @Param("deletedFlag") Boolean deletedFlag); - - /** - * 分页查询 - * - */ - List query(Page page, @Param("query") DictValueQueryForm queryForm); - - /** - * 跟进code查询 - * - */ - DictValueEntity selectByCode(@Param("dictKeyId") Long dictKeyId,@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); -} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictDataEntity.java similarity index 50% rename from smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java rename to smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictDataEntity.java index 303b7b85..61b25b34 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictDataEntity.java @@ -8,43 +8,52 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 字典 + * 字典数据表 实体类 * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 */ + @Data -@TableName("t_dict_value") -public class DictValueEntity { +@TableName("t_dict_data") +public class DictDataEntity { + /** + * 字典数据id + */ @TableId(type = IdType.AUTO) - private Long dictValueId; + private Long dictDataId; - private Long dictKeyId; /** - * 编码 + * 字典id */ - private String valueCode; + private Long dictId; + /** - * 名称 + * 字典项值 */ - private String valueName; + private String dataValue; + + /** + * 字典项显示名称 + */ + private String dataLabel; + /** * 备注 */ private String remark; /** - * 排序 + * 排序(越大越靠前) */ - private Integer sort; + private Integer sortOrder; + /** - * 删除标识 + * 禁用状态 */ - private Boolean deletedFlag; + private Boolean disabledFlag; /** * 创建时间 @@ -55,4 +64,5 @@ public class DictValueEntity { * 更新时间 */ private LocalDateTime updateTime; -} \ No newline at end of file + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictEntity.java similarity index 55% rename from smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java rename to smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictEntity.java index 606ff7fd..0dc5d369 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictEntity.java @@ -8,39 +8,42 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 字典 + * 数据字典 实体类 * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 */ + @Data -@TableName("t_dict_key") -public class DictKeyEntity { +@TableName("t_dict") +public class DictEntity { + /** + * 字典id + */ @TableId(type = IdType.AUTO) - private Long dictKeyId; + private Long dictId; /** - * 编码 + * 字典名字 */ - private String keyCode; - /** - * 名称 - */ - private String keyName; + private String dictName; /** - * 备注 + * 字典编码 + */ + private String dictCode; + + /** + * 字典备注 */ private String remark; /** - * 删除标识 + * 禁用状态 */ - private Boolean deletedFlag; + private Boolean disabledFlag; /** * 创建时间 @@ -51,4 +54,5 @@ public class DictKeyEntity { * 更新时间 */ private LocalDateTime updateTime; -} \ No newline at end of file + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java new file mode 100644 index 00000000..22e11372 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java @@ -0,0 +1,29 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +/** + * 数据字典 新建表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictAddForm { + + @Schema(description = "字典名字", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典名字 不能为空") + private String dictName; + + @Schema(description = "字典编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典编码 不能为空") + private String dictCode; + + @Schema(description = "字典备注") + private String remark; + +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java new file mode 100644 index 00000000..4b344665 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java @@ -0,0 +1,38 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 字典数据表 新建表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictDataAddForm { + + @Schema(description = "字典id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典id 不能为空") + private Long dictId; + + @Schema(description = "字典项值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典项值 不能为空") + private String dataValue; + + @Schema(description = "字典项显示名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典项显示名称 不能为空") + private String dataLabel; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "排序(越大越靠前)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "排序(越大越靠前) 不能为空") + private Integer sortOrder; + +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java new file mode 100644 index 00000000..513325bd --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java @@ -0,0 +1,28 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + + +/** + * 字典数据表 更新表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictDataUpdateForm extends DictDataAddForm { + + @Schema(description = "字典数据id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典数据id 不能为空") + private Long dictDataId; + + @Schema(description = "字典数据编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典数据编码 不能为空") + private String dictCode; + + +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java deleted file mode 100644 index d9c18e25..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyAddForm { - - @Schema(description = "编码") - @NotBlank(message = "编码不能为空") - @Length(max = 50,message = "编码太长了,不能超过50字符") - private String keyCode; - - @Schema(description = "名称") - @NotBlank(message = "名称不能为空") - @Length(max = 50,message = "名称太长了,不能超过50字符") - private String keyName; - - @Schema(description = "备注") - @Length(max = 500,message = "备注太长了") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java deleted file mode 100644 index 845122bc..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import net.lab1024.sa.base.common.domain.PageParam; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyQueryForm extends PageParam { - - @Schema(description = "搜索词") - private String searchWord; - - @Schema(description = "删除标识",hidden = true) - private Boolean deletedFlag; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java deleted file mode 100644 index 232c0062..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyUpdateForm extends DictKeyAddForm { - - @Schema(description = "keyId") - @NotNull(message = "keyId不能为空") - private Long dictKeyId; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java new file mode 100644 index 00000000..5fb8da1a --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java @@ -0,0 +1,26 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import net.lab1024.sa.base.common.domain.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 数据字典 分页查询表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +@EqualsAndHashCode(callSuper = false) +public class DictQueryForm extends PageParam { + + @Schema(description = "关键字") + private String keywords; + + @Schema(description = "禁用状态") + private Boolean disabledFlag; + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java new file mode 100644 index 00000000..d4469b60 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java @@ -0,0 +1,34 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +/** + * 数据字典 更新表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictUpdateForm { + + @Schema(description = "字典id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典id 不能为空") + private Long dictId; + + @Schema(description = "字典名字", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典名字 不能为空") + private String dictName; + + @Schema(description = "字典编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典编码 不能为空") + private String dictCode; + + @Schema(description = "字典备注") + private String remark; + +} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java deleted file mode 100644 index 547efcd6..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueAddForm { - - @Schema(description = "dictKeyId") - @NotNull(message = "dictKeyId不能为空") - private Long dictKeyId; - - @Schema(description = "编码") - @NotBlank(message = "编码不能为空") - @Length(max = 50,message = "编码太长了,不能超过50字符") - private String valueCode; - - @Schema(description = "名称") - @NotBlank(message = "名称不能为空") - @Length(max = 50,message = "名称太长了,不能超过50字符") - private String valueName; - - @Schema(description = "排序") - @NotNull(message = "排序不能为空") - private Integer sort; - - @Schema(description = "备注") - @Length(max = 500,message = "备注太长了") - private String remark; - -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java deleted file mode 100644 index 7f87a8bb..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import net.lab1024.sa.base.common.domain.PageParam; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueQueryForm extends PageParam { - - @Schema(description = "dictKeyId") - @NotNull(message = "dictKeyId不能为空") - private Long dictKeyId; - - @Schema(description = "搜索词") - private String searchWord; - - @Schema(description = "删除标识",hidden = true) - private Boolean deletedFlag; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java deleted file mode 100644 index 67736e23..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java +++ /dev/null @@ -1,22 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueUpdateForm extends DictValueAddForm { - - @Schema(description = "valueId") - @NotNull(message = "valueId不能为空") - private Long dictValueId; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java new file mode 100644 index 00000000..8dc19f34 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java @@ -0,0 +1,49 @@ +package net.lab1024.sa.base.module.support.dict.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 字典数据表 列表VO + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictDataVO { + + @Schema(description = "字典数据id") + private Long dictDataId; + + @Schema(description = "字典id") + private Long dictId; + + @Schema(description = "字典编码") + private String dictCode; + + @Schema(description = "字典项值") + private String dataValue; + + @Schema(description = "字典项显示名称") + private String dataLabel; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "排序(越大越靠前)") + private Integer sortOrder; + + @Schema(description = "禁用状态") + private Boolean disabledFlag; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java deleted file mode 100644 index 5a9ad127..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyVO { - - @Schema(description = "dictKeyId") - private Long dictKeyId; - - @Schema(description = "编码") - private String keyCode; - - @Schema(description = "名称") - private String keyName; - - @Schema(description = "备注") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java new file mode 100644 index 00000000..1625ce40 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java @@ -0,0 +1,41 @@ +package net.lab1024.sa.base.module.support.dict.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; + +import java.time.LocalDateTime; + +import lombok.Data; + +/** + * 数据字典 列表VO + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictVO { + + @Schema(description = "字典id") + private Long dictId; + + @Schema(description = "字典名字") + private String dictName; + + @Schema(description = "字典编码") + private String dictCode; + + @Schema(description = "字典备注") + private String remark; + + @Schema(description = "禁用状态") + private Integer disabledFlag; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java deleted file mode 100644 index 216822b8..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueVO { - - @Schema(description = "valueId") - private Long dictValueId; - - @Schema(description = "dictKeyId") - private Long dictKeyId; - - @Schema(description = "编码") - private String valueCode; - - @Schema(description = "名称") - private String valueName; - - @Schema(description = "排序") - private Integer sort; - - @Schema(description = "备注") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java new file mode 100644 index 00000000..4a881334 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java @@ -0,0 +1,47 @@ +package net.lab1024.sa.base.module.support.dict.manager; + +import jakarta.annotation.Resource; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.constant.CacheKeyConst; +import net.lab1024.sa.base.module.support.dict.dao.DictDao; +import net.lab1024.sa.base.module.support.dict.dao.DictDataDao; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictDataEntity; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + + +/** + * 数据字典 缓存 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Service +public class DictManager { + + @Resource + private DictDao dictDao; + + @Resource + private DictDataDao dictDataDao; + + + /** + * 获取字典 + */ + @Cacheable(value = CacheKeyConst.Dict.DICT_DATA, key = "#dictCode + '_' + #dataValue") + public DictDataVO getDictData(String dictCode, String dataValue) { + DictEntity dictEntity = dictDao.selectByCode(dictCode); + if (dictEntity == null) { + return null; + } + + DictDataEntity dictDataEntity = dictDataDao.selectByDictIdAndValue(dictEntity.getDictId(), dataValue); + return SmartBeanUtil.copy(dictDataEntity, DictDataVO.class); + } + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java deleted file mode 100644 index ad9edf5d..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java +++ /dev/null @@ -1,135 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.service; - -import cn.hutool.core.util.StrUtil; -import com.google.common.collect.Lists; -import jakarta.annotation.PostConstruct; -import jakarta.annotation.Resource; -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.base.common.domain.ResponseDTO; -import net.lab1024.sa.base.common.util.SmartBeanUtil; -import net.lab1024.sa.base.module.support.dict.dao.DictKeyDao; -import net.lab1024.sa.base.module.support.dict.dao.DictValueDao; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -/** - * 字典缓存 服务 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Slf4j -@Service -public class DictCacheService { - - @Resource - private DictKeyDao dictKeyDao; - @Resource - private DictValueDao dictValueDao; - - private ConcurrentHashMap> DICT_CACHE = new ConcurrentHashMap<>(); - - - @PostConstruct - public void dictCache() { - this.cacheInit(); - } - - public void cacheInit() { - List dictKeyEntityList = dictKeyDao.selectByDeletedFlag(false); - if (CollectionUtils.isEmpty(dictKeyEntityList)) { - return; - } - List dictKeyValueList = dictValueDao.selectByDeletedFlag(false); - List dictValueVOList = SmartBeanUtil.copyList(dictKeyValueList, DictValueVO.class); - Map> valueListMap = dictValueVOList.stream().collect(Collectors.groupingBy(DictValueVO::getDictKeyId)); - //字典键值对缓存 - for (DictKeyEntity dictKeyEntity : dictKeyEntityList) { - String keyCode = dictKeyEntity.getKeyCode(); - Long dictKeyId = dictKeyEntity.getDictKeyId(); - DICT_CACHE.put(keyCode, valueListMap.getOrDefault(dictKeyId, Lists.newArrayList())); - } - log.info("################# 数据字典缓存初始化完毕 ###################"); - } - - /** - * 刷新缓存 - */ - public ResponseDTO cacheRefresh() { - DICT_CACHE.clear(); - this.cacheInit(); - return ResponseDTO.ok(); - } - - /** - * 查询某个key对应的字典值列表 - * - * @param keyCode - * @return - */ - public List selectByKeyCode(String keyCode) { - return DICT_CACHE.getOrDefault(keyCode, Lists.newArrayList()); - } - - /** - * 查询值code名称 - * @param keyCode - * @param valueCode - * @return - */ - public String selectValueNameByValueCode(String keyCode, String valueCode) { - DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); - if (dictValueVO == null){ - return ""; - } - return dictValueVO.getValueName() - ; - } - - public DictValueVO selectValueByValueCode(String keyCode, String valueCode) { - if (StrUtil.isEmpty(valueCode)) { - return null; - } - if (StrUtil.isEmpty(keyCode)) { - return null; - } - - List dictValueVOList = DICT_CACHE.get(valueCode); - if (CollectionUtils.isEmpty(dictValueVOList)) { - return null; - } - Optional option = dictValueVOList.stream().filter(e->e.getValueCode().equals(valueCode)).findFirst(); - if(option.isPresent()){ - return option.get(); - } - return null; - } - public String selectValueNameByValueCodeSplit(String keyCode, String valueCodes) { - if (StrUtil.isEmpty(valueCodes)) { - return ""; - } - List valueNameList = Lists.newArrayList(); - String[] valueCodeArray = valueCodes.split(","); - for (String valueCode : valueCodeArray) { - DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); - if (dictValueVO != null) { - valueNameList.add(dictValueVO.getValueName()); - } - } - return StringUtils.join(valueNameList, ","); - } - -} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java index 481b2f4b..1a7c8de2 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java @@ -1,196 +1,275 @@ package net.lab1024.sa.base.module.support.dict.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Interner; -import com.google.common.collect.Interners; import jakarta.annotation.Resource; -import net.lab1024.sa.base.common.code.UserErrorCode; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; -import net.lab1024.sa.base.module.support.dict.dao.DictKeyDao; -import net.lab1024.sa.base.module.support.dict.dao.DictValueDao; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.constant.CacheKeyConst; +import net.lab1024.sa.base.module.support.dict.dao.DictDao; +import net.lab1024.sa.base.module.support.dict.dao.DictDataDao; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictDataEntity; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; import net.lab1024.sa.base.module.support.dict.domain.form.*; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO; +import net.lab1024.sa.base.module.support.dict.manager.DictManager; import org.apache.commons.collections4.CollectionUtils; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** - * 字典 服务 + * 数据字典 Service * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 * @Copyright 1024创新实验室 */ + @Service public class DictService { @Resource - private DictKeyDao dictKeyDao; + private DictDao dictDao; + @Resource - private DictValueDao dictValueDao; + private DictDataDao dictDataDao; + @Resource - private DictCacheService dictCacheService; + private CacheManager cacheManager; + @Resource + private DictManager dictManager; /** - * key添加 - * - * @param keyAddForm - * @return + * 获取全部数据 */ - public synchronized ResponseDTO keyAdd(DictKeyAddForm keyAddForm) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyAddForm.getKeyCode(), false); - if (dictKeyEntity != null) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + public List getAll() { + return dictDataDao.getAll(); + } + + /** + * 获取所有字典 + */ + public List getAllDict() { + List dictEntityList = dictDao.selectList(null).stream().filter(e -> !e.getDisabledFlag()).collect(Collectors.toList()); + return SmartBeanUtil.copyList(dictEntityList, DictVO.class); + } + + /** + * 分页查询 + */ + public PageResult queryPage(DictQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List list = dictDao.queryPage(page, queryForm); + return SmartPageUtil.convert2PageResult(page, list); + } + + /** + * 添加 + */ + public synchronized ResponseDTO add(DictAddForm addForm) { + DictEntity existDictCode = dictDao.selectByCode(addForm.getDictCode()); + if (null != existDictCode) { + return ResponseDTO.userErrorParam("数据字典编码已经存在!"); } - dictKeyEntity = SmartBeanUtil.copy(keyAddForm, DictKeyEntity.class); - dictKeyDao.insert(dictKeyEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); + + DictEntity dictEntity = SmartBeanUtil.copy(addForm, DictEntity.class); + dictDao.insert(dictEntity); return ResponseDTO.ok(); } /** - * 值添加 - * - * @param valueAddForm - * @return + * 禁用 启用 */ - public synchronized ResponseDTO valueAdd(DictValueAddForm valueAddForm) { - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueAddForm.getDictKeyId(),valueAddForm.getValueCode(), false); - if (dictValueEntity != null) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + public ResponseDTO updateDisabled(Long dictId) { + DictEntity dictEntity = dictDao.selectById(dictId); + if (dictEntity == null) { + return ResponseDTO.userErrorParam("数据不存在"); } - dictValueEntity = SmartBeanUtil.copy(valueAddForm, DictValueEntity.class); - dictValueDao.insert(dictValueEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); + + dictEntity.setDisabledFlag(!dictEntity.getDisabledFlag()); + dictDao.updateById(dictEntity); return ResponseDTO.ok(); } /** - * key 编辑 - * - * @param keyUpdateForm - * @return + * 更新 */ - public synchronized ResponseDTO keyEdit(DictKeyUpdateForm keyUpdateForm) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyUpdateForm.getKeyCode(), false); - if (dictKeyEntity != null && !dictKeyEntity.getDictKeyId().equals(keyUpdateForm.getDictKeyId())) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); + @CacheEvict(CacheKeyConst.Dict.DICT_DATA) + public synchronized ResponseDTO update(DictUpdateForm updateForm) { + DictEntity existDictCode = dictDao.selectByCode(updateForm.getDictCode()); + if (null != existDictCode && !existDictCode.getDictId().equals(updateForm.getDictId())) { + return ResponseDTO.userErrorParam("数据字典编码已经存在!"); } - DictKeyEntity dictKeyUpdateEntity = SmartBeanUtil.copy(keyUpdateForm, DictKeyEntity.class); - dictKeyDao.updateById(dictKeyUpdateEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); + + DictEntity dictEntity = SmartBeanUtil.copy(updateForm, DictEntity.class); + dictDao.updateById(dictEntity); return ResponseDTO.ok(); } /** - * 值编辑 - * - * @param valueUpdateForm - * @return + * 批量删除 */ - public synchronized ResponseDTO valueEdit(DictValueUpdateForm valueUpdateForm) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectById(valueUpdateForm.getDictKeyId()); - if (dictKeyEntity == null || dictKeyEntity.getDeletedFlag()) { - return ResponseDTO.userErrorParam("key不能存在"); - } - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueUpdateForm.getDictKeyId(),valueUpdateForm.getValueCode(), false); - if (dictValueEntity != null && !dictValueEntity.getDictValueId().equals(valueUpdateForm.getDictValueId())) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); - } - DictValueEntity dictValueUpdateEntity = SmartBeanUtil.copy(valueUpdateForm, DictValueEntity.class); - dictValueDao.updateById(dictValueUpdateEntity); - //刷新缓存 - dictCacheService.cacheRefresh(); - return ResponseDTO.ok(); - } - - /** - * key删除 - * - * @param keyIdList - * @return - */ - public synchronized ResponseDTO keyDelete(List keyIdList) { - if (CollectionUtils.isEmpty(keyIdList)) { + @CacheEvict(CacheKeyConst.Dict.DICT_DATA) + public synchronized ResponseDTO batchDelete(List idList) { + if (CollectionUtils.isEmpty(idList)) { return ResponseDTO.ok(); } - dictKeyDao.updateDeletedFlagByIdList(keyIdList, true); - //刷新缓存 - dictCacheService.cacheRefresh(); + + dictDao.deleteBatchIds(idList); return ResponseDTO.ok(); } /** - * 值删除 - * - * @param valueIdList - * @return + * 单个删除 */ - public synchronized ResponseDTO valueDelete(List valueIdList) { - if (CollectionUtils.isEmpty(valueIdList)) { + @CacheEvict(CacheKeyConst.Dict.DICT_DATA) + public synchronized ResponseDTO delete(Long dictId) { + if (null == dictId) { return ResponseDTO.ok(); } - dictValueDao.updateDeletedFlagByIdList(valueIdList, true); - //刷新缓存 - dictCacheService.cacheRefresh(); + + dictDao.deleteById(dictId); + return ResponseDTO.ok(); + } + + + // -------------- 字典数据 -------------------- + + /** + * 分页查询 + */ + public List queryDictData(Long dictId) { + return dictDataDao.queryByDictId(dictId); + } + + /** + * 获取字典 + */ + + public DictDataVO getDictData(String dictCode, String dataValue) { + return dictManager.getDictData(dictCode, dataValue); + } + + /** + * 获取字典Label + */ + public String getDictDataLabel(String dictCode, String dataValue) { + DictDataVO dictData = getDictData(dictCode, dataValue); + return dictData == null ? "" : dictData.getDataLabel(); + } + + /** + * 添加 + */ + public synchronized ResponseDTO addDictData(DictDataAddForm addForm) { + + addForm.setDataValue(SmartStringUtil.trim(addForm.getDataValue())); + + DictEntity dictEntity = dictDao.selectById(addForm.getDictId()); + if (null == dictEntity) { + return ResponseDTO.userErrorParam("数据字典不存在"); + } + + DictDataEntity existData = dictDataDao.selectByDictIdAndValue(addForm.getDictId(), addForm.getDataValue()); + if (null != existData) { + return ResponseDTO.userErrorParam("已存在相同value的数据"); + } + + DictDataEntity dictDataEntity = SmartBeanUtil.copy(addForm, DictDataEntity.class); + dictDataDao.insert(dictDataEntity); return ResponseDTO.ok(); } /** - * 分页查询key - * - * @param queryForm - * @return + * 更新 */ - public ResponseDTO> keyQuery(DictKeyQueryForm queryForm) { - queryForm.setDeletedFlag(false); - Page page = SmartPageUtil.convert2PageQuery(queryForm); - List list = dictKeyDao.query(page, queryForm); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); - if (pageResult.getEmptyFlag()) { - return ResponseDTO.ok(pageResult); + @CacheEvict(value = CacheKeyConst.Dict.DICT_DATA, key = "#updateForm.dictCode + '_' + #updateForm.dataValue") + public synchronized ResponseDTO updateDictData(DictDataUpdateForm updateForm) { + + updateForm.setDataValue(SmartStringUtil.trim(updateForm.getDataValue())); + + DictEntity dictEntity = dictDao.selectById(updateForm.getDictId()); + if (null == dictEntity) { + return ResponseDTO.userErrorParam("数据字典不存在"); } - return ResponseDTO.ok(pageResult); + + DictDataEntity existData = dictDataDao.selectByDictIdAndValue(updateForm.getDictId(), updateForm.getDataValue()); + if (null != existData && !existData.getDictDataId().equals(updateForm.getDictDataId())) { + return ResponseDTO.userErrorParam("已存在相同value的数据"); + } + + DictDataEntity dictDataEntity = SmartBeanUtil.copy(updateForm, DictDataEntity.class); + dictDataDao.updateById(dictDataEntity); + return ResponseDTO.ok(); } /** - * 所有key - * - * @return + * 批量删除 */ - public List queryAllKey() { - return SmartBeanUtil.copyList(dictKeyDao.selectByDeletedFlag(false), DictKeyVO.class); + public synchronized ResponseDTO batchDeleteDictData(List idList) { + if (CollectionUtils.isEmpty(idList)) { + return ResponseDTO.ok(); + } + // 清除缓存 + clearDictDataCache(idList); + // 删除 + dictDataDao.deleteBatchIds(idList); + return ResponseDTO.ok(); } /** - * 分页查询值 - * - * @param queryForm - * @return + * 单个删除 */ - public ResponseDTO> valueQuery(DictValueQueryForm queryForm) { - queryForm.setDeletedFlag(false); - Page page = SmartPageUtil.convert2PageQuery(queryForm); - List list = dictValueDao.query(page, queryForm); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); - if (pageResult.getEmptyFlag()) { - return ResponseDTO.ok(pageResult); + public synchronized ResponseDTO deleteDictData(Long dictDataId) { + if (null == dictDataId) { + return ResponseDTO.ok(); } - return ResponseDTO.ok(pageResult); + // 清除缓存 + clearDictDataCache(Collections.singletonList(dictDataId)); + // 删除 + dictDataDao.deleteById(dictDataId); + return ResponseDTO.ok(); } -} \ No newline at end of file + /** + * 清空字典数据缓存 + */ + private void clearDictDataCache(List idList) { + List dictDataList = dictDataDao.selectByDictDataIds(idList); + Cache cache = cacheManager.getCache(CacheKeyConst.Dict.DICT_DATA); + if (cache == null) { + return; + } + + for (DictDataVO dictDataVO : dictDataList) { + cache.evict(dictDataVO.getDictCode() + "_" + dictDataVO.getDataValue()); + } + } + + + /** + * 更新启用/禁用 + */ + public synchronized ResponseDTO updateDictDataDisabled(Long dictDataId) { + DictDataEntity dictDataEntity = dictDataDao.selectById(dictDataId); + if (dictDataEntity == null) { + return ResponseDTO.userErrorParam("数据不存在"); + } + + dictDataEntity.setDisabledFlag(!dictDataEntity.getDisabledFlag()); + dictDataDao.updateById(dictDataEntity); + return ResponseDTO.ok(); + } + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java index 6623fd40..034a8af8 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface FeedbackDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java index df0f231c..15f7aab3 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java @@ -22,7 +22,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface FileDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java index 47b73391..df1ab21f 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface HeartBeatRecordDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java index 26c11f15..c04ec08b 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface HelpDocCatalogDao extends BaseMapper { } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java index 161aa445..902f1078 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java @@ -25,7 +25,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface HelpDocDao extends BaseMapper { // ================================= 帮助文档【主表 t_help_doc 】 ================================= diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java index 002e03fc..028f87c8 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java @@ -18,7 +18,6 @@ import java.util.List; * @date 2024/6/17 21:30 */ @Mapper -@Component public interface SmartJobDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java index edaf8fc8..b3b6a3d7 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java @@ -18,7 +18,6 @@ import java.util.List; * @date 2024/6/17 21:30 */ @Mapper -@Component public interface SmartJobLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java index 4e88d635..b0509f07 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface LoginLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java index 3753341a..2ef5dbab 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java @@ -60,6 +60,11 @@ public class LoginLogEntity { */ private String remark; + /** + * 登录设备 + */ + private String loginDevice; + /** * 登录类型 */ diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java index 3edb1d2e..205a7fb8 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java @@ -46,6 +46,8 @@ public class LoginLogVO { @SchemaEnum(LoginLogResultEnum.class) private Integer loginResult; + private String loginDevice; + private LocalDateTime createTime; } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java index d57c1c79..ecc6b07e 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java @@ -16,7 +16,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 ,Since 2012 */ @Mapper -@Component public interface MailTemplateDao extends BaseMapper { } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java index 80ec9e75..01389e03 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java @@ -17,7 +17,6 @@ import java.util.List; * @author luoyi * @date 2024/06/22 20:20 */ -@Component @Mapper public interface MessageDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java index 74397476..cdf520ac 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java @@ -20,7 +20,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface OperateLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java index 28f35c44..30fe8f8a 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java @@ -17,7 +17,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface ReloadItemDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java index 664befc4..93cb07a8 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface ReloadResultDao extends BaseMapper { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java index 465460c0..723ecd7e 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java @@ -22,18 +22,16 @@ import java.lang.reflect.Method; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Aspect @Slf4j public class RepeatSubmitAspect { - private AbstractRepeatSubmitTicket repeatSubmitTicket; + private final AbstractRepeatSubmitTicket repeatSubmitTicket; /** * 获取凭证信息 - * - * @param repeatSubmitTicket */ public RepeatSubmitAspect(AbstractRepeatSubmitTicket repeatSubmitTicket) { this.repeatSubmitTicket = repeatSubmitTicket; @@ -41,10 +39,6 @@ public class RepeatSubmitAspect { /** * 定义切入点 - * - * @param point - * @return - * @throws Throwable */ @Around("@annotation(net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit)") public Object around(ProceedingJoinPoint point) throws Throwable { @@ -55,20 +49,24 @@ public class RepeatSubmitAspect { if (StringUtils.isEmpty(ticket)) { return point.proceed(); } + + Method method = ((MethodSignature) point.getSignature()).getMethod(); + RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); + int limit = annotation.value(); + + // 获取上一次请求时间 Long lastRequestTime = this.repeatSubmitTicket.getTicketTimestamp(ticket); - if (lastRequestTime != null) { - Method method = ((MethodSignature) point.getSignature()).getMethod(); - RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); - int interval = Math.min(annotation.value(), RepeatSubmit.MAX_INTERVAL); - if (System.currentTimeMillis() < lastRequestTime + interval) { - // 提交频繁 - return ResponseDTO.error(UserErrorCode.REPEAT_SUBMIT); - } + // 校验是否限制时间内重复提交 + if (lastRequestTime != null && System.currentTimeMillis() < lastRequestTime + limit) { + return ResponseDTO.error(UserErrorCode.REPEAT_SUBMIT); } + + // 执行 Object obj = null; try { - // 先给 ticket 设置在执行中 + // 给 ticket 设置在执行中 this.repeatSubmitTicket.putTicket(ticket); + // 执行 obj = point.proceed(); } catch (Throwable throwable) { log.error("", throwable); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java index 8191b948..7469ba68 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java @@ -21,13 +21,7 @@ public @interface RepeatSubmit { /** * 重复提交间隔时间/毫秒 - * - * @return */ int value() default 300; - /** - * 最长间隔30s - */ - int MAX_INTERVAL = 30000; } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java index bfe17c70..bc2f8e60 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java @@ -9,11 +9,11 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public abstract class AbstractRepeatSubmitTicket { - private Function ticketFunction; + private final Function ticketFunction; public AbstractRepeatSubmitTicket(Function ticketFunction) { @@ -23,9 +23,6 @@ public abstract class AbstractRepeatSubmitTicket { /** * 获取凭证 - * - * @param ticketToken - * @return */ public String getTicket(String ticketToken) { return this.ticketFunction.apply(ticketToken); @@ -33,24 +30,13 @@ public abstract class AbstractRepeatSubmitTicket { /** * 获取凭证 时间戳 - * - * @param ticket - * @return */ public abstract Long getTicketTimestamp(String ticket); /** * 设置本次请求时间 - * - * @param ticket */ public abstract void putTicket(String ticket); - /** - * 移除凭证 - * - * @param ticket - */ - public abstract void removeTicket(String ticket); } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java index ef531c49..a2070a34 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java @@ -14,7 +14,7 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { @@ -23,9 +23,9 @@ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { * 默认缓存时间 * 初始大小为:100万 */ - private static Cache cache = Caffeine.newBuilder() + private static final Cache cache = Caffeine.newBuilder() .maximumSize(100 * 10000) - .expireAfterWrite(RepeatSubmit.MAX_INTERVAL, TimeUnit.MILLISECONDS).build(); + .expireAfterWrite(300 * 1000L, TimeUnit.MILLISECONDS).build(); public RepeatSubmitCaffeineTicket(Function ticketFunction) { @@ -42,9 +42,4 @@ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { public void putTicket(String ticket) { cache.put(ticket, System.currentTimeMillis()); } - - @Override - public void removeTicket(String ticket) { - cache.invalidate(ticket); - } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java index 34b89b3a..cb1404df 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java @@ -13,11 +13,11 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { - private ValueOperations redisValueOperations; + private final ValueOperations redisValueOperations; public RepeatSubmitRedisTicket(ValueOperations redisValueOperations, Function ticketFunction) { @@ -27,12 +27,8 @@ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { @Override public Long getTicketTimestamp(String ticket) { - Long timeStamp = System.currentTimeMillis(); - boolean setFlag = redisValueOperations.setIfAbsent(ticket, String.valueOf(timeStamp), RepeatSubmit.MAX_INTERVAL, TimeUnit.MILLISECONDS); - if (!setFlag) { - timeStamp = Long.valueOf(redisValueOperations.get(ticket)); - } - return timeStamp; + String ticketLastTime = redisValueOperations.get(ticket); + return ticketLastTime == null ? null : Long.valueOf(ticketLastTime); } @Override @@ -41,8 +37,4 @@ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { this.getTicketTimestamp(ticket); } - @Override - public void removeTicket(String ticket) { - redisValueOperations.getOperations().delete(ticket); - } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java index cd5cf659..587dd437 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface LoginFailDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java index 8b424eab..77dae296 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java @@ -9,7 +9,6 @@ import org.springframework.stereotype.Component; import java.util.List; @Mapper -@Component public interface PasswordLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java index df219c0c..9ecfd757 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityFileService.java @@ -73,8 +73,8 @@ public class SecurityFileService { // 文件类型安全检测 if (level3ProtectConfigService.isFileDetectFlag()) { String fileType = getFileMimeType(file); - if(ALLOWED_MIME_TYPES.stream() - .noneMatch(allowedType -> matchesMimeType(fileType, allowedType))){ + if (ALLOWED_MIME_TYPES.stream() + .noneMatch(allowedType -> matchesMimeType(fileType, allowedType))) { return ResponseDTO.userErrorParam("禁止上传此文件类型"); } } @@ -87,13 +87,12 @@ public class SecurityFileService { * * @param file 要检查的文件 * @return 文件的 MIME 类型 - * */ public static String getFileMimeType(MultipartFile file) { try { TikaConfig tika = new TikaConfig(); Metadata metadata = new Metadata(); - metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, file.getOriginalFilename()); + metadata.set(TikaCoreProperties.RESOURCE_NAME_KEY, file.getOriginalFilename()); TikaInputStream stream = TikaInputStream.get(file.getInputStream()); MediaType mimetype = tika.getDetector().detect(stream, metadata); return mimetype.toString(); @@ -106,8 +105,8 @@ public class SecurityFileService { /** * 检查文件的 MIME 类型是否与指定的MIME 类型匹配(支持通配符) * - * @param fileType 文件的 MIME 类型 - * @param mimetype MIME 类型(支持通配符) + * @param fileType 文件的 MIME 类型 + * @param mimetype MIME 类型(支持通配符) * @return 是否匹配 */ private static boolean matchesMimeType(String fileType, String mimetype) { diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java index 167deb0f..3cd83058 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/service/SecurityPasswordService.java @@ -38,7 +38,6 @@ public class SecurityPasswordService { private static final int PASSWORD_LENGTH = 8; - @Resource private PasswordLogDao passwordLogDao; @@ -151,8 +150,8 @@ public class SecurityPasswordService { /** * 校验密码是否匹配 */ - public static Boolean matchesPwd( String password, String encodedPassword){ - return ARGON2_PASSWORD_ENCODER.matches( password, encodedPassword); + public static Boolean matchesPwd(String password, String encodedPassword) { + return ARGON2_PASSWORD_ENCODER.matches(password, encodedPassword); } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java index b54a7f2a..6e3303b2 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java @@ -18,7 +18,6 @@ import java.time.LocalDateTime; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface SerialNumberDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java index 1f665a19..f363cd69 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface SerialNumberRecordDao extends BaseMapper { /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm index a4bd167f..374c374a 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm @@ -18,7 +18,6 @@ import org.springframework.stereotype.Component; */ @Mapper -@Component public interface ${name.upperCamel}Dao extends BaseMapper<${name.upperCamel}Entity> { /** @@ -37,14 +36,14 @@ public interface ${name.upperCamel}Dao extends BaseMapper<${name.upperCamel}Enti /** * 更新删除状态 */ - long updateDeleted(@Param("${primaryKeyFieldName}") ${primaryKeyJavaType} ${primaryKeyFieldName}, @Param("deletedFlag") boolean deletedFlag); + long updateDeleted(@Param("${primaryKeyFieldName}")${primaryKeyJavaType} ${primaryKeyFieldName},@Param("deletedFlag")boolean deletedFlag); #end #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") /** * 批量更新删除状态 */ - void batchUpdateDeleted(@Param("idList") List<${primaryKeyJavaType}> idList, @Param("deletedFlag") boolean deletedFlag); + void batchUpdateDeleted(@Param("idList")List<${primaryKeyJavaType}> idList,@Param("deletedFlag")boolean deletedFlag); #end #end diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm index 4a84efd0..76ebd3d5 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm @@ -17,7 +17,7 @@ public class ${name.upperCamel}VO { #foreach ($field in $fields) - ${field.apiModelProperty}$!{field.notEmpty}$!{field.dict}$!{field.file} + ${field.apiModelProperty}$!{field.notEmpty}$!{field.file} private $field.javaType $field.fieldName; #end diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm index 78b54956..e21bb2f3 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm @@ -29,15 +29,11 @@ public class ${name.upperCamel}Service { /** * 分页查询 - * - * @param queryForm - * @return */ public PageResult<${name.upperCamel}VO> queryPage(${name.upperCamel}QueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); List<${name.upperCamel}VO> list = ${name.lowerCamel}Dao.queryPage(page, queryForm); - PageResult<${name.upperCamel}VO> pageResult = SmartPageUtil.convert2PageResult(page, list); - return pageResult; + return SmartPageUtil.convert2PageResult(page, list); } #if($insertAndUpdate.isSupportInsertAndUpdate) @@ -53,8 +49,6 @@ public class ${name.upperCamel}Service { /** * 更新 * - * @param updateForm - * @return */ public ResponseDTO update(${name.upperCamel}UpdateForm updateForm) { ${name.upperCamel}Entity ${name.lowerCamel}Entity = SmartBeanUtil.copy(updateForm, ${name.upperCamel}Entity.class); @@ -67,9 +61,6 @@ public class ${name.upperCamel}Service { #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") /** * 批量删除 - * - * @param idList - * @return */ public ResponseDTO batchDelete(List<${primaryKeyJavaType}> idList) { if (CollectionUtils.isEmpty(idList)){ diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm index 9ca5cc42..90525f78 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/sql/Menu.sql.vm @@ -10,13 +10,13 @@ SET @parent_id = NULL; SELECT t_menu.menu_id INTO @parent_id FROM t_menu WHERE t_menu.menu_name = '${basic.description}'; INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '查询', 3, @parent_id, false, false, true, false, '${name.lowerCamel}:query', 1, @parent_id, 1 ); +VALUES ( '查询', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:query', 1, @parent_id, 1 ); INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '添加', 3, @parent_id, false, false, true, false, '${name.lowerCamel}:add', 1, @parent_id, 1 ); +VALUES ( '添加', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:add', 1, @parent_id, 1 ); INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '更新', 3, @parent_id, false, false, true, false, '${name.lowerCamel}:update', 1, @parent_id, 1 ); +VALUES ( '更新', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:update', 1, @parent_id, 1 ); INSERT INTO t_menu ( menu_name, menu_type, parent_id, frame_flag, cache_flag, visible_flag, disabled_flag, api_perms, perms_type, context_menu_id, create_user_id ) -VALUES ( '删除', 3, @parent_id, false, false, true, false, '${name.lowerCamel}:delete', 1, @parent_id, 1 ); +VALUES ( '删除', 3, @parent_id, false, true, true, false, '${name.lowerCamel}:delete', 1, @parent_id, 1 ); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm index 7567a12e..336d14d7 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/form.vue.vm @@ -48,7 +48,7 @@ #end #if($field.frontComponent == "DictSelect") - + #end #if($field.frontComponent == "Date") @@ -106,7 +106,7 @@ #end #if($field.frontComponent == "DictSelect") - + #end #if($field.frontComponent == "Date") diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm index 01a8b8b5..f23fa092 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/js/list.vue.vm @@ -22,7 +22,7 @@ #end #if($field.queryTypeEnum == "Dict") - + #end #if($field.queryTypeEnum == "Enum") diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictDataMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictDataMapper.xml new file mode 100644 index 00000000..b29468de --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictDataMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml deleted file mode 100644 index 7e98acf9..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - update t_dict_key set deleted_flag = #{deletedFlag} where dict_key_id in - - #{item} - - - - - - - - - - \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictMapper.xml new file mode 100644 index 00000000..ef58108b --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictMapper.xml @@ -0,0 +1,45 @@ + + + + + + + t_dict.dict_id, + t_dict.dict_name, + t_dict.dict_code, + t_dict.remark, + t_dict.disabled_flag, + t_dict.create_time, + t_dict.update_time + + + + + + + + + diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml deleted file mode 100644 index 1aecdc4f..00000000 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/DictValueMapper.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - update t_dict_value set deleted_flag = #{deletedFlag} where dict_value_id in - - #{item} - - - - - - - - - - - \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml index db34a5ed..1cc90cb0 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml @@ -9,7 +9,7 @@ AND ( INSTR(feedback_content,#{query.searchWord}) - OR INSTR(create_name,#{query.searchWord}) + OR INSTR(user_name,#{query.searchWord}) ) diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/prod/sa-base.yaml b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/prod/sa-base.yaml index 9acd6717..85f54951 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/prod/sa-base.yaml +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/prod/sa-base.yaml @@ -39,7 +39,7 @@ spring: host: smtp.163.com port: 465 username: lab1024@163.com - password: 1024lab + password: LAB1024LAB properties: mail: smtp: diff --git a/smart-admin-api-java8-springboot2/pom.xml b/smart-admin-api-java8-springboot2/pom.xml index fee18e62..d5e0c569 100644 --- a/smart-admin-api-java8-springboot2/pom.xml +++ b/smart-admin-api-java8-springboot2/pom.xml @@ -50,7 +50,7 @@ 0.9.1 0.9.0 3.1 - 1.37.0 + 1.41.0 2.7.0 1.80 2.13.4 diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java index 46d67349..61d7f7f4 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/interceptor/AdminInterceptor.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.interceptor; import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.exception.SaTokenException; import cn.dev33.satoken.stp.StpUtil; +import cn.dev33.satoken.strategy.SaAnnotationStrategy; import cn.dev33.satoken.strategy.SaStrategy; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; @@ -83,7 +84,7 @@ public class AdminInterceptor implements HandlerInterceptor { // --------------- 第三步: 校验 权限 --------------- SmartRequestUtil.setRequestUser(requestEmployee); - if (SaStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { + if (SaAnnotationStrategy.instance.isAnnotationPresent.apply(method, SaIgnore.class)) { return true; } @@ -92,7 +93,7 @@ public class AdminInterceptor implements HandlerInterceptor { return true; } - SaStrategy.instance.checkMethodAnnotation.accept(method); + SaAnnotationStrategy.instance.checkMethodAnnotation.accept(method); } catch (SaTokenException e) { /* diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java deleted file mode 100644 index 959045d1..00000000 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/listener/AdminStartupRunner.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lab1024.sa.admin.listener; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.boot.CommandLineRunner; -import org.springframework.stereotype.Component; - -/** - * admin 应用启动加载 - * - * @Author 1024创新实验室-主任:卓大 - * @Date 2021-08-26 18:46:32 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Slf4j -@Component -public class AdminStartupRunner implements CommandLineRunner { - - - @Override - public void run(String... args) { - } -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java index fbed2e96..c107b26a 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/dao/CategoryDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface CategoryDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java index 83933a1d..b8d0a775 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/entity/CategoryEntity.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import net.lab1024.sa.admin.module.business.category.constant.CategoryTypeEnum; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -15,11 +16,13 @@ import java.time.LocalDateTime; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data @TableName("t_category") -public class CategoryEntity { +public class CategoryEntity implements Serializable { + + private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Long categoryId; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java index 3c55b658..f847b40c 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/category/domain/vo/CategoryTreeVO.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.business.category.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.util.List; /** @@ -12,10 +13,12 @@ import java.util.List; * @Date 2021/08/05 21:26:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data -public class CategoryTreeVO { +public class CategoryTreeVO implements Serializable { + + private static final long serialVersionUID = 1L; @Schema(description = "类目id") private Long categoryId; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java index 148a685d..932f4807 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/dao/GoodsDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface GoodsDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java index cea581f1..e4d69450 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsAddForm.java @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; -import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer; +import net.lab1024.sa.base.common.json.deserializer.DictDataDeserializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; @@ -39,7 +39,7 @@ public class GoodsAddForm { @Schema(description = "产地") @NotBlank(message = "产地 不能为空 ") - @JsonDeserialize(using = DictValueVoDeserializer.class) + @JsonDeserialize(using = DictDataDeserializer.class) private String place; @Schema(description = "商品价格") diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java index 6f61e100..7f9cc0e9 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/form/GoodsQueryForm.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; import net.lab1024.sa.base.common.domain.PageParam; -import net.lab1024.sa.base.common.json.deserializer.DictValueVoDeserializer; +import net.lab1024.sa.base.common.json.deserializer.DictDataDeserializer; import net.lab1024.sa.base.common.swagger.SchemaEnum; import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; import org.hibernate.validator.constraints.Length; @@ -34,7 +34,7 @@ public class GoodsQueryForm extends PageParam { private Integer goodsStatus; @Schema(description = "产地") - @JsonDeserialize(using = DictValueVoDeserializer.class) + @JsonDeserialize(using = DictDataDeserializer.class) private String place; @Schema(description = "上架状态") diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index 24f07738..191965f9 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java @@ -1,6 +1,5 @@ package net.lab1024.sa.admin.module.business.goods.domain.vo; -import com.fasterxml.jackson.databind.annotation.JsonSerialize; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import net.lab1024.sa.admin.module.business.goods.constant.GoodsStatusEnum; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java index 8da001d5..870890c3 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/service/GoodsService.java @@ -25,7 +25,6 @@ import net.lab1024.sa.base.common.util.SmartEnumUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerTypeEnum; import net.lab1024.sa.base.module.support.datatracer.service.DataTracerService; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; import net.lab1024.sa.base.module.support.dict.service.DictService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; @@ -60,7 +59,7 @@ public class GoodsService { private DataTracerService dataTracerService; @Resource - private DictCacheService dictCacheService; + private DictService dictService; /** * 添加商品 @@ -194,13 +193,13 @@ public class GoodsService { */ public List getAllGoods() { List goodsEntityList = goodsDao.selectList(null); - String keyCode="GODOS_PLACE"; + String dictCode = "GOODS_PLACE"; return goodsEntityList.stream() .map(e -> GoodsExcelVO.builder() .goodsStatus(SmartEnumUtil.getEnumDescByValue(e.getGoodsStatus(), GoodsStatusEnum.class)) .categoryName(categoryQueryService.queryCategoryName(e.getCategoryId())) - .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictCacheService.selectValueNameByValueCode(keyCode,code)).collect(Collectors.joining(","))) + .place(Arrays.stream(e.getPlace().split(",")).map(code -> dictService.getDictDataLabel(dictCode, code)).collect(Collectors.joining(","))) .price(e.getPrice()) .goodsName(e.getGoodsName()) .remark(e.getRemark()) diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java index bc508070..f553221c 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface BankDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java index ee358cb3..bde94996 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseDao.java @@ -23,7 +23,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface EnterpriseDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java index d27d392d..e73a493e 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/dao/EnterpriseEmployeeDao.java @@ -22,7 +22,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface EnterpriseEmployeeDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java index 1336fe5f..68c8d9a9 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface InvoiceDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java index f6c5060f..c3609d61 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeDao.java @@ -27,7 +27,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface NoticeDao extends BaseMapper { // ================================= 数据范围相关 【子表】 ================================= diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java index b08e5289..7f7ee5ca 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/notice/dao/NoticeTypeDao.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface NoticeTypeDao extends BaseMapper { } diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java index 3103af3f..4924d5a5 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/dao/DepartmentDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface DepartmentDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java index 3566f877..c973a959 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/domain/vo/DepartmentVO.java @@ -3,6 +3,7 @@ package net.lab1024.sa.admin.module.system.department.domain.vo; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.time.LocalDateTime; /** @@ -12,10 +13,12 @@ import java.time.LocalDateTime; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data -public class DepartmentVO { +public class DepartmentVO implements Serializable { + + private static final long serialVersionUID = 1L; @Schema(description = "部门id") private Long departmentId; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java index e5bc28d5..1b02fadf 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/dao/EmployeeDao.java @@ -22,7 +22,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface EmployeeDao extends BaseMapper { /** * 查询员工列表 diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java index ca6c40a9..9193530e 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/service/LoginService.java @@ -169,12 +169,12 @@ public class LoginService implements StpInterface { // 验证账号状态 if (employeeEntity.getDeletedFlag()) { - saveLoginLog(employeeEntity, ip, userAgent, "账号已删除", LoginLogResultEnum.LOGIN_FAIL); + saveLoginLog(employeeEntity, ip, userAgent, "账号已删除", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum); return ResponseDTO.userErrorParam("您的账号已被删除,请联系工作人员!"); } if (employeeEntity.getDisabledFlag()) { - saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL); + saveLoginLog(employeeEntity, ip, userAgent, "账号已禁用", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum); return ResponseDTO.userErrorParam("您的账号已被禁用,请联系工作人员!"); } @@ -208,9 +208,9 @@ public class LoginService implements StpInterface { } // 密码错误 - if ( !SecurityPasswordService.matchesPwd(requestPassword,employeeEntity.getLoginPwd()) ) { + if (!SecurityPasswordService.matchesPwd(requestPassword, employeeEntity.getLoginPwd())) { // 记录登录失败 - saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL); + saveLoginLog(employeeEntity, ip, userAgent, "密码错误", LoginLogResultEnum.LOGIN_FAIL, loginDeviceEnum); // 记录等级保护次数 String msg = securityLoginService.recordLoginFail(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE, employeeEntity.getLoginName(), loginFailEntityResponseDTO.getData()); return msg == null ? ResponseDTO.userErrorParam("登录名或密码错误!") : ResponseDTO.error(UserErrorCode.LOGIN_FAIL_WILL_LOCK, msg); @@ -239,7 +239,7 @@ public class LoginService implements StpInterface { LoginResultVO loginResultVO = getLoginResult(requestEmployee, token); //保存登录记录 - saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : loginDeviceEnum.getDesc(), LoginLogResultEnum.LOGIN_SUCCESS); + saveLoginLog(employeeEntity, ip, userAgent, superPasswordFlag ? "万能密码登录" : StringConst.EMPTY, LoginLogResultEnum.LOGIN_SUCCESS, loginDeviceEnum); // 设置 token loginResultVO.setToken(token); @@ -413,7 +413,7 @@ public class LoginService implements StpInterface { /** * 保存登录日志 */ - private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result) { + private void saveLoginLog(EmployeeEntity employeeEntity, String ip, String userAgent, String remark, LoginLogResultEnum result, LoginDeviceEnum loginDeviceEnum) { LoginLogEntity loginEntity = LoginLogEntity.builder() .userId(employeeEntity.getEmployeeId()) .userType(UserTypeEnum.ADMIN_EMPLOYEE.getValue()) @@ -422,6 +422,7 @@ public class LoginService implements StpInterface { .loginIp(ip) .loginIpRegion(SmartIpUtil.getRegion(ip)) .remark(remark) + .loginDevice(loginDeviceEnum.getDesc()) .loginResult(result.getValue()) .createTime(LocalDateTime.now()) .build(); diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java index d57d17be..e2cd1b5a 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/menu/dao/MenuDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface MenuDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java index fbd9b9b3..5fd307a5 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/position/dao/PositionDao.java @@ -19,7 +19,6 @@ import org.springframework.stereotype.Component; */ @Mapper -@Component public interface PositionDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java index e05b2998..9cb9b1e4 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDao.java @@ -16,7 +16,6 @@ import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEntity; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java index 3ffbc329..16ddf39a 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleDataScopeDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleDataScopeDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java index 3c2cdd0a..71de64cc 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleEmployeeDao.java @@ -25,7 +25,6 @@ import java.util.Set; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleEmployeeDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java index f65361ca..dd11d845 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/dao/RoleMenuDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface RoleMenuDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java index 9696e5ec..2c318c8a 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminCacheController.java @@ -1,8 +1,8 @@ package net.lab1024.sa.admin.module.system.support; import cn.dev33.satoken.annotation.SaCheckPermission; -import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import net.lab1024.sa.base.common.controller.SupportBaseController; import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.constant.SwaggerTagConst; diff --git a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java index c6d71678..17d6e8a5 100644 --- a/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java +++ b/smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/support/AdminDictController.java @@ -1,33 +1,31 @@ package net.lab1024.sa.admin.module.system.support; import cn.dev33.satoken.annotation.SaCheckPermission; -import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; import net.lab1024.sa.base.common.controller.SupportBaseController; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.ValidateList; import net.lab1024.sa.base.constant.SwaggerTagConst; import net.lab1024.sa.base.module.support.dict.domain.form.*; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO; import net.lab1024.sa.base.module.support.dict.service.DictService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; /** - * 字典 + * 数据字典 Controller * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Tag(name = SwaggerTagConst.Support.DICT) @RestController @@ -36,60 +34,106 @@ public class AdminDictController extends SupportBaseController { @Resource private DictService dictService; - @Resource - private DictCacheService dictCacheService; + // ------------------- 获取全部数据 ------------------- - @Operation(summary = "分页查询数据字典KEY - @author 罗伊") - @PostMapping("/dict/key/query") - public ResponseDTO> keyQuery(@Valid @RequestBody DictKeyQueryForm queryForm) { - return dictService.keyQuery(queryForm); + @Operation(summary = "获取全部数据(供前端缓存使用) @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/getAllDictData") + public ResponseDTO> getAll() { + return ResponseDTO.ok(dictService.getAll()); } - - @Operation(summary = "数据字典KEY-添加- @author 罗伊") - @PostMapping("/dict/key/add") - @SaCheckPermission("support:dict:add") - public ResponseDTO keyAdd(@Valid @RequestBody DictKeyAddForm keyAddForm) { - return dictService.keyAdd(keyAddForm); + @Operation(summary = "获取所有字典code @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/getAllDict") + public ResponseDTO> getAllDict() { + return ResponseDTO.ok(dictService.getAllDict()); } - @Operation(summary = "数据字典缓存-刷新- @author 罗伊") - @GetMapping("/dict/cache/refresh") - @SaCheckPermission("support:dict:refresh") - public ResponseDTO cacheRefresh() { - return dictCacheService.cacheRefresh(); + // ------------------- 字典 ------------------- + + @Operation(summary = "分页查询 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/queryPage") + @SaCheckPermission("dict:query") + public ResponseDTO> queryPage(@RequestBody @Valid DictQueryForm queryForm) { + return ResponseDTO.ok(dictService.queryPage(queryForm)); } - @Operation(summary = "数据字典Value-添加- @author 罗伊") - @PostMapping("/dict/value/add") - public ResponseDTO valueAdd(@Valid @RequestBody DictValueAddForm valueAddForm) { - return dictService.valueAdd(valueAddForm); + @Operation(summary = "添加 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/add") + @SaCheckPermission("dict:add") + public ResponseDTO add(@RequestBody @Valid DictAddForm addForm) { + return dictService.add(addForm); } - @Operation(summary = "数据字典KEY-更新- @author 罗伊") - @PostMapping("/dict/key/edit") - @SaCheckPermission("support:dict:edit") - public ResponseDTO keyEdit(@Valid @RequestBody DictKeyUpdateForm keyUpdateForm) { - return dictService.keyEdit(keyUpdateForm); + @Operation(summary = "更新 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/update") + @SaCheckPermission("dict:update") + public ResponseDTO update(@RequestBody @Valid DictUpdateForm updateForm) { + return dictService.update(updateForm); } - @Operation(summary = "数据字典Value-更新- @author 罗伊") - @PostMapping("/dict/value/edit") - public ResponseDTO valueEdit(@Valid @RequestBody DictValueUpdateForm valueUpdateForm) { - return dictService.valueEdit(valueUpdateForm); + @Operation(summary = "字典数据 启用/禁用 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/updateDisabled/{dictId}") + @SaCheckPermission("dictData:updateDisabled") + public ResponseDTO updateDisabled(@PathVariable Long dictId) { + return dictService.updateDisabled(dictId); } - @Operation(summary = "数据字典KEY-删除- @author 罗伊") - @PostMapping("/dict/key/delete") - @SaCheckPermission("support:dict:delete") - public ResponseDTO keyDelete(@RequestBody List keyIdList) { - return dictService.keyDelete(keyIdList); + @Operation(summary = "批量删除 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/batchDelete") + @SaCheckPermission("dict:delete") + public ResponseDTO batchDelete(@RequestBody ValidateList idList) { + return dictService.batchDelete(idList); } - @Operation(summary = "数据字典Value-删除- @author 罗伊") - @PostMapping("/dict/value/delete") - public ResponseDTO valueDelete(@RequestBody List valueIdList) { - return dictService.valueDelete(valueIdList); + @Operation(summary = "单个删除 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/delete/{dictId}") + @SaCheckPermission("dict:delete") + public ResponseDTO batchDelete(@PathVariable Long dictId) { + return dictService.delete(dictId); + } + + // ------------------- 字典数据 ------------------- + + @Operation(summary = "字典数据 分页查询 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/dictData/queryDictData/{dictId}") + @SaCheckPermission("dictData:query") + public ResponseDTO> queryDictData(@PathVariable Long dictId) { + return ResponseDTO.ok(dictService.queryDictData(dictId)); + } + + @Operation(summary = "字典数据 启用/禁用 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/dictData/updateDisabled/{dictDataId}") + @SaCheckPermission("dictData:updateDisabled") + public ResponseDTO updateDictDataDisabled(@PathVariable Long dictDataId) { + return dictService.updateDictDataDisabled(dictDataId); + } + + @Operation(summary = "字典数据 添加 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/dictData/add") + @SaCheckPermission("dictData:add") + public ResponseDTO addDictData(@RequestBody @Valid DictDataAddForm addForm) { + return dictService.addDictData(addForm); + } + + @Operation(summary = "字典数据 更新 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/dictData/update") + @SaCheckPermission("dictData:update") + public ResponseDTO updateDictData(@RequestBody @Valid DictDataUpdateForm updateForm) { + return dictService.updateDictData(updateForm); + } + + @Operation(summary = "字典数据 批量删除 @author 1024创新实验室-主任-卓大") + @PostMapping("/dict/dictData/batchDelete") + @SaCheckPermission("dictData:delete") + public ResponseDTO batchDeleteDictData(@RequestBody ValidateList idList) { + return dictService.batchDeleteDictData(idList); + } + + @Operation(summary = "字典数据 单个删除 @author 1024创新实验室-主任-卓大") + @GetMapping("/dict/dictData/delete/{dictDataId}") + @SaCheckPermission("dictData:delete") + public ResponseDTO deleteDictData(@PathVariable Long dictDataId) { + return dictService.deleteDictData(dictDataId); } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java index 4449af25..6f0a28d5 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/controller/SupportBaseController.java @@ -3,6 +3,7 @@ package net.lab1024.sa.base.common.controller; import net.lab1024.sa.base.constant.SwaggerTagConst; import org.springframework.web.bind.annotation.RequestMapping; + /** * 支撑类业务路由基类 * diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataDeserializer.java similarity index 77% rename from smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java rename to smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataDeserializer.java index 7631db6a..33690458 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictValueVoDeserializer.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataDeserializer.java @@ -1,18 +1,15 @@ package net.lab1024.sa.base.common.json.deserializer; import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonNode; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; /** * 字典反序列化 @@ -21,13 +18,13 @@ import java.util.stream.Collectors; * @Date 2022-08-12 22:17:53 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Slf4j -public class DictValueVoDeserializer extends JsonDeserializer { +public class DictDataDeserializer extends JsonDeserializer { @Override - public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { + public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { List list = new ArrayList<>(); ObjectCodec objectCodec = jsonParser.getCodec(); JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java index dc45634c..bca8077d 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartResponseUtil.java @@ -11,6 +11,9 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + +import static cn.hutool.core.util.CharsetUtil.UTF_8; /** * 返回工具栏 @@ -27,8 +30,8 @@ public class SmartResponseUtil { public static void write(HttpServletResponse response, ResponseDTO responseDTO) { // 重置response - response.setContentType("application/json"); - response.setCharacterEncoding("utf-8"); + response.setContentType(MediaType.APPLICATION_JSON_VALUE); + response.setCharacterEncoding(UTF_8); try { response.getWriter().write(JSON.toJSONString(responseDTO)); @@ -44,20 +47,20 @@ public class SmartResponseUtil { } public static void setDownloadFileHeader(HttpServletResponse response, String fileName, Long fileSize) { - response.setCharacterEncoding("utf-8"); - try { - if (fileSize != null) { - response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(fileSize)); - } + response.setCharacterEncoding(UTF_8); + if (fileSize != null) { + response.setHeader(HttpHeaders.CONTENT_LENGTH, String.valueOf(fileSize)); + } - if (SmartStringUtil.isNotEmpty(fileName)) { - response.setHeader(HttpHeaders.CONTENT_TYPE, MediaTypeFactory.getMediaType(fileName).orElse(MediaType.APPLICATION_OCTET_STREAM) + ";charset=utf-8"); - response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20")); - response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION); + if (SmartStringUtil.isNotEmpty(fileName)) { + response.setHeader(HttpHeaders.CONTENT_TYPE, MediaTypeFactory.getMediaType(fileName).orElse(MediaType.APPLICATION_OCTET_STREAM) + ";charset=utf-8"); + try { + response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=" + URLEncoder.encode(fileName, UTF_8).replaceAll("\\+", "%20")); + } catch (UnsupportedEncodingException e) { + log.error(e.getMessage(), e); + throw new RuntimeException(e); } - } catch (UnsupportedEncodingException e) { - log.error(e.getMessage(), e); - throw new RuntimeException(e); + response.setHeader(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, HttpHeaders.CONTENT_DISPOSITION); } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java new file mode 100644 index 00000000..bf6de16a --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/CacheConfig.java @@ -0,0 +1,35 @@ +package net.lab1024.sa.base.config; + +import net.lab1024.sa.base.module.support.cache.CacheService; +import net.lab1024.sa.base.module.support.cache.CaffeineCacheServiceImpl; +import net.lab1024.sa.base.module.support.cache.RedisCacheServiceImpl; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * 缓存配置 + * + * @author zhoumingfa + * @date 2025/03/28 + */ +@Configuration +public class CacheConfig { + + private static final String REDIS_CACHE = "redis"; + private static final String CAFFEINE_CACHE = "caffeine"; + + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = REDIS_CACHE) + public CacheService redisCacheService() { + return new RedisCacheServiceImpl(); + } + + @Bean + @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = CAFFEINE_CACHE) + public CacheService caffeineCacheService() { + return new CaffeineCacheServiceImpl(); + } + +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java index f1eea694..196510fc 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/DataSourceConfig.java @@ -145,7 +145,7 @@ public class DataSourceConfig { if (dataScopePlugin != null) { pluginsList.add(dataScopePlugin); } - factoryBean.setPlugins(pluginsList.toArray(new Interceptor[pluginsList.size()])); + factoryBean.setPlugins(pluginsList.toArray(new Interceptor[0])); // 添加字段自动填充处理 factoryBean.setGlobalConfig(new GlobalConfig().setBanner(false).setMetaObjectHandler(new MybatisPlusFillHandler())); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java index ca770124..a929cca6 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/FileConfig.java @@ -25,7 +25,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; * @Date 2019-09-02 23:21:10 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Data @Configuration @@ -68,7 +68,7 @@ public class FileConfig implements WebMvcConfigurer { * @return */ @Bean - @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = "cloud") + @ConditionalOnProperty(prefix = "file.storage", name = {"mode"}, havingValue = MODE_CLOUD) public AmazonS3 initAmazonS3() { ClientConfiguration clientConfig = new ClientConfiguration(); clientConfig.setProtocol(Protocol.HTTPS); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java index c62caa51..52733fb9 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/config/RepeatSubmitConfig.java @@ -4,8 +4,12 @@ import net.lab1024.sa.base.common.constant.StringConst; import net.lab1024.sa.base.common.util.SmartRequestUtil; import net.lab1024.sa.base.module.support.repeatsubmit.RepeatSubmitAspect; import net.lab1024.sa.base.module.support.repeatsubmit.ticket.RepeatSubmitCaffeineTicket; +import net.lab1024.sa.base.module.support.repeatsubmit.ticket.RepeatSubmitRedisTicket; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.core.ValueOperations; + +import javax.annotation.Resource; /** * 重复提交配置 @@ -14,14 +18,17 @@ import org.springframework.context.annotation.Configuration; * @Date 2021/10/9 18:47 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Configuration public class RepeatSubmitConfig { + @Resource + private ValueOperations valueOperations; + @Bean public RepeatSubmitAspect repeatSubmitAspect() { - RepeatSubmitCaffeineTicket caffeineTicket = new RepeatSubmitCaffeineTicket(this::ticket); + RepeatSubmitRedisTicket caffeineTicket = new RepeatSubmitRedisTicket(valueOperations, this::ticket); return new RepeatSubmitAspect(caffeineTicket); } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java index 852f6272..17aa2d22 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/constant/CacheKeyConst.java @@ -7,8 +7,14 @@ package net.lab1024.sa.base.constant; * @Date 2022-05-30 21:22:12 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class CacheKeyConst { + public static class Dict { + + public static final String DICT_DATA = "dict_data_cache"; + + } + } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java index ea087e4d..f93908b3 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/DecryptRequestAdvice.java @@ -1,6 +1,6 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.common.util.SmartStringUtil; import net.lab1024.sa.base.module.support.apiencrypt.annotation.ApiDecrypt; @@ -25,7 +25,7 @@ import java.lang.reflect.Type; * @Date 2023/10/21 11:41:46 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室,Since 2012 + * @Copyright 1024创新实验室,Since 2012 */ @Slf4j @@ -37,16 +37,19 @@ public class DecryptRequestAdvice extends RequestBodyAdviceAdapter { @Resource private ApiEncryptService apiEncryptService; + @Resource + private ObjectMapper objectMapper; + @Override public boolean supports(MethodParameter methodParameter, Type targetType, Class> converterType) { return methodParameter.hasMethodAnnotation(ApiDecrypt.class) || methodParameter.hasParameterAnnotation(ApiDecrypt.class) || methodParameter.getContainingClass().isAnnotationPresent(ApiDecrypt.class); } @Override - public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { + public HttpInputMessage beforeBodyRead(HttpInputMessage inputMessage, MethodParameter parameter, Type targetType, Class> converterType) { try { String bodyStr = IOUtils.toString(inputMessage.getBody(), ENCODING); - ApiEncryptForm apiEncryptForm = JSONObject.parseObject(bodyStr, ApiEncryptForm.class); + ApiEncryptForm apiEncryptForm = objectMapper.readValue(bodyStr, ApiEncryptForm.class); if (SmartStringUtil.isEmpty(apiEncryptForm.getEncryptData())) { return inputMessage; } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java index d38544fc..0787609b 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/apiencrypt/advice/EncryptResponseAdvice.java @@ -1,6 +1,5 @@ package net.lab1024.sa.base.module.support.apiencrypt.advice; -import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; @@ -25,13 +24,13 @@ import javax.annotation.Resource; * @Date 2023/10/24 09:52:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室,Since 2012 + * @Copyright 1024创新实验室,Since 2012 */ @Slf4j @ControllerAdvice -public class EncryptResponseAdvice implements ResponseBodyAdvice { +public class EncryptResponseAdvice implements ResponseBodyAdvice> { @Resource private ApiEncryptService apiEncryptService; @@ -45,19 +44,18 @@ public class EncryptResponseAdvice implements ResponseBodyAdvice { } @Override - public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { - if (body.getData() == null) { + public ResponseDTO beforeBodyWrite(ResponseDTO body, MethodParameter returnType, MediaType selectedContentType, Class> selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { + if (body == null || body.getData() == null) { return body; } - String encrypt = null; try { - encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + String encrypt = apiEncryptService.encrypt(objectMapper.writeValueAsString(body.getData())); + body.setData(encrypt); + body.setDataType(DataTypeEnum.ENCRYPT.getValue()); } catch (JsonProcessingException e) { throw new RuntimeException(e); } - body.setData(encrypt); - body.setDataType(DataTypeEnum.ENCRYPT.getValue()); return body; } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java index 16326aa0..ef6255c7 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CacheService.java @@ -1,74 +1,34 @@ package net.lab1024.sa.base.module.support.cache; -import com.google.common.collect.Lists; -import net.lab1024.sa.base.constant.ReloadConst; -import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; -import org.springframework.cache.caffeine.CaffeineCache; -import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.stereotype.Service; -import javax.annotation.Resource; -import java.util.Collection; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; /** - * 缓存操作 + * 缓存服务 * * @Author 1024创新实验室: 罗伊 * @Date 2021/10/11 20:07 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Service -public class CacheService { - - @Resource - private CaffeineCacheManager caffeineCacheManager; +public interface CacheService { /** * 获取所有缓存名称 - * */ - public List cacheNames() { - return Lists.newArrayList(caffeineCacheManager.getCacheNames()); - } + List cacheNames(); /** - * 某个缓存下的所有key - * + * 某个缓存下的所有 key */ - public List cacheKey(String cacheName) { - CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); - if (cache == null) { - return Lists.newArrayList(); - } - Set cacheKey = cache.getNativeCache().asMap().keySet(); - return cacheKey.stream().map(e -> e.toString()).collect(Collectors.toList()); - } + List cacheKey(String cacheName); /** - * 移除某个key - * + * 移除某个 key */ + void removeCache(String cacheName); - public void removeCache(String cacheName) { - CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); - if (cache != null) { - cache.clear(); - } - } - - @SmartReload(ReloadConst.CACHE_SERVICE) - public void clearAllCache() { - Collection cacheNames = caffeineCacheManager.getCacheNames(); - for (String name : cacheNames) { - CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(name); - if (cache != null) { - cache.clear(); - } - } - } -} +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java new file mode 100644 index 00000000..4a411211 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/CaffeineCacheServiceImpl.java @@ -0,0 +1,71 @@ +package net.lab1024.sa.base.module.support.cache; + +import com.google.common.collect.Lists; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import org.springframework.cache.caffeine.CaffeineCache; +import org.springframework.cache.caffeine.CaffeineCacheManager; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * caffeine 缓存实现 + * + * @Author 1024创新实验室: 罗伊 + * @Date 2021/10/11 20:07 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +public class CaffeineCacheServiceImpl implements CacheService { + + @Resource + private CaffeineCacheManager caffeineCacheManager; + + /** + * 获取所有缓存名称 + */ + @Override + public List cacheNames() { + return Lists.newArrayList(caffeineCacheManager.getCacheNames()); + } + + /** + * 某个缓存下的所有 key + */ + @Override + public List cacheKey(String cacheName) { + CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); + if (cache == null) { + return Lists.newArrayList(); + } + Set cacheKey = cache.getNativeCache().asMap().keySet(); + return cacheKey.stream().map(e -> e.toString()).collect(Collectors.toList()); + } + + /** + * 移除某个 key + */ + @Override + public void removeCache(String cacheName) { + CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(cacheName); + if (cache != null) { + cache.clear(); + } + } + + @SmartReload(ReloadConst.CACHE_SERVICE) + public void clearAllCache() { + Collection cacheNames = caffeineCacheManager.getCacheNames(); + for (String name : cacheNames) { + CaffeineCache cache = (CaffeineCache) caffeineCacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + } + } +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java new file mode 100644 index 00000000..dc6391fa --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/cache/RedisCacheServiceImpl.java @@ -0,0 +1,86 @@ +package net.lab1024.sa.base.module.support.cache; + +import cn.hutool.core.util.StrUtil; +import com.google.common.collect.Lists; +import net.lab1024.sa.base.constant.ReloadConst; +import net.lab1024.sa.base.module.support.reload.core.annoation.SmartReload; +import org.springframework.data.redis.cache.RedisCache; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.RedisConnection; +import org.springframework.data.redis.connection.RedisConnectionFactory; + +import javax.annotation.Resource; +import java.util.Collection; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * redis 缓存实现 + * + * @author zhoumingfa + * @date 2025/3/28 + */ +public class RedisCacheServiceImpl implements CacheService { + + @Resource + private RedisCacheManager redisCacheManager; + + @Resource + private RedisConnectionFactory redisConnectionFactory; + + /** + * 获取所有缓存名称 + */ + @Override + public List cacheNames() { + return Lists.newArrayList(redisCacheManager.getCacheNames()); + } + + /** + * 某个缓存下的所有 key + */ + @Override + public List cacheKey(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache == null) { + return Lists.newArrayList(); + } + // 获取 Redis 连接 + RedisConnection connection = redisConnectionFactory.getConnection(); + // 根据指定的 key 模式获取所有匹配的键 + Set keys = connection.keyCommands().keys((cacheName + ":*").getBytes()); + + if (keys != null) { + return keys.stream().map(key -> { + String redisKey = StrUtil.str(key, "utf-8"); + // 从 Redis 键中提取出最后一个冒号后面的字符串作为真正的键 + return redisKey.substring(redisKey.lastIndexOf(":") + 1); + }).collect(Collectors.toList()); + } + connection.close(); + return Lists.newArrayList(cacheName); + } + + /** + * 移除某个 key + */ + @Override + public void removeCache(String cacheName) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(cacheName); + if (cache != null) { + cache.clear(); + } + } + + @SmartReload(ReloadConst.CACHE_SERVICE) + public void clearAllCache() { + Collection cacheNames = redisCacheManager.getCacheNames(); + for (String name : cacheNames) { + RedisCache cache = (RedisCache) redisCacheManager.getCache(name); + if (cache != null) { + cache.clear(); + } + } + } +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java index 0ec0d5a7..09f72cc8 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/changelog/dao/ChangeLogDao.java @@ -20,7 +20,6 @@ import org.springframework.stereotype.Component; */ @Mapper -@Component public interface ChangeLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java index d7a53419..b9763c61 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorConfigDao.java @@ -14,7 +14,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface CodeGeneratorConfigDao extends BaseMapper { } \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java index 2b4f84a1..ab609ad1 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/dao/CodeGeneratorDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface CodeGeneratorDao { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java index cde09227..45844fed 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/backend/domain/VOVariableService.java @@ -84,14 +84,6 @@ public class VOVariableService extends CodeGenerateBaseVariableService { packageList.add("import io.swagger.v3.oas.annotations.media.Schema;"); } - - //字典 - if (isDict(field.getColumnName(), form)) { - finalFieldMap.put("dict", "\n @JsonSerialize(using = DictValueVoSerializer.class)"); - packageList.add("import com.fasterxml.jackson.databind.annotation.JsonSerialize;"); - packageList.add("import net.lab1024.sa.base.common.json.serializer.DictValueVoSerializer;"); - } - //文件上传 if (isFile(field.getColumnName(), form)) { finalFieldMap.put("file", "\n @JsonSerialize(using = FileKeyVoSerializer.class)"); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java index 77330d60..bb525b8a 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/config/ConfigDao.java @@ -19,7 +19,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface ConfigDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java index 0e65d902..6fefae21 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/annoation/DataTracerFieldDict.java @@ -12,11 +12,11 @@ import java.lang.annotation.Target; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface DataTracerFieldDict { - String keyCode() default ""; + String dictCode(); } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java index b6d3e05e..9f467a76 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/dao/DataTracerDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface DataTracerDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java index 808c7aac..9aeed115 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/datatracer/service/DataTracerChangeContentService.java @@ -15,7 +15,8 @@ import net.lab1024.sa.base.common.util.SmartStringUtil; import net.lab1024.sa.base.module.support.datatracer.annoation.*; import net.lab1024.sa.base.module.support.datatracer.constant.DataTracerConst; import net.lab1024.sa.base.module.support.datatracer.domain.bo.DataTracerContentBO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import net.lab1024.sa.base.module.support.dict.service.DictService; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.context.ApplicationContext; @@ -39,7 +40,7 @@ import java.util.concurrent.ConcurrentHashMap; * @Date 2022-07-23 19:38:52 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -48,7 +49,7 @@ public class DataTracerChangeContentService { @Resource private ApplicationContext applicationContext; @Resource - private DictCacheService dictCacheService; + private DictService dictService; /** * 字段描述缓存 */ @@ -64,7 +65,7 @@ public class DataTracerChangeContentService { * * @param oldObjectList 原始对象列表 * @param newObjectList 新的对象列表 - * @param Class类型 + * @param Class类型 * @return 变更内容 */ public String getChangeContent(List oldObjectList, List newObjectList) { @@ -143,7 +144,7 @@ public class DataTracerChangeContentService { /** * 单个对象变动内容 * - * @param oldObjectList 旧的对象列表 + * @param oldObjectList 旧的对象列表 * @param newObjectList 新的对象列表 * @return 拼接后的内容 */ @@ -163,7 +164,7 @@ public class DataTracerChangeContentService { * 获取一个对象的内容信息 * * @param objectList 对象列表 - * @param 类型 + * @param 类型 * @return 内容 */ private String getObjectListContent(List objectList) { @@ -275,7 +276,6 @@ public class DataTracerChangeContentService { /** * 获取字段值 - * */ private DataTracerContentBO getFieldValue(Field field, Object object) { Object fieldValue = ""; @@ -303,7 +303,8 @@ public class DataTracerChangeContentService { fieldContent = SmartEnumUtil.getEnumDescByValue(fieldValue, dataTracerFieldEnum.enumClass()); } } else if (dataTracerFieldDict != null) { - fieldContent = dictCacheService.selectValueNameByValueCodeSplit(dataTracerFieldDict.keyCode(), fieldValue.toString()); + DictDataVO dictData = dictService.getDictData(dataTracerFieldDict.dictCode(), fieldValue.toString()); + fieldContent = dictData == null ? fieldValue.toString() : dictData.getDataLabel(); } else if (dataTracerFieldSql != null) { fieldContent = this.getRelateDisplayValue(fieldValue, dataTracerFieldSql); } else if (fieldValue instanceof Date) { @@ -330,7 +331,6 @@ public class DataTracerChangeContentService { /** * 获取关联字段的显示值 - * */ private String getRelateDisplayValue(Object fieldValue, DataTracerFieldSql dataTracerFieldSql) { Class relateMapper = dataTracerFieldSql.relateMapper(); @@ -351,7 +351,6 @@ public class DataTracerChangeContentService { /** * 获取字段描述信息 优先 OperateField 没得话swagger判断 - * */ private String getFieldDesc(Field field) { // 根据字段名称 从缓存中查询 @@ -370,7 +369,6 @@ public class DataTracerChangeContentService { /** * 获取操作类型 - * */ private String getOperateType(Object oldObject, Object newObject) { if (oldObject == null && newObject != null) { @@ -384,7 +382,6 @@ public class DataTracerChangeContentService { /** * 校验是否进行比对 - * */ private boolean valid(Object oldObject, Object newObject) { if (oldObject == null && newObject == null) { @@ -404,7 +401,6 @@ public class DataTracerChangeContentService { /** * 校验 - * */ private boolean valid(List oldObjectList, List newObjectList) { if (CollectionUtils.isEmpty(oldObjectList) && CollectionUtils.isEmpty(newObjectList)) { @@ -429,7 +425,6 @@ public class DataTracerChangeContentService { /** * 查询 包含 file key 注解的字段 * 使用缓存 - * */ private List getField(Object obj) { // 从缓存中查询 diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java deleted file mode 100644 index 67c79c02..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/controller/DictController.java +++ /dev/null @@ -1,57 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.controller; - -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import net.lab1024.sa.base.common.controller.SupportBaseController; -import net.lab1024.sa.base.common.domain.PageResult; -import net.lab1024.sa.base.common.domain.ResponseDTO; -import net.lab1024.sa.base.constant.SwaggerTagConst; -import net.lab1024.sa.base.module.support.dict.domain.form.DictValueQueryForm; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import net.lab1024.sa.base.module.support.dict.service.DictCacheService; -import net.lab1024.sa.base.module.support.dict.service.DictService; -import org.springframework.web.bind.annotation.*; - -import javax.annotation.Resource; -import javax.validation.Valid; -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Tag(name = SwaggerTagConst.Support.DICT) -@RestController -public class DictController extends SupportBaseController { - - @Resource - private DictService dictService; - @Resource - private DictCacheService dictCacheService; - - - @Operation(summary = "查询全部字典key - @author 卓大") - @GetMapping("/dict/key/queryAll") - public ResponseDTO> queryAll() { - return ResponseDTO.ok(dictService.queryAllKey()); - } - - @Operation(summary = "分页查询数据字典value - @author 罗伊") - @PostMapping("/dict/value/query") - public ResponseDTO> valueQuery(@Valid @RequestBody DictValueQueryForm queryForm) { - return dictService.valueQuery(queryForm); - } - - @Operation(summary = "数据字典-值列表- @author 罗伊") - @GetMapping("/dict/value/list/{keyCode}") - public ResponseDTO> valueList(@PathVariable String keyCode) { - List dictValueVOList = dictCacheService.selectByKeyCode(keyCode); - return ResponseDTO.ok(dictValueVOList); - } -} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java new file mode 100644 index 00000000..b53bdf0a --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDao.java @@ -0,0 +1,36 @@ +package net.lab1024.sa.base.module.support.dict.dao; + +import java.util.List; + +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; +import net.lab1024.sa.base.module.support.dict.domain.form.DictQueryForm; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +/** + * 数据字典 Dao + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Mapper +@Component +public interface DictDao extends BaseMapper { + + /** + * 分页 查询 + */ + List queryPage(Page page, @Param("queryForm") DictQueryForm queryForm); + + /** + * 根据 dictCode 去查询 + */ + DictEntity selectByCode(@Param("code") String code); + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java new file mode 100644 index 00000000..f02492b1 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictDataDao.java @@ -0,0 +1,32 @@ +package net.lab1024.sa.base.module.support.dict.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictDataEntity; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Component; + +import java.util.Collection; +import java.util.List; + +/** + * 字典数据表 Dao + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Mapper +@Component +public interface DictDataDao extends BaseMapper { + + List queryByDictId(@Param("dictId") Long dictId); + + List selectByDictDataIds(@Param("dictDataIdList") Collection dictDataIds); + + DictDataEntity selectByDictIdAndValue(@Param("dictId") Long dictId, @Param("dataValue") String dataValue); + + List getAll(); +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java deleted file mode 100644 index 36d9dac2..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictKeyDao.java +++ /dev/null @@ -1,48 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.base.module.support.dict.domain.form.DictKeyQueryForm; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Mapper -@Component -public interface DictKeyDao extends BaseMapper { - - /** - * 查找所有未删除的自带key - */ - List selectByDeletedFlag(@Param("deletedFlag") Boolean deletedFlag); - - /** - * 逻辑删除 - * - */ - void updateDeletedFlagByIdList(@Param("dictKeyIdList") List dictKeyIdList, @Param("deletedFlag") Boolean deletedFlag); - - /** - * 分页查询 - * - */ - List query(Page page, @Param("query") DictKeyQueryForm queryForm); - - /** - * 跟进code查询 - */ - DictKeyEntity selectByCode(@Param("keyCode")String keyCode, @Param("deletedFlag") Boolean deletedFlag); -} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java deleted file mode 100644 index 2f0070a1..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/dao/DictValueDao.java +++ /dev/null @@ -1,56 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.dao; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.base.module.support.dict.domain.form.DictValueQueryForm; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; - -import java.util.List; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Mapper -@Component -public interface DictValueDao extends BaseMapper { - - /** - * 查找所有未删除的自带key - * - */ - List selectByDeletedFlag(@Param("deletedFlag") Boolean deletedFlag); - - /** - * 查找所有未删除的自带key - * - */ - List selectByDeletedFlagAndKeyId(@Param("dictKeyId") Long dictKeyId, @Param("deletedFlag") Boolean deletedFlag); - - /** - * 逻辑删除 - * - */ - void updateDeletedFlagByIdList(@Param("dictValueIdList") List dictValueIdList, @Param("deletedFlag") Boolean deletedFlag); - - /** - * 分页查询 - * - */ - List query(Page page, @Param("query") DictValueQueryForm queryForm); - - /** - * 跟进code查询 - * - */ - DictValueEntity selectByCode(@Param("dictKeyId") Long dictKeyId,@Param("valueCode") String valueCode, @Param("deletedFlag") Boolean deletedFlag); -} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictDataEntity.java similarity index 50% rename from smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java rename to smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictDataEntity.java index 303b7b85..61b25b34 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictValueEntity.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictDataEntity.java @@ -8,43 +8,52 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 字典 + * 字典数据表 实体类 * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 */ + @Data -@TableName("t_dict_value") -public class DictValueEntity { +@TableName("t_dict_data") +public class DictDataEntity { + /** + * 字典数据id + */ @TableId(type = IdType.AUTO) - private Long dictValueId; + private Long dictDataId; - private Long dictKeyId; /** - * 编码 + * 字典id */ - private String valueCode; + private Long dictId; + /** - * 名称 + * 字典项值 */ - private String valueName; + private String dataValue; + + /** + * 字典项显示名称 + */ + private String dataLabel; + /** * 备注 */ private String remark; /** - * 排序 + * 排序(越大越靠前) */ - private Integer sort; + private Integer sortOrder; + /** - * 删除标识 + * 禁用状态 */ - private Boolean deletedFlag; + private Boolean disabledFlag; /** * 创建时间 @@ -55,4 +64,5 @@ public class DictValueEntity { * 更新时间 */ private LocalDateTime updateTime; -} \ No newline at end of file + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictEntity.java similarity index 55% rename from smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java rename to smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictEntity.java index 606ff7fd..0dc5d369 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictKeyEntity.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/entity/DictEntity.java @@ -8,39 +8,42 @@ import lombok.Data; import java.time.LocalDateTime; /** - * 字典 + * 数据字典 实体类 * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 */ + @Data -@TableName("t_dict_key") -public class DictKeyEntity { +@TableName("t_dict") +public class DictEntity { + /** + * 字典id + */ @TableId(type = IdType.AUTO) - private Long dictKeyId; + private Long dictId; /** - * 编码 + * 字典名字 */ - private String keyCode; - /** - * 名称 - */ - private String keyName; + private String dictName; /** - * 备注 + * 字典编码 + */ + private String dictCode; + + /** + * 字典备注 */ private String remark; /** - * 删除标识 + * 禁用状态 */ - private Boolean deletedFlag; + private Boolean disabledFlag; /** * 创建时间 @@ -51,4 +54,5 @@ public class DictKeyEntity { * 更新时间 */ private LocalDateTime updateTime; -} \ No newline at end of file + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java new file mode 100644 index 00000000..3e8f032b --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictAddForm.java @@ -0,0 +1,31 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.validation.constraints.NotBlank; + +import lombok.Data; + +/** + * 数据字典 新建表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictAddForm { + + @Schema(description = "字典名字", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典名字 不能为空") + private String dictName; + + @Schema(description = "字典编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典编码 不能为空") + private String dictCode; + + @Schema(description = "字典备注") + private String remark; + +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java new file mode 100644 index 00000000..faf1ed68 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataAddForm.java @@ -0,0 +1,39 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * 字典数据表 新建表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictDataAddForm { + + @Schema(description = "字典id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典id 不能为空") + private Long dictId; + + @Schema(description = "字典项值", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典项值 不能为空") + private String dataValue; + + @Schema(description = "字典项显示名称", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典项显示名称 不能为空") + private String dataLabel; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "排序(越大越靠前)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "排序(越大越靠前) 不能为空") + private Integer sortOrder; + +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java new file mode 100644 index 00000000..48c1dd68 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictDataUpdateForm.java @@ -0,0 +1,28 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * 字典数据表 更新表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictDataUpdateForm extends DictDataAddForm { + + @Schema(description = "字典数据id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典数据id 不能为空") + private Long dictDataId; + + @Schema(description = "字典数据编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典数据编码 不能为空") + private String dictCode; + + +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java deleted file mode 100644 index ececec8a..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyAddForm.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyAddForm { - - @Schema(description = "编码") - @NotBlank(message = "编码不能为空") - @Length(max = 50,message = "编码太长了,不能超过50字符") - private String keyCode; - - @Schema(description = "名称") - @NotBlank(message = "名称不能为空") - @Length(max = 50,message = "名称太长了,不能超过50字符") - private String keyName; - - @Schema(description = "备注") - @Length(max = 500,message = "备注太长了") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java deleted file mode 100644 index 845122bc..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyQueryForm.java +++ /dev/null @@ -1,24 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import net.lab1024.sa.base.common.domain.PageParam; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyQueryForm extends PageParam { - - @Schema(description = "搜索词") - private String searchWord; - - @Schema(description = "删除标识",hidden = true) - private Boolean deletedFlag; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java deleted file mode 100644 index a471f43d..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictKeyUpdateForm.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyUpdateForm extends DictKeyAddForm { - - @Schema(description = "keyId") - @NotNull(message = "keyId不能为空") - private Long dictKeyId; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java new file mode 100644 index 00000000..5fb8da1a --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictQueryForm.java @@ -0,0 +1,26 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import net.lab1024.sa.base.common.domain.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * 数据字典 分页查询表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +@EqualsAndHashCode(callSuper = false) +public class DictQueryForm extends PageParam { + + @Schema(description = "关键字") + private String keywords; + + @Schema(description = "禁用状态") + private Boolean disabledFlag; + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java new file mode 100644 index 00000000..e032a770 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictUpdateForm.java @@ -0,0 +1,36 @@ +package net.lab1024.sa.base.module.support.dict.domain.form; + +import io.swagger.v3.oas.annotations.media.Schema; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +import lombok.Data; + +/** + * 数据字典 更新表单 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictUpdateForm { + + @Schema(description = "字典id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "字典id 不能为空") + private Long dictId; + + @Schema(description = "字典名字", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典名字 不能为空") + private String dictName; + + @Schema(description = "字典编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "字典编码 不能为空") + private String dictCode; + + @Schema(description = "字典备注") + private String remark; + +} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java deleted file mode 100644 index bcb2bc73..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueAddForm.java +++ /dev/null @@ -1,44 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import org.hibernate.validator.constraints.Length; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueAddForm { - - @Schema(description = "dictKeyId") - @NotNull(message = "dictKeyId不能为空") - private Long dictKeyId; - - @Schema(description = "编码") - @NotBlank(message = "编码不能为空") - @Length(max = 50,message = "编码太长了,不能超过50字符") - private String valueCode; - - @Schema(description = "名称") - @NotBlank(message = "名称不能为空") - @Length(max = 50,message = "名称太长了,不能超过50字符") - private String valueName; - - @Schema(description = "排序") - @NotNull(message = "排序不能为空") - private Integer sort; - - @Schema(description = "备注") - @Length(max = 500,message = "备注太长了") - private String remark; - -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java deleted file mode 100644 index 7bd6eb69..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueQueryForm.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import net.lab1024.sa.base.common.domain.PageParam; - -import javax.validation.constraints.NotNull; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueQueryForm extends PageParam { - - @Schema(description = "dictKeyId") - @NotNull(message = "dictKeyId不能为空") - private Long dictKeyId; - - @Schema(description = "搜索词") - private String searchWord; - - @Schema(description = "删除标识",hidden = true) - private Boolean deletedFlag; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java deleted file mode 100644 index 9efa1c12..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/form/DictValueUpdateForm.java +++ /dev/null @@ -1,23 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.form; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueUpdateForm extends DictValueAddForm { - - @Schema(description = "valueId") - @NotNull(message = "valueId不能为空") - private Long dictValueId; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java new file mode 100644 index 00000000..8dc19f34 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictDataVO.java @@ -0,0 +1,49 @@ +package net.lab1024.sa.base.module.support.dict.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 字典数据表 列表VO + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 23:12:59 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictDataVO { + + @Schema(description = "字典数据id") + private Long dictDataId; + + @Schema(description = "字典id") + private Long dictId; + + @Schema(description = "字典编码") + private String dictCode; + + @Schema(description = "字典项值") + private String dataValue; + + @Schema(description = "字典项显示名称") + private String dataLabel; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "排序(越大越靠前)") + private Integer sortOrder; + + @Schema(description = "禁用状态") + private Boolean disabledFlag; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java deleted file mode 100644 index 5a9ad127..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictKeyVO.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictKeyVO { - - @Schema(description = "dictKeyId") - private Long dictKeyId; - - @Schema(description = "编码") - private String keyCode; - - @Schema(description = "名称") - private String keyName; - - @Schema(description = "备注") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java new file mode 100644 index 00000000..1625ce40 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictVO.java @@ -0,0 +1,41 @@ +package net.lab1024.sa.base.module.support.dict.domain.vo; + +import io.swagger.v3.oas.annotations.media.Schema; + +import java.time.LocalDateTime; + +import lombok.Data; + +/** + * 数据字典 列表VO + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Data +public class DictVO { + + @Schema(description = "字典id") + private Long dictId; + + @Schema(description = "字典名字") + private String dictName; + + @Schema(description = "字典编码") + private String dictCode; + + @Schema(description = "字典备注") + private String remark; + + @Schema(description = "禁用状态") + private Integer disabledFlag; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "更新时间") + private LocalDateTime updateTime; + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java deleted file mode 100644 index 216822b8..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/domain/vo/DictValueVO.java +++ /dev/null @@ -1,35 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.domain.vo; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -/** - * 字典 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Data -public class DictValueVO { - - @Schema(description = "valueId") - private Long dictValueId; - - @Schema(description = "dictKeyId") - private Long dictKeyId; - - @Schema(description = "编码") - private String valueCode; - - @Schema(description = "名称") - private String valueName; - - @Schema(description = "排序") - private Integer sort; - - @Schema(description = "备注") - private String remark; -} \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java new file mode 100644 index 00000000..0669cc5e --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/manager/DictManager.java @@ -0,0 +1,47 @@ +package net.lab1024.sa.base.module.support.dict.manager; + +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.constant.CacheKeyConst; +import net.lab1024.sa.base.module.support.dict.dao.DictDao; +import net.lab1024.sa.base.module.support.dict.dao.DictDataDao; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictDataEntity; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * 数据字典 缓存 + * + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 + */ + +@Service +public class DictManager { + + @Resource + private DictDao dictDao; + + @Resource + private DictDataDao dictDataDao; + + + /** + * 获取字典 + */ + @Cacheable(value = CacheKeyConst.Dict.DICT_DATA, key = "#dictCode + '_' + #dataValue") + public DictDataVO getDictData(String dictCode, String dataValue) { + DictEntity dictEntity = dictDao.selectByCode(dictCode); + if (dictEntity == null) { + return null; + } + + DictDataEntity dictDataEntity = dictDataDao.selectByDictIdAndValue(dictEntity.getDictId(), dataValue); + return SmartBeanUtil.copy(dictDataEntity, DictDataVO.class); + } + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java deleted file mode 100644 index 7279cbdb..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictCacheService.java +++ /dev/null @@ -1,135 +0,0 @@ -package net.lab1024.sa.base.module.support.dict.service; - -import cn.hutool.core.util.StrUtil; -import com.google.common.collect.Lists; -import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.base.common.domain.ResponseDTO; -import net.lab1024.sa.base.common.util.SmartBeanUtil; -import net.lab1024.sa.base.module.support.dict.dao.DictKeyDao; -import net.lab1024.sa.base.module.support.dict.dao.DictValueDao; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; -import javax.annotation.Resource; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -/** - * 字典缓存 服务 - * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 - */ -@Slf4j -@Service -public class DictCacheService { - - @Resource - private DictKeyDao dictKeyDao; - @Resource - private DictValueDao dictValueDao; - - private ConcurrentHashMap> DICT_CACHE = new ConcurrentHashMap<>(); - - - @PostConstruct - public void dictCache() { - this.cacheInit(); - } - - public void cacheInit() { - List dictKeyEntityList = dictKeyDao.selectByDeletedFlag(false); - if (CollectionUtils.isEmpty(dictKeyEntityList)) { - return; - } - List dictKeyValueList = dictValueDao.selectByDeletedFlag(false); - List dictValueVOList = SmartBeanUtil.copyList(dictKeyValueList, DictValueVO.class); - Map> valueListMap = dictValueVOList.stream().collect(Collectors.groupingBy(DictValueVO::getDictKeyId)); - //字典键值对缓存 - for (DictKeyEntity dictKeyEntity : dictKeyEntityList) { - String keyCode = dictKeyEntity.getKeyCode(); - Long dictKeyId = dictKeyEntity.getDictKeyId(); - DICT_CACHE.put(keyCode, valueListMap.getOrDefault(dictKeyId, Lists.newArrayList())); - } - log.info("################# 数据字典缓存初始化完毕 ###################"); - } - - /** - * 刷新缓存 - */ - public ResponseDTO cacheRefresh() { - DICT_CACHE.clear(); - this.cacheInit(); - return ResponseDTO.ok(); - } - - /** - * 查询某个key对应的字典值列表 - * - * @param keyCode - * @return - */ - public List selectByKeyCode(String keyCode) { - return DICT_CACHE.getOrDefault(keyCode, Lists.newArrayList()); - } - - /** - * 查询值code名称 - * @param keyCode - * @param valueCode - * @return - */ - public String selectValueNameByValueCode(String keyCode, String valueCode) { - DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); - if (dictValueVO == null){ - return ""; - } - return dictValueVO.getValueName() - ; - } - - public DictValueVO selectValueByValueCode(String keyCode, String valueCode) { - if (StrUtil.isEmpty(valueCode)) { - return null; - } - if (StrUtil.isEmpty(keyCode)) { - return null; - } - - List dictValueVOList = DICT_CACHE.get(valueCode); - if (CollectionUtils.isEmpty(dictValueVOList)) { - return null; - } - Optional option = dictValueVOList.stream().filter(e->e.getValueCode().equals(valueCode)).findFirst(); - if(option.isPresent()){ - return option.get(); - } - return null; - } - public String selectValueNameByValueCodeSplit(String keyCode, String valueCodes) { - if (StrUtil.isEmpty(valueCodes)) { - return ""; - } - List valueNameList = Lists.newArrayList(); - String[] valueCodeArray = valueCodes.split(","); - for (String valueCode : valueCodeArray) { - DictValueVO dictValueVO = this.selectValueByValueCode(keyCode, valueCode); - if (dictValueVO != null) { - valueNameList.add(dictValueVO.getValueName()); - } - } - return StringUtils.join(valueNameList, ","); - } - -} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java index f162472b..156f4112 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/dict/service/DictService.java @@ -1,197 +1,275 @@ package net.lab1024.sa.base.module.support.dict.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.google.common.collect.Interner; -import com.google.common.collect.Interners; -import net.lab1024.sa.base.common.code.UserErrorCode; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.ResponseDTO; import net.lab1024.sa.base.common.util.SmartBeanUtil; import net.lab1024.sa.base.common.util.SmartPageUtil; -import net.lab1024.sa.base.module.support.dict.dao.DictKeyDao; -import net.lab1024.sa.base.module.support.dict.dao.DictValueDao; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictKeyEntity; -import net.lab1024.sa.base.module.support.dict.domain.entity.DictValueEntity; +import net.lab1024.sa.base.common.util.SmartStringUtil; +import net.lab1024.sa.base.constant.CacheKeyConst; +import net.lab1024.sa.base.module.support.dict.dao.DictDao; +import net.lab1024.sa.base.module.support.dict.dao.DictDataDao; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictDataEntity; +import net.lab1024.sa.base.module.support.dict.domain.entity.DictEntity; import net.lab1024.sa.base.module.support.dict.domain.form.*; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictKeyVO; -import net.lab1024.sa.base.module.support.dict.domain.vo.DictValueVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictDataVO; +import net.lab1024.sa.base.module.support.dict.domain.vo.DictVO; +import net.lab1024.sa.base.module.support.dict.manager.DictManager; import org.apache.commons.collections4.CollectionUtils; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CacheEvict; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** - * 字典 服务 + * 数据字典 Service * - * @Author 1024创新实验室: 罗伊 - * @Date 2022/5/26 19:40:55 - * @Wechat zhuoda1024 - * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Author 1024创新实验室-主任-卓大 + * @Date 2025-03-25 22:25:04 + * @Copyright 1024创新实验室 */ + @Service public class DictService { @Resource - private DictKeyDao dictKeyDao; + private DictDao dictDao; + @Resource - private DictValueDao dictValueDao; + private DictDataDao dictDataDao; + @Resource - private DictCacheService dictCacheService; - /** - * CODE锁 - */ - private static final Interner CODE_POOL = Interners.newWeakInterner(); + private CacheManager cacheManager; + @Resource + private DictManager dictManager; /** - * key添加 - * - * @param keyAddForm - * @return + * 获取全部数据 */ - public ResponseDTO keyAdd(DictKeyAddForm keyAddForm) { - synchronized (CODE_POOL.intern(keyAddForm.getKeyCode())) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyAddForm.getKeyCode(), false); - if (dictKeyEntity != null) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); - } - dictKeyEntity = SmartBeanUtil.copy(keyAddForm, DictKeyEntity.class); - dictKeyDao.insert(dictKeyEntity); + public List getAll() { + return dictDataDao.getAll(); + } + + /** + * 获取所有字典 + */ + public List getAllDict() { + List dictEntityList = dictDao.selectList(null).stream().filter(e -> !e.getDisabledFlag()).collect(Collectors.toList()); + return SmartBeanUtil.copyList(dictEntityList, DictVO.class); + } + + /** + * 分页查询 + */ + public PageResult queryPage(DictQueryForm queryForm) { + Page page = SmartPageUtil.convert2PageQuery(queryForm); + List list = dictDao.queryPage(page, queryForm); + return SmartPageUtil.convert2PageResult(page, list); + } + + /** + * 添加 + */ + public synchronized ResponseDTO add(DictAddForm addForm) { + DictEntity existDictCode = dictDao.selectByCode(addForm.getDictCode()); + if (null != existDictCode) { + return ResponseDTO.userErrorParam("数据字典编码已经存在!"); } + + DictEntity dictEntity = SmartBeanUtil.copy(addForm, DictEntity.class); + dictDao.insert(dictEntity); return ResponseDTO.ok(); } /** - * 值添加 - * - * @param valueAddForm - * @return + * 禁用 启用 */ - public ResponseDTO valueAdd(DictValueAddForm valueAddForm) { - - synchronized (CODE_POOL.intern(valueAddForm.getValueCode())) { - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueAddForm.getDictKeyId(),valueAddForm.getValueCode(), false); - if (dictValueEntity != null) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); - } - dictValueEntity = SmartBeanUtil.copy(valueAddForm, DictValueEntity.class); - dictValueDao.insert(dictValueEntity); + public ResponseDTO updateDisabled(Long dictId) { + DictEntity dictEntity = dictDao.selectById(dictId); + if (dictEntity == null) { + return ResponseDTO.userErrorParam("数据不存在"); } + + dictEntity.setDisabledFlag(!dictEntity.getDisabledFlag()); + dictDao.updateById(dictEntity); return ResponseDTO.ok(); } /** - * key 编辑 - * - * @param keyUpdateForm - * @return + * 更新 */ - public ResponseDTO keyEdit(DictKeyUpdateForm keyUpdateForm) { - synchronized (CODE_POOL.intern(keyUpdateForm.getKeyCode())) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectByCode(keyUpdateForm.getKeyCode(), false); - if (dictKeyEntity != null && !dictKeyEntity.getDictKeyId().equals(keyUpdateForm.getDictKeyId())) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); - } - DictKeyEntity dictKeyUpdateEntity = SmartBeanUtil.copy(keyUpdateForm, DictKeyEntity.class); - dictKeyDao.updateById(dictKeyUpdateEntity); + @CacheEvict(CacheKeyConst.Dict.DICT_DATA) + public synchronized ResponseDTO update(DictUpdateForm updateForm) { + DictEntity existDictCode = dictDao.selectByCode(updateForm.getDictCode()); + if (null != existDictCode && !existDictCode.getDictId().equals(updateForm.getDictId())) { + return ResponseDTO.userErrorParam("数据字典编码已经存在!"); } + + DictEntity dictEntity = SmartBeanUtil.copy(updateForm, DictEntity.class); + dictDao.updateById(dictEntity); return ResponseDTO.ok(); } /** - * 值编辑 - * - * @param valueUpdateForm - * @return + * 批量删除 */ - public ResponseDTO valueEdit(DictValueUpdateForm valueUpdateForm) { - DictKeyEntity dictKeyEntity = dictKeyDao.selectById(valueUpdateForm.getDictKeyId()); - if (dictKeyEntity == null || dictKeyEntity.getDeletedFlag()) { - return ResponseDTO.userErrorParam("key不能存在"); - } - synchronized (CODE_POOL.intern(valueUpdateForm.getValueCode())) { - DictValueEntity dictValueEntity = dictValueDao.selectByCode(valueUpdateForm.getDictKeyId() ,valueUpdateForm.getValueCode(), false); - if (dictValueEntity != null && !dictValueEntity.getDictValueId().equals(valueUpdateForm.getDictValueId())) { - return ResponseDTO.error(UserErrorCode.ALREADY_EXIST); - } - DictValueEntity dictValueUpdateEntity = SmartBeanUtil.copy(valueUpdateForm, DictValueEntity.class); - dictValueDao.updateById(dictValueUpdateEntity); - } - return ResponseDTO.ok(); - } - - /** - * key删除 - * - * @param keyIdList - * @return - */ - public ResponseDTO keyDelete(List keyIdList) { - if (CollectionUtils.isEmpty(keyIdList)) { + @CacheEvict(CacheKeyConst.Dict.DICT_DATA) + public synchronized ResponseDTO batchDelete(List idList) { + if (CollectionUtils.isEmpty(idList)) { return ResponseDTO.ok(); } - dictKeyDao.updateDeletedFlagByIdList(keyIdList, true); + + dictDao.deleteBatchIds(idList); return ResponseDTO.ok(); } /** - * 值删除 - * - * @param valueIdList - * @return + * 单个删除 */ - public ResponseDTO valueDelete(List valueIdList) { - if (CollectionUtils.isEmpty(valueIdList)) { + @CacheEvict(CacheKeyConst.Dict.DICT_DATA) + public synchronized ResponseDTO delete(Long dictId) { + if (null == dictId) { return ResponseDTO.ok(); } - dictValueDao.updateDeletedFlagByIdList(valueIdList, true); + + dictDao.deleteById(dictId); + return ResponseDTO.ok(); + } + + + // -------------- 字典数据 -------------------- + + /** + * 分页查询 + */ + public List queryDictData(Long dictId) { + return dictDataDao.queryByDictId(dictId); + } + + /** + * 获取字典 + */ + + public DictDataVO getDictData(String dictCode, String dataValue) { + return dictManager.getDictData(dictCode, dataValue); + } + + /** + * 获取字典Label + */ + public String getDictDataLabel(String dictCode, String dataValue) { + DictDataVO dictData = getDictData(dictCode, dataValue); + return dictData == null ? "" : dictData.getDataLabel(); + } + + /** + * 添加 + */ + public synchronized ResponseDTO addDictData(DictDataAddForm addForm) { + + addForm.setDataValue(SmartStringUtil.trim(addForm.getDataValue())); + + DictEntity dictEntity = dictDao.selectById(addForm.getDictId()); + if (null == dictEntity) { + return ResponseDTO.userErrorParam("数据字典不存在"); + } + + DictDataEntity existData = dictDataDao.selectByDictIdAndValue(addForm.getDictId(), addForm.getDataValue()); + if (null != existData) { + return ResponseDTO.userErrorParam("已存在相同value的数据"); + } + + DictDataEntity dictDataEntity = SmartBeanUtil.copy(addForm, DictDataEntity.class); + dictDataDao.insert(dictDataEntity); return ResponseDTO.ok(); } /** - * 分页查询key - * - * @param queryForm - * @return + * 更新 */ - public ResponseDTO> keyQuery(DictKeyQueryForm queryForm) { - queryForm.setDeletedFlag(false); - Page page = SmartPageUtil.convert2PageQuery(queryForm); - List list = dictKeyDao.query(page, queryForm); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); - if (pageResult.getEmptyFlag()) { - return ResponseDTO.ok(pageResult); + @CacheEvict(value = CacheKeyConst.Dict.DICT_DATA, key = "#updateForm.dictCode + '_' + #updateForm.dataValue") + public synchronized ResponseDTO updateDictData(DictDataUpdateForm updateForm) { + + updateForm.setDataValue(SmartStringUtil.trim(updateForm.getDataValue())); + + DictEntity dictEntity = dictDao.selectById(updateForm.getDictId()); + if (null == dictEntity) { + return ResponseDTO.userErrorParam("数据字典不存在"); } - return ResponseDTO.ok(pageResult); + + DictDataEntity existData = dictDataDao.selectByDictIdAndValue(updateForm.getDictId(), updateForm.getDataValue()); + if (null != existData && !existData.getDictDataId().equals(updateForm.getDictDataId())) { + return ResponseDTO.userErrorParam("已存在相同value的数据"); + } + + DictDataEntity dictDataEntity = SmartBeanUtil.copy(updateForm, DictDataEntity.class); + dictDataDao.updateById(dictDataEntity); + return ResponseDTO.ok(); } /** - * 所有key - * - * @return + * 批量删除 */ - public List queryAllKey() { - return SmartBeanUtil.copyList(dictKeyDao.selectByDeletedFlag(false), DictKeyVO.class); + public synchronized ResponseDTO batchDeleteDictData(List idList) { + if (CollectionUtils.isEmpty(idList)) { + return ResponseDTO.ok(); + } + // 清除缓存 + clearDictDataCache(idList); + // 删除 + dictDataDao.deleteBatchIds(idList); + return ResponseDTO.ok(); } /** - * 分页查询值 - * - * @param queryForm - * @return + * 单个删除 */ - public ResponseDTO> valueQuery(DictValueQueryForm queryForm) { - queryForm.setDeletedFlag(false); - Page page = SmartPageUtil.convert2PageQuery(queryForm); - List list = dictValueDao.query(page, queryForm); - PageResult pageResult = SmartPageUtil.convert2PageResult(page, list); - if (pageResult.getEmptyFlag()) { - return ResponseDTO.ok(pageResult); + public synchronized ResponseDTO deleteDictData(Long dictDataId) { + if (null == dictDataId) { + return ResponseDTO.ok(); } - return ResponseDTO.ok(pageResult); + // 清除缓存 + clearDictDataCache(Collections.singletonList(dictDataId)); + // 删除 + dictDataDao.deleteById(dictDataId); + return ResponseDTO.ok(); } -} \ No newline at end of file + /** + * 清空字典数据缓存 + */ + private void clearDictDataCache(List idList) { + List dictDataList = dictDataDao.selectByDictDataIds(idList); + Cache cache = cacheManager.getCache(CacheKeyConst.Dict.DICT_DATA); + if (cache == null) { + return; + } + + for (DictDataVO dictDataVO : dictDataList) { + cache.evict(dictDataVO.getDictCode() + "_" + dictDataVO.getDataValue()); + } + } + + + /** + * 更新启用/禁用 + */ + public synchronized ResponseDTO updateDictDataDisabled(Long dictDataId) { + DictDataEntity dictDataEntity = dictDataDao.selectById(dictDataId); + if (dictDataEntity == null) { + return ResponseDTO.userErrorParam("数据不存在"); + } + + dictDataEntity.setDisabledFlag(!dictDataEntity.getDisabledFlag()); + dictDataDao.updateById(dictDataEntity); + return ResponseDTO.ok(); + } + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java index 6623fd40..034a8af8 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/feedback/dao/FeedbackDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface FeedbackDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java index df0f231c..15f7aab3 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/dao/FileDao.java @@ -22,7 +22,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface FileDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java index 47b73391..df1ab21f 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/heartbeat/HeartBeatRecordDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface HeartBeatRecordDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java index 26c11f15..c04ec08b 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocCatalogDao.java @@ -15,7 +15,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface HelpDocCatalogDao extends BaseMapper { } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java index 161aa445..902f1078 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/helpdoc/dao/HelpDocDao.java @@ -25,7 +25,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface HelpDocDao extends BaseMapper { // ================================= 帮助文档【主表 t_help_doc 】 ================================= diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java index 002e03fc..028f87c8 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobDao.java @@ -18,7 +18,6 @@ import java.util.List; * @date 2024/6/17 21:30 */ @Mapper -@Component public interface SmartJobDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java index edaf8fc8..b3b6a3d7 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/repository/SmartJobLogDao.java @@ -18,7 +18,6 @@ import java.util.List; * @date 2024/6/17 21:30 */ @Mapper -@Component public interface SmartJobLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java index 4e88d635..b0509f07 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/LoginLogDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface LoginLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java index 3753341a..2ef5dbab 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogEntity.java @@ -60,6 +60,11 @@ public class LoginLogEntity { */ private String remark; + /** + * 登录设备 + */ + private String loginDevice; + /** * 登录类型 */ diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java index 3edb1d2e..205a7fb8 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/loginlog/domain/LoginLogVO.java @@ -46,6 +46,8 @@ public class LoginLogVO { @SchemaEnum(LoginLogResultEnum.class) private Integer loginResult; + private String loginDevice; + private LocalDateTime createTime; } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java index d57c1c79..ecc6b07e 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailTemplateDao.java @@ -16,7 +16,6 @@ import org.springframework.stereotype.Component; * @Copyright 1024创新实验室 ,Since 2012 */ @Mapper -@Component public interface MailTemplateDao extends BaseMapper { } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java index 80ec9e75..01389e03 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/dao/MessageDao.java @@ -17,7 +17,6 @@ import java.util.List; * @author luoyi * @date 2024/06/22 20:20 */ -@Component @Mapper public interface MessageDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java index 74397476..cdf520ac 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/operatelog/OperateLogDao.java @@ -20,7 +20,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface OperateLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java index 28f35c44..30fe8f8a 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadItemDao.java @@ -17,7 +17,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface ReloadItemDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java index 664befc4..93cb07a8 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/dao/ReloadResultDao.java @@ -18,7 +18,6 @@ import java.util.List; * @Email lab1024@163.com * @Copyright 1024创新实验室 */ -@Component @Mapper public interface ReloadResultDao extends BaseMapper { diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java index 465460c0..723ecd7e 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/RepeatSubmitAspect.java @@ -22,18 +22,16 @@ import java.lang.reflect.Method; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Aspect @Slf4j public class RepeatSubmitAspect { - private AbstractRepeatSubmitTicket repeatSubmitTicket; + private final AbstractRepeatSubmitTicket repeatSubmitTicket; /** * 获取凭证信息 - * - * @param repeatSubmitTicket */ public RepeatSubmitAspect(AbstractRepeatSubmitTicket repeatSubmitTicket) { this.repeatSubmitTicket = repeatSubmitTicket; @@ -41,10 +39,6 @@ public class RepeatSubmitAspect { /** * 定义切入点 - * - * @param point - * @return - * @throws Throwable */ @Around("@annotation(net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit)") public Object around(ProceedingJoinPoint point) throws Throwable { @@ -55,20 +49,24 @@ public class RepeatSubmitAspect { if (StringUtils.isEmpty(ticket)) { return point.proceed(); } + + Method method = ((MethodSignature) point.getSignature()).getMethod(); + RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); + int limit = annotation.value(); + + // 获取上一次请求时间 Long lastRequestTime = this.repeatSubmitTicket.getTicketTimestamp(ticket); - if (lastRequestTime != null) { - Method method = ((MethodSignature) point.getSignature()).getMethod(); - RepeatSubmit annotation = method.getAnnotation(RepeatSubmit.class); - int interval = Math.min(annotation.value(), RepeatSubmit.MAX_INTERVAL); - if (System.currentTimeMillis() < lastRequestTime + interval) { - // 提交频繁 - return ResponseDTO.error(UserErrorCode.REPEAT_SUBMIT); - } + // 校验是否限制时间内重复提交 + if (lastRequestTime != null && System.currentTimeMillis() < lastRequestTime + limit) { + return ResponseDTO.error(UserErrorCode.REPEAT_SUBMIT); } + + // 执行 Object obj = null; try { - // 先给 ticket 设置在执行中 + // 给 ticket 设置在执行中 this.repeatSubmitTicket.putTicket(ticket); + // 执行 obj = point.proceed(); } catch (Throwable throwable) { log.error("", throwable); diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java index 8191b948..371f7b95 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/annoation/RepeatSubmit.java @@ -13,7 +13,7 @@ import java.lang.annotation.Target; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @@ -21,13 +21,7 @@ public @interface RepeatSubmit { /** * 重复提交间隔时间/毫秒 - * - * @return */ int value() default 300; - /** - * 最长间隔30s - */ - int MAX_INTERVAL = 30000; } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java index bfe17c70..bc2f8e60 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/AbstractRepeatSubmitTicket.java @@ -9,11 +9,11 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public abstract class AbstractRepeatSubmitTicket { - private Function ticketFunction; + private final Function ticketFunction; public AbstractRepeatSubmitTicket(Function ticketFunction) { @@ -23,9 +23,6 @@ public abstract class AbstractRepeatSubmitTicket { /** * 获取凭证 - * - * @param ticketToken - * @return */ public String getTicket(String ticketToken) { return this.ticketFunction.apply(ticketToken); @@ -33,24 +30,13 @@ public abstract class AbstractRepeatSubmitTicket { /** * 获取凭证 时间戳 - * - * @param ticket - * @return */ public abstract Long getTicketTimestamp(String ticket); /** * 设置本次请求时间 - * - * @param ticket */ public abstract void putTicket(String ticket); - /** - * 移除凭证 - * - * @param ticket - */ - public abstract void removeTicket(String ticket); } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java index ef531c49..c18cc038 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitCaffeineTicket.java @@ -2,7 +2,6 @@ package net.lab1024.sa.base.module.support.repeatsubmit.ticket; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; -import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import java.util.concurrent.TimeUnit; import java.util.function.Function; @@ -14,7 +13,7 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { @@ -23,9 +22,9 @@ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { * 默认缓存时间 * 初始大小为:100万 */ - private static Cache cache = Caffeine.newBuilder() + private static final Cache cache = Caffeine.newBuilder() .maximumSize(100 * 10000) - .expireAfterWrite(RepeatSubmit.MAX_INTERVAL, TimeUnit.MILLISECONDS).build(); + .expireAfterWrite(300 * 1000L, TimeUnit.MILLISECONDS).build(); public RepeatSubmitCaffeineTicket(Function ticketFunction) { @@ -42,9 +41,4 @@ public class RepeatSubmitCaffeineTicket extends AbstractRepeatSubmitTicket { public void putTicket(String ticket) { cache.put(ticket, System.currentTimeMillis()); } - - @Override - public void removeTicket(String ticket) { - cache.invalidate(ticket); - } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java index 34b89b3a..f940fdbb 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/repeatsubmit/ticket/RepeatSubmitRedisTicket.java @@ -1,9 +1,7 @@ package net.lab1024.sa.base.module.support.repeatsubmit.ticket; -import net.lab1024.sa.base.module.support.repeatsubmit.annoation.RepeatSubmit; import org.springframework.data.redis.core.ValueOperations; -import java.util.concurrent.TimeUnit; import java.util.function.Function; /** @@ -13,11 +11,11 @@ import java.util.function.Function; * @Date 2020-11-25 20:56:58 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { - private ValueOperations redisValueOperations; + private final ValueOperations redisValueOperations; public RepeatSubmitRedisTicket(ValueOperations redisValueOperations, Function ticketFunction) { @@ -27,12 +25,8 @@ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { @Override public Long getTicketTimestamp(String ticket) { - Long timeStamp = System.currentTimeMillis(); - boolean setFlag = redisValueOperations.setIfAbsent(ticket, String.valueOf(timeStamp), RepeatSubmit.MAX_INTERVAL, TimeUnit.MILLISECONDS); - if (!setFlag) { - timeStamp = Long.valueOf(redisValueOperations.get(ticket)); - } - return timeStamp; + String ticketLastTime = redisValueOperations.get(ticket); + return ticketLastTime == null ? null : Long.valueOf(ticketLastTime); } @Override @@ -41,8 +35,4 @@ public class RepeatSubmitRedisTicket extends AbstractRepeatSubmitTicket { this.getTicketTimestamp(ticket); } - @Override - public void removeTicket(String ticket) { - redisValueOperations.getOperations().delete(ticket); - } } diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java index cd5cf659..587dd437 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/LoginFailDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface LoginFailDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java index 8b424eab..77dae296 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/securityprotect/dao/PasswordLogDao.java @@ -9,7 +9,6 @@ import org.springframework.stereotype.Component; import java.util.List; @Mapper -@Component public interface PasswordLogDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java index b54a7f2a..6e3303b2 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberDao.java @@ -18,7 +18,6 @@ import java.time.LocalDateTime; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface SerialNumberDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java index 1f665a19..f363cd69 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/serialnumber/dao/SerialNumberRecordDao.java @@ -21,7 +21,6 @@ import java.util.List; * @Copyright 1024创新实验室 */ @Mapper -@Component public interface SerialNumberRecordDao extends BaseMapper { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm index dd01bbc0..374c374a 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/dao/Dao.java.vm @@ -18,7 +18,6 @@ import org.springframework.stereotype.Component; */ @Mapper -@Component public interface ${name.upperCamel}Dao extends BaseMapper<${name.upperCamel}Entity> { /** diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm index 4a84efd0..76ebd3d5 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/domain/vo/VO.java.vm @@ -17,7 +17,7 @@ public class ${name.upperCamel}VO { #foreach ($field in $fields) - ${field.apiModelProperty}$!{field.notEmpty}$!{field.dict}$!{field.file} + ${field.apiModelProperty}$!{field.notEmpty}$!{field.file} private $field.javaType $field.fieldName; #end diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm index 3be777d5..fe41c1fb 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/java/service/Service.java.vm @@ -29,15 +29,11 @@ public class ${name.upperCamel}Service { /** * 分页查询 - * - * @param queryForm - * @return */ public PageResult<${name.upperCamel}VO> queryPage(${name.upperCamel}QueryForm queryForm) { Page page = SmartPageUtil.convert2PageQuery(queryForm); List<${name.upperCamel}VO> list = ${name.lowerCamel}Dao.queryPage(page, queryForm); - PageResult<${name.upperCamel}VO> pageResult = SmartPageUtil.convert2PageResult(page, list); - return pageResult; + return SmartPageUtil.convert2PageResult(page, list); } #if($insertAndUpdate.isSupportInsertAndUpdate) @@ -53,8 +49,6 @@ public class ${name.upperCamel}Service { /** * 更新 * - * @param updateForm - * @return */ public ResponseDTO update(${name.upperCamel}UpdateForm updateForm) { ${name.upperCamel}Entity ${name.lowerCamel}Entity = SmartBeanUtil.copy(updateForm, ${name.upperCamel}Entity.class); @@ -67,9 +61,6 @@ public class ${name.upperCamel}Service { #if($deleteInfo.deleteEnum == "Batch" || $deleteInfo.deleteEnum == "SingleAndBatch") /** * 批量删除 - * - * @param idList - * @return */ public ResponseDTO batchDelete(List<${primaryKeyJavaType}> idList) { if (CollectionUtils.isEmpty(idList)){ diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/form.vue.vm b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/form.vue.vm index 7567a12e..336d14d7 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/form.vue.vm +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/form.vue.vm @@ -48,7 +48,7 @@ #end #if($field.frontComponent == "DictSelect") - + #end #if($field.frontComponent == "Date") @@ -106,7 +106,7 @@ #end #if($field.frontComponent == "DictSelect") - + #end #if($field.frontComponent == "Date") diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/list.vue.vm b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/list.vue.vm index 01a8b8b5..f23fa092 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/list.vue.vm +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/code-generator-template/js/list.vue.vm @@ -22,7 +22,7 @@ #end #if($field.queryTypeEnum == "Dict") - + #end #if($field.queryTypeEnum == "Enum") diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictDataMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictDataMapper.xml new file mode 100644 index 00000000..b29468de --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictDataMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml deleted file mode 100644 index 7e98acf9..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictKeyMapper.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - update t_dict_key set deleted_flag = #{deletedFlag} where dict_key_id in - - #{item} - - - - - - - - - - \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictMapper.xml new file mode 100644 index 00000000..ef58108b --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictMapper.xml @@ -0,0 +1,45 @@ + + + + + + + t_dict.dict_id, + t_dict.dict_name, + t_dict.dict_code, + t_dict.remark, + t_dict.disabled_flag, + t_dict.create_time, + t_dict.update_time + + + + + + + + + diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml deleted file mode 100644 index 1aecdc4f..00000000 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/DictValueMapper.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - - update t_dict_value set deleted_flag = #{deletedFlag} where dict_value_id in - - #{item} - - - - - - - - - - - \ No newline at end of file diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml index db34a5ed..1cc90cb0 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/mapper/support/FeedbackMapper.xml @@ -9,7 +9,7 @@ AND ( INSTR(feedback_content,#{query.searchWord}) - OR INSTR(create_name,#{query.searchWord}) + OR INSTR(user_name,#{query.searchWord}) ) diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/prod/sa-base.yaml b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/prod/sa-base.yaml index 725c82fc..fafbe5e0 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/resources/prod/sa-base.yaml +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/resources/prod/sa-base.yaml @@ -38,7 +38,7 @@ spring: host: smtp.163.com port: 465 username: lab1024@163.com - password: 1024lab + password: LAB1024LAB properties: mail: smtp: @@ -99,12 +99,13 @@ springdoc: enabled: true # 开关 doc-expansion: none #关闭展开 tags-sorter: alpha + server-base-url: https://preview.smartadmin.vip/smart-admin-api api-docs: enabled: true # 开关 knife4j: enable: true basic: - enable: true + enable: false username: api # Basic认证用户名 password: 1024 # Basic认证密码 diff --git a/smart-admin-web-javascript/.gitignore b/smart-admin-web-javascript/.gitignore index f4f9f437..61425d50 100644 --- a/smart-admin-web-javascript/.gitignore +++ b/smart-admin-web-javascript/.gitignore @@ -1,5 +1,6 @@ node_modules .DS_Store +**/.DS_Store dist dist-ssr *.local diff --git a/smart-admin-web-javascript/package.json b/smart-admin-web-javascript/package.json index 35adc1ee..706d9298 100644 --- a/smart-admin-web-javascript/package.json +++ b/smart-admin-web-javascript/package.json @@ -18,8 +18,8 @@ "type": "module", "dependencies": { "@ant-design/icons-vue": "^7.0.1", - "@wangeditor/editor": "5.1.14", - "@wangeditor/editor-for-vue": "5.1.12", + "@wangeditor-next/editor": "5.6.34", + "@wangeditor-next/editor-for-vue": "5.1.14", "ant-design-vue": "4.2.5", "axios": "1.6.8", "clipboard": "2.0.11", @@ -43,8 +43,7 @@ "vue": "3.4.27", "vue-i18n": "9.13.1", "vue-router": "4.3.2", - "vue3-json-viewer": "2.2.2", - "vue3-tabs-chrome": "^0.3.3" + "vue3-json-viewer": "2.2.2" }, "devDependencies": { "@vitejs/plugin-vue": "5.0.4", diff --git a/smart-admin-web-javascript/src/App.vue b/smart-admin-web-javascript/src/App.vue index 7aad6b09..d0bf2978 100644 --- a/smart-admin-web-javascript/src/App.vue +++ b/smart-admin-web-javascript/src/App.vue @@ -51,7 +51,7 @@ import { theme } from 'ant-design-vue'; import { themeColors } from '/@/theme/color.js'; import { Popover } from 'ant-design-vue'; - import SmartCopyIcon from '/@/components/smart-copy-icon/index.vue'; + import SmartCopyIcon from '/@/components/framework/smart-copy-icon/index.vue'; const slots = useSlots(); const antdLocale = computed(() => messages[useAppConfigStore().language].antdLocale); diff --git a/smart-admin-web-javascript/src/api/support/dict-api.js b/smart-admin-web-javascript/src/api/support/dict-api.js index 701d3612..be56224c 100644 --- a/smart-admin-web-javascript/src/api/support/dict-api.js +++ b/smart-admin-web-javascript/src/api/support/dict-api.js @@ -10,50 +10,66 @@ import { postRequest, getRequest } from '/@/lib/axios'; export const dictApi = { - // 分页查询数据字典KEY - @author 卓大 - keyQuery: (param) => { - return postRequest('/support/dict/key/query', param); + + // 获取所有字典code @author 1024创新实验室-主任-卓大 + getAllDict: () => { + return getRequest('/support/dict/getAllDict'); }, - // 查询全部字典key - @author 卓大 - queryAllKey: () => { - return getRequest('/support/dict/key/queryAll'); + + // 获取全部字典数据 @author 1024创新实验室-主任-卓大 + getAllDictData: () => { + return getRequest('/support/dict/getAllDictData'); }, - /** - * 分页查询数据字典value - @author 卓大 - */ - valueQuery: (param) => { - return postRequest('/support/dict/value/query', param); + + // 分页查询 @author 1024创新实验室-主任-卓大 + queryDict: (param) => { + return postRequest('/support/dict/queryPage', param); }, - // 数据字典KEY-添加- @author 卓大 - keyAdd: (param) => { - return postRequest('/support/dict/key/add', param); + + // 添加 @author 1024创新实验室-主任-卓大 + addDict: (param) => { + return postRequest('/support/dict/add', param); }, - // 分页查询数据字典value - @author 卓大 - valueAdd: (param) => { - return postRequest('/support/dict/value/add', param); + + // 更新 @author 1024创新实验室-主任-卓大 + updateDict: (param) => { + return postRequest('/support/dict/update', param); }, - // 数据字典key-更新- @author 卓大 - keyEdit: (param) => { - return postRequest('/support/dict/key/edit', param); + + // 字典-删除- @author 卓大 + batchDeleteDict: (dictIdList) => { + return postRequest('/support/dict/batchDelete', dictIdList); }, - // 数据字典Value-更新- @author 卓大 - valueEdit: (param) => { - return postRequest('/support/dict/value/edit', param); + + // 字典 启用 禁用 @author 1024创新实验室-主任-卓大 + updateDisabled: (dictId) => { + return getRequest(`/support/dict/updateDisabled/${dictId}`); }, - // 数据字典key-删除- @author 卓大 - keyDelete: (keyIdList) => { - return postRequest('/support/dict/key/delete', keyIdList); + + // ------------- 查询字典数据 ------------- + + // 字典数据 分页查询 @author 1024创新实验室-主任-卓大 + queryDictData: (dictId) => { + return getRequest(`/support/dict/dictData/queryDictData/${dictId}`); }, - // 数据字典Value-删除- @author 卓大 - valueDelete: (valueIdList) => { - return postRequest('/support/dict/value/delete', valueIdList); + + // 字典数据 添加 - @author 卓大 + addDictData: (param) => { + return postRequest('/support/dict/dictData/add', param); }, - // 缓存刷新- @author 卓大 - cacheRefresh: () => { - return getRequest('/support/dict/cache/refresh'); + + // 字典数据 更新- @author 卓大 + updateDictData: (param) => { + return postRequest('/support/dict/dictData/update', param); }, - // 数据字典-值列表- @author 卓大 - valueList: (keyCode) => { - return getRequest(`/support/dict/value/list/${keyCode}`); + + // 字典数据-删除- @author 卓大 + batchDeleteDictData: (dictDataIdList) => { + return postRequest('/support/dict/dictData/batchDelete', dictDataIdList); + }, + + // 字典数据 启用 禁用 @author 1024创新实验室-主任-卓大 + updateDictDataDisabled: (dictDataId) => { + return getRequest(`/support/dict/dictData/updateDisabled/${dictDataId}`); }, }; diff --git a/smart-admin-web-javascript/src/components/dict-preview/index.vue b/smart-admin-web-javascript/src/components/dict-preview/index.vue deleted file mode 100644 index 30762b22..00000000 --- a/smart-admin-web-javascript/src/components/dict-preview/index.vue +++ /dev/null @@ -1,28 +0,0 @@ - - - diff --git a/smart-admin-web-javascript/src/components/framework/boolean-select/index.vue b/smart-admin-web-javascript/src/components/framework/boolean-select/index.vue index 7be0d821..e336bc8d 100644 --- a/smart-admin-web-javascript/src/components/framework/boolean-select/index.vue +++ b/smart-admin-web-javascript/src/components/framework/boolean-select/index.vue @@ -29,7 +29,7 @@ import { ref, watch } from 'vue'; const props = defineProps({ - value: Number, + value: Boolean, width: { type: Number, default: 100, diff --git a/smart-admin-web-javascript/src/components/smart-copy-icon/index.vue b/smart-admin-web-javascript/src/components/framework/smart-copy-icon/index.vue similarity index 100% rename from smart-admin-web-javascript/src/components/smart-copy-icon/index.vue rename to smart-admin-web-javascript/src/components/framework/smart-copy-icon/index.vue diff --git a/smart-admin-web-javascript/src/components/text-ellipsis/index.vue b/smart-admin-web-javascript/src/components/framework/text-ellipsis/index.vue similarity index 95% rename from smart-admin-web-javascript/src/components/text-ellipsis/index.vue rename to smart-admin-web-javascript/src/components/framework/text-ellipsis/index.vue index 37d791d9..cd67cbd8 100644 --- a/smart-admin-web-javascript/src/components/text-ellipsis/index.vue +++ b/smart-admin-web-javascript/src/components/framework/text-ellipsis/index.vue @@ -24,7 +24,7 @@ import { onMounted, ref, nextTick } from 'vue'; import { Modal } from 'ant-design-vue'; import { v4 as uuid } from 'uuid'; - import SmartCopyIcon from '/@/components/smart-copy-icon/index.vue'; + import SmartCopyIcon from '/@/components/framework/smart-copy-icon/index.vue'; const props = defineProps({ text: { diff --git a/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue b/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue index 8666e413..dc3c31cd 100644 --- a/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue +++ b/smart-admin-web-javascript/src/components/framework/wangeditor/index.vue @@ -25,8 +25,8 @@ import { shallowRef, onBeforeUnmount, watch, ref } from 'vue'; import { FILE_FOLDER_TYPE_ENUM } from '/@/constants/support/file-const'; import { fileApi } from '/@/api/support/file-api'; - import '@wangeditor/editor/dist/css/style.css'; - import { Editor, Toolbar } from '@wangeditor/editor-for-vue'; + import '@wangeditor-next/editor/dist/css/style.css'; + import { Editor, Toolbar } from '@wangeditor-next/editor-for-vue'; import { smartSentry } from '/@/lib/smart-sentry'; //菜单 diff --git a/smart-admin-web-javascript/src/components/support/dict-key-select/index.vue b/smart-admin-web-javascript/src/components/support/dict-code-select/index.vue similarity index 86% rename from smart-admin-web-javascript/src/components/support/dict-key-select/index.vue rename to smart-admin-web-javascript/src/components/support/dict-code-select/index.vue index 1a9bfcbf..10852a5e 100644 --- a/smart-admin-web-javascript/src/components/support/dict-key-select/index.vue +++ b/smart-admin-web-javascript/src/components/support/dict-code-select/index.vue @@ -20,8 +20,8 @@ @change="onChange" :disabled="disabled" > - - {{ item.keyName }} + + {{ item.dictName }} @@ -58,10 +58,10 @@ // -------------------------- 查询 字典数据 -------------------------- - const dictKeyCodeList = ref([]); + const dictList = ref([]); async function queryDict() { - let responseModel = await dictApi.queryAllKey(); - dictKeyCodeList.value = responseModel.data; + let response = await dictApi.getAllDict(); + dictList.value = response.data; } onMounted(queryDict); diff --git a/smart-admin-web-javascript/src/components/support/dict-label/index.vue b/smart-admin-web-javascript/src/components/support/dict-label/index.vue new file mode 100644 index 00000000..1f5d3f03 --- /dev/null +++ b/smart-admin-web-javascript/src/components/support/dict-label/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/smart-admin-web-javascript/src/components/support/dict-select/index.vue b/smart-admin-web-javascript/src/components/support/dict-select/index.vue index 58e9b187..61c388e5 100644 --- a/smart-admin-web-javascript/src/components/support/dict-select/index.vue +++ b/smart-admin-web-javascript/src/components/support/dict-select/index.vue @@ -20,13 +20,8 @@ @change="onChange" :disabled="disabled" > - - {{ item.valueName }} + + {{ item.dataLabel }} @@ -34,10 +29,10 @@ diff --git a/smart-admin-web-javascript/src/layout/components/top-expand-menu/sub-menu.vue b/smart-admin-web-javascript/src/layout/components/top-expand-menu/sub-menu.vue index 40738d74..ff46877d 100644 --- a/smart-admin-web-javascript/src/layout/components/top-expand-menu/sub-menu.vue +++ b/smart-admin-web-javascript/src/layout/components/top-expand-menu/sub-menu.vue @@ -40,7 +40,7 @@ }; diff --git a/smart-admin-web-javascript/src/layout/components/top-expand-menu/top-menu.vue b/smart-admin-web-javascript/src/layout/components/top-expand-menu/top-menu.vue index 8fdbfe3f..210ee324 100644 --- a/smart-admin-web-javascript/src/layout/components/top-expand-menu/top-menu.vue +++ b/smart-admin-web-javascript/src/layout/components/top-expand-menu/top-menu.vue @@ -25,65 +25,64 @@ diff --git a/smart-admin-web-javascript/src/main.js b/smart-admin-web-javascript/src/main.js index 8b140479..9153bc4d 100644 --- a/smart-admin-web-javascript/src/main.js +++ b/smart-admin-web-javascript/src/main.js @@ -21,18 +21,20 @@ import constantsInfo from '/@/constants/index'; import { privilegeDirective } from '/@/directives/privilege'; import i18n from '/@/i18n/index'; import privilegePlugin from '/@/plugins/privilege-plugin'; +import dictPlugin from '/@/plugins/dict-plugin'; import smartEnumPlugin from '/@/plugins/smart-enums-plugin'; import { buildRoutes, router } from '/@/router'; import { store } from '/@/store'; import { useUserStore } from '/@/store/modules/system/user'; import 'ant-design-vue/dist/reset.css'; -import 'vue3-tabs-chrome/dist/vue3-tabs-chrome.css'; import '/@/theme/index.less'; import { localRead } from '/@/utils/local-util.js'; import LocalStorageKeyConst from '/@/constants/local-storage-key-const.js'; import { Table } from 'ant-design-vue'; import { useAppConfigStore } from '/@/store/modules/system/app-config'; import '/@/utils/ployfill'; +import { useDictStore } from '/@/store/modules/system/dict.js'; +import { dictApi } from '/@/api/support/dict-api.js'; /* * -------------------- ※ 着重 解释说明下main.js的初始化逻辑 begin ※ -------------------- @@ -54,10 +56,13 @@ async function getLoginInfo() { try { //获取登录用户信息 const res = await loginApi.getLoginInfo(); + const dictRes = await dictApi.getAllDictData(); //构建系统的路由 let menuRouterList = res.data.menuList.filter((e) => e.path || e.frameUrl); buildRoutes(menuRouterList); initVue(); + // 初始化数据字典 + useDictStore().initData(dictRes.data); //更新用户信息到pinia useUserStore().setUserLoginInfo(res.data); } catch (e) { @@ -69,7 +74,15 @@ async function getLoginInfo() { async function initVue() { let vueApp = createApp(App); - let app = vueApp.use(router).use(store).use(i18n).use(Antd).use(smartEnumPlugin, constantsInfo).use(privilegePlugin).use(JsonViewer); + let app = vueApp + .use(router) + .use(store) + .use(i18n) + .use(Antd) + .use(smartEnumPlugin, constantsInfo) + .use(privilegePlugin) + .use(dictPlugin) + .use(JsonViewer); //注入权限 app.directive('privilege', { mounted(el, binding) { diff --git a/smart-admin-web-javascript/src/plugins/dict-plugin.js b/smart-admin-web-javascript/src/plugins/dict-plugin.js new file mode 100644 index 00000000..2137996e --- /dev/null +++ b/smart-admin-web-javascript/src/plugins/dict-plugin.js @@ -0,0 +1,31 @@ +/* + * 字典插件 + * 此插件为 1024创新实验室 自创的插件 + * + * @Author: 1024创新实验室-主任:卓大 + * @Date: 2024-09-06 20:51:03 + * @Wechat: zhuda1024 + * @Email: lab1024@163.com + * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 + */ +import { useDictStore } from '/@/store/modules/system/dict.js'; + +export default { + install: (app) => { + + const dictPlugin = {}; + + /** + * 根据枚举值获取描述 + * @param {*} dictCode 字典编码 + * @param {*} value 值 + * @returns + */ + dictPlugin.getDataLabels = function (dictCode, value) { + return useDictStore().getDataLabels(dictCode, value); + }; + + app.config.globalProperties.$dictPlugin = dictPlugin; + app.provide('dictPlugin', dictPlugin); + }, +}; diff --git a/smart-admin-web-javascript/src/plugins/privilege-plugin.js b/smart-admin-web-javascript/src/plugins/privilege-plugin.js index e2db35fa..547b2593 100644 --- a/smart-admin-web-javascript/src/plugins/privilege-plugin.js +++ b/smart-admin-web-javascript/src/plugins/privilege-plugin.js @@ -8,6 +8,7 @@ * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 */ import { useUserStore } from '/@/store/modules/system/user'; +import _ from 'lodash'; const privilege = (value) => { // 超级管理员 diff --git a/smart-admin-web-javascript/src/store/modules/system/dict.js b/smart-admin-web-javascript/src/store/modules/system/dict.js index bd293887..02afa1dc 100644 --- a/smart-admin-web-javascript/src/store/modules/system/dict.js +++ b/smart-admin-web-javascript/src/store/modules/system/dict.js @@ -1,53 +1,57 @@ import { defineStore } from 'pinia'; +import { dictApi } from '/@/api/support/dict-api'; +import { smartSentry } from '/@/lib/smart-sentry'; +import { DICT_SPLIT } from '/@/constants/support/dict-const.js'; +import _ from 'lodash'; export const useDictStore = defineStore({ id: 'dict', state: () => ({ - dict: new Array(), + // 字典集合 + dictMap: new Map(), }), + actions: { - // 获取字典 - getDict(keyCode) { - if (keyCode == null && keyCode == '') { - return null; + // 获取字典数据 + getDictData(dictCode) { + if (!dictCode) { + return []; } - try { - for (let i = 0; i < this.dict.length; i++) { - if (this.dict[i].keyCode == keyCode) { - return this.dict[i].value; - } + let dictDataList = this.dictMap.get(dictCode); + return dictDataList ? dictDataList : []; + }, + + // 获取字典的值名称 + getDataLabels(dictCode, dataValue) { + if (!dataValue) { + return ''; + } + let dict = this.getDictData(dictCode); + if (dict.length === 0) { + return ''; + } + + let valueArray = dataValue.split(DICT_SPLIT); + let result = []; + for (let item of valueArray) { + let target = _.find(dict, { dataValue: item }); + if (target) { + result.push(target.dataLabel); } - } catch (e) { - return null; } + return result.join(DICT_SPLIT); }, - // 设置字典 - setDict(keyCode, value) { - if (keyCode !== null && keyCode !== '') { - this.dict.push({ - key: keyCode, - value: value, - }); - } - }, - // 删除字典 - removeDict(keyCode) { - let flag = false; - try { - for (let i = 0; i < this.dict.length; i++) { - if (this.dict[i].keyCode == keyCode) { - this.dict.splice(i, 1); - return true; - } + // 初始化字典 + initData(dictDataList){ + this.dictMap.clear(); + for (let data of dictDataList) { + let dataArray = this.dictMap.get(data.dictCode); + if (!dataArray) { + dataArray = []; + this.dictMap.set(data.dictCode, dataArray); } - } catch (e) { - flag = false; + dataArray.push(data); } - return false; - }, - // 清空字典 - cleanDict() { - this.dict = new Array(); }, }, }); diff --git a/smart-admin-web-javascript/src/store/modules/system/user.js b/smart-admin-web-javascript/src/store/modules/system/user.js index d31f6f71..ff262e20 100644 --- a/smart-admin-web-javascript/src/store/modules/system/user.js +++ b/smart-admin-web-javascript/src/store/modules/system/user.js @@ -124,6 +124,10 @@ export const useUserStore = defineStore({ localRemove(localKey.USER_TOKEN); localRemove(localKey.USER_POINTS); localRemove(localKey.USER_TAG_NAV); + localRemove(localKey.APP_CONFIG); + localRemove(localKey.HOME_QUICK_ENTRY); + localRemove(localKey.NOTICE_READ); + localRemove(localKey.TO_BE_DONE); }, // 查询未读消息数量 async queryUnreadMessageCount() { @@ -179,9 +183,11 @@ export const useUserStore = defineStore({ // 获取待办工作数 this.queryToBeDoneList(); }, + setToken(token) { this.token = token; }, + //设置标签页 setTagNav(route, from) { if (_.isNull(this.tagNav)) { @@ -206,7 +212,7 @@ export const useUserStore = defineStore({ // @ts-ignore menuTitle: route.meta.title, menuQuery: route.query, - menuIcon:route.meta?.icon, + menuIcon:route.meta?.icon, // @ts-ignore fromMenuName: from.name, fromMenuQuery: from.query, diff --git a/smart-admin-web-javascript/src/theme/index.less b/smart-admin-web-javascript/src/theme/index.less index ae50862a..34c6f8d8 100644 --- a/smart-admin-web-javascript/src/theme/index.less +++ b/smart-admin-web-javascript/src/theme/index.less @@ -1,11 +1,11 @@ -/* +/* * 默认样式的修改 - * - * @Author: 1024创新实验室-主任:卓大 - * @Date: 2022-09-12 14:41:59 - * @Wechat: zhuda1024 - * @Email: lab1024@163.com - * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 + * + * @Author: 1024创新实验室-主任:卓大 + * @Date: 2022-09-12 14:41:59 + * @Wechat: zhuda1024 + * @Email: lab1024@163.com + * @Copyright 1024创新实验室 ( https://1024lab.net ),Since 2012 */ @import 'ant-design-vue/dist/reset.css'; @@ -63,6 +63,11 @@ body { height: 100%; } +/********************************** 富文本HTML样式 **********************************/ +.ant-modal-root div[aria-hidden="true"] { + display: none !important; +} + /********************************** 富文本HTML样式 **********************************/ .html-content { /* table 样式 */ diff --git a/smart-admin-web-javascript/src/utils/dict.js b/smart-admin-web-javascript/src/utils/dict.js deleted file mode 100644 index 27150ed3..00000000 --- a/smart-admin-web-javascript/src/utils/dict.js +++ /dev/null @@ -1,22 +0,0 @@ -import { useDictStore } from '/@/store/modules/system/dict'; -import { dictApi } from '/@/api/support/dict-api'; - -/** - * 获取字典数据 - */ - -export function useDict(...args) { - let res = {}; - args.forEach(async (keyCode, index) => { - res[keyCode] = []; - const dicts = useDictStore().getDict(keyCode); - if (dicts) { - res[keyCode] = dicts; - } else { - let result = await dictApi.valueList(keyCode); - res[keyCode] = result.data; - useDictStore().setDict(keyCode, res[keyCode]); - } - }); - return res; -} diff --git a/smart-admin-web-javascript/src/views/business/erp/goods/components/goods-form-modal.vue b/smart-admin-web-javascript/src/views/business/erp/goods/components/goods-form-modal.vue index 4c2cf20e..3ff7757d 100644 --- a/smart-admin-web-javascript/src/views/business/erp/goods/components/goods-form-modal.vue +++ b/smart-admin-web-javascript/src/views/business/erp/goods/components/goods-form-modal.vue @@ -20,7 +20,7 @@ - + @@ -65,6 +65,7 @@ import { smartSentry } from '/@/lib/smart-sentry'; import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue'; import DictSelect from '/@/components/support/dict-select/index.vue'; + import { DICT_CODE_ENUM } from '/@/constants/support/dict-const'; // emit const emit = defineEmits(['reloadList']); diff --git a/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue b/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue index 39f793b1..7b58088c 100644 --- a/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue +++ b/smart-admin-web-javascript/src/views/business/erp/goods/goods-list.vue @@ -25,7 +25,7 @@ - + @@ -44,13 +44,13 @@ 查询 重置 @@ -93,7 +93,7 @@
- +
@@ -120,7 +120,7 @@ {{ text }}