From ee12519797ebb8356a221e7b56ad495736c79d01 Mon Sep 17 00:00:00 2001 From: zhuoda Date: Sat, 3 May 2025 21:36:37 +0800 Subject: [PATCH] =?UTF-8?q?v3.20.0=20=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95=E4=BD=BF=E7=94=A8spring=20?= =?UTF-8?q?cache=EF=BC=9B=E3=80=90=E6=96=B0=E5=A2=9E=E3=80=91=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E9=83=A8=E9=97=A8cache=EF=BC=9B=E3=80=90=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E3=80=91=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=EF=BC=9B=E3=80=90=E4=BC=98=E5=8C=96=E3=80=91=E4=B8=89?= =?UTF-8?q?=E7=BA=A7=E7=AD=89=E4=BF=9DLabel=E6=98=BE=E7=A4=BA=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sa/admin/constant/AdminCacheConst.java | 21 ++- .../goods/domain/form/GoodsQueryForm.java | 2 +- .../business/goods/domain/vo/GoodsVO.java | 1 - .../bank/{ => controller}/BankController.java | 3 +- .../business/oa/bank/{ => dao}/BankDao.java | 3 +- .../oa/bank/{ => service}/BankService.java | 3 +- .../{ => controller}/InvoiceController.java | 3 +- .../oa/invoice/{ => dao}/InvoiceDao.java | 3 +- .../invoice/{ => service}/InvoiceService.java | 3 +- .../system/department/dao/DepartmentDao.java | 2 +- .../manager/DepartmentCacheManager.java | 30 +--- .../department/service/DepartmentService.java | 44 +---- .../form/EmployeeUpdatePasswordForm.java | 2 - .../system/login/manager/LoginManager.java | 162 ++++++++++++++++++ .../system/login/service/LoginService.java | 152 +++------------- .../role/manager/RoleEmployeeManager.java | 4 - .../mapper/business/oa/bank/BankMapper.xml | 2 +- .../business/oa/invoice/InvoiceMapper.xml | 2 +- .../system/department/DepartmentMapper.xml | 11 ++ .../sa/base/common/domain/UserPermission.java | 3 +- .../lab1024/sa/base/config/CacheConfig.java | 11 ++ .../module/support/cache/CacheService.java | 9 - .../backend/domain/MapperVariableService.java | 2 - .../variable/front/ListVariableService.java | 9 +- .../job/api/domain/SmartJobUpdateForm.java | 5 - .../base/module/support/mail/MailService.java | 2 +- .../domain/MessageTemplateSendForm.java | 7 + .../reload/core/SmartReloadManager.java | 3 - .../core/thread/SmartReloadRunnable.java | 1 - .../repeatsubmit/annoation/RepeatSubmit.java | 2 +- .../ticket/RepeatSubmitCaffeineTicket.java | 1 - .../ticket/RepeatSubmitRedisTicket.java | 2 - .../java/domain/entity/Entity.java.vm | 2 +- .../code-generator-template/js/list.vue.vm | 8 + .../src/main/resources/pre/sa-base.yaml | 2 +- .../src/main/resources/prod/sa-base.yaml | 2 +- .../src/main/resources/test/sa-base.yaml | 2 +- .../sa/admin/constant/AdminCacheConst.java | 21 ++- .../bank/{ => controller}/BankController.java | 3 +- .../business/oa/bank/{ => dao}/BankDao.java | 3 +- .../oa/bank/{ => service}/BankService.java | 3 +- .../EnterpriseController.java | 3 +- .../EnterpriseEmployeeManager.java | 2 +- .../{ => service}/EnterpriseService.java | 3 +- .../{ => controller}/InvoiceController.java | 3 +- .../oa/invoice/{ => dao}/InvoiceDao.java | 3 +- .../invoice/{ => service}/InvoiceService.java | 5 +- .../{ => controller}/DataScopeController.java | 2 +- .../system/department/dao/DepartmentDao.java | 2 +- .../manager/DepartmentCacheManager.java | 43 ++--- .../department/service/DepartmentService.java | 47 +---- .../system/login/domain/RequestEmployee.java | 4 +- .../system/login/manager/LoginManager.java | 162 ++++++++++++++++++ .../system/login/service/LoginService.java | 145 +++------------- .../mapper/business/oa/bank/BankMapper.xml | 2 +- .../business/oa/invoice/InvoiceMapper.xml | 2 +- .../system/department/DepartmentMapper.xml | 11 ++ .../sa/base/common/domain/UserPermission.java | 3 +- .../lab1024/sa/base/config/CacheConfig.java | 18 ++ .../variable/front/ListVariableService.java | 9 +- .../base/module/support/mail/MailService.java | 2 +- .../java/domain/entity/Entity.java.vm | 2 +- .../code-generator-template/js/list.vue.vm | 8 + .../src/main/resources/dev/sa-base.yaml | 6 +- .../src/main/resources/pre/sa-base.yaml | 2 +- .../src/main/resources/prod/sa-base.yaml | 2 +- .../src/main/resources/test/sa-base.yaml | 2 +- smart-admin-web-javascript/README.en.md | 0 smart-admin-web-javascript/README.md | 0 .../src/assets/images/login/login-min.gif | Bin 0 -> 1513571 bytes .../components/support/dict-label/index.vue | 2 +- .../src/store/modules/system/dict.js | 13 +- .../code-generator/code-generator-list.vue | 2 +- .../level3-protect-config-index.vue | 2 +- .../components/message-receiver-modal.vue | 8 +- .../message/components/message-send-form.vue | 10 +- .../src/views/system/home/index.vue | 4 +- .../src/views/system/login3/login.vue | 3 +- .../components/role-tree/role-tree-menu.vue | 6 +- smart-admin-web-typescript/README.md | 0 smart-admin-web-typescript/src/App.vue | 20 +-- .../src/assets/images/login/login-min.gif | Bin 0 -> 1513571 bytes .../framework/smart-enum-select/index.vue | 2 +- .../components/support/dict-label/index.vue | 2 +- .../src/config/app-config.ts | 8 +- .../header-user-space/header-setting.vue | 6 +- .../components/side-menu/recursion-menu.vue | 1 + .../src/store/modules/system/dict.ts | 13 +- .../components/enterprise-bank-list.vue | 6 +- .../enterprise-bank-operate-modal.vue | 4 +- .../components/enterprise-employee-list.vue | 93 +++++----- .../components/enterprise-invoice-list.vue | 9 +- .../enterprise-invoice-operate-modal.vue | 4 +- .../components/enterprise-operate-modal.vue | 13 +- .../code-generator/code-generator-list.vue | 2 +- .../dict/components/dict-form-modal.vue | 2 +- .../src/views/support/dict/index.vue | 8 +- .../level3-protect-config-index.vue | 2 +- .../components/message-receiver-modal.vue | 10 +- .../message/components/message-send-form.vue | 12 +- .../views/support/message/message-list.vue | 2 +- .../src/views/system/home/index.vue | 4 +- .../src/views/system/login3/login.vue | 3 +- .../menu/components/menu-operate-modal.vue | 32 ++-- .../views/system/menu/menu-data-handler.ts | 2 +- .../src/views/system/menu/menu-list.vue | 2 +- .../components/role-tree/role-tree-menu.vue | 6 +- 107 files changed, 715 insertions(+), 652 deletions(-) rename smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/{ => controller}/BankController.java (95%) rename smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/{ => dao}/BankDao.java (93%) rename smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/{ => service}/BankService.java (97%) rename smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/{ => controller}/InvoiceController.java (95%) rename smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/{ => dao}/InvoiceDao.java (94%) rename smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/{ => service}/InvoiceService.java (97%) create mode 100644 smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/manager/LoginManager.java rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/{ => controller}/BankController.java (95%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/{ => dao}/BankDao.java (93%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/{ => service}/BankService.java (97%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/{ => controller}/EnterpriseController.java (97%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/{ => manager}/EnterpriseEmployeeManager.java (90%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/enterprise/{ => service}/EnterpriseService.java (98%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/{ => controller}/InvoiceController.java (95%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/{ => dao}/InvoiceDao.java (94%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/{ => service}/InvoiceService.java (96%) rename smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/datascope/{ => controller}/DataScopeController.java (94%) create mode 100644 smart-admin-api-java8-springboot2/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/manager/LoginManager.java delete mode 100644 smart-admin-web-javascript/README.en.md delete mode 100644 smart-admin-web-javascript/README.md create mode 100644 smart-admin-web-javascript/src/assets/images/login/login-min.gif delete mode 100644 smart-admin-web-typescript/README.md create mode 100644 smart-admin-web-typescript/src/assets/images/login/login-min.gif diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java index aa4378ca..de077e9a 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/constant/AdminCacheConst.java @@ -20,11 +20,6 @@ public class AdminCacheConst extends CacheKeyConst { */ public static final String DEPARTMENT_LIST_CACHE = "department_list_cache"; - /** - * 部门map - */ - public static final String DEPARTMENT_MAP_CACHE = "department_map_cache"; - /** * 部门树 */ @@ -54,4 +49,20 @@ public class AdminCacheConst extends CacheKeyConst { public static final String CATEGORY_TREE = "category_tree_cache"; } + /** + * 登录相关 + */ + public static class Login { + + /** + * 请求用户信息 + */ + public static final String REQUEST_EMPLOYEE = "login_request_employee"; + + /** + * 请求用户信息权限 + */ + public static final String USER_PERMISSION = "login_user_permission"; + } + } 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 d726a9a5..7f9cc0e9 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 @@ -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 { diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java index 24f07738..191965f9 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/goods/domain/vo/GoodsVO.java +++ b/smart-admin-api-java17-springboot3/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-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/controller/BankController.java similarity index 95% rename from smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java rename to smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/controller/BankController.java index e165817e..73216433 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/controller/BankController.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.admin.module.business.oa.bank; +package net.lab1024.sa.admin.module.business.oa.bank.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import io.swagger.v3.oas.annotations.Operation; @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; +import net.lab1024.sa.admin.module.business.oa.bank.service.BankService; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankCreateForm; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankQueryForm; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankUpdateForm; 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/dao/BankDao.java similarity index 93% rename from smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankDao.java rename to smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/dao/BankDao.java index f553221c..0a058d17 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/dao/BankDao.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.admin.module.business.oa.bank; +package net.lab1024.sa.admin.module.business.oa.bank.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -7,7 +7,6 @@ import net.lab1024.sa.admin.module.business.oa.bank.domain.BankQueryForm; import net.lab1024.sa.admin.module.business.oa.bank.domain.BankVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; import java.util.List; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/service/BankService.java similarity index 97% rename from smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java rename to smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/service/BankService.java index 177c50d3..5b32bf62 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/BankService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/bank/service/BankService.java @@ -1,8 +1,9 @@ -package net.lab1024.sa.admin.module.business.oa.bank; +package net.lab1024.sa.admin.module.business.oa.bank.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.admin.module.business.oa.bank.dao.BankDao; import net.lab1024.sa.admin.module.business.oa.bank.domain.*; import net.lab1024.sa.admin.module.business.oa.enterprise.dao.EnterpriseDao; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.entity.EnterpriseEntity; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/controller/InvoiceController.java similarity index 95% rename from smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java rename to smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/controller/InvoiceController.java index 13d3b98f..380be168 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceController.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/controller/InvoiceController.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.admin.module.business.oa.invoice; +package net.lab1024.sa.admin.module.business.oa.invoice.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import io.swagger.v3.oas.annotations.Operation; @@ -7,6 +7,7 @@ import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.constant.AdminSwaggerTagConst; +import net.lab1024.sa.admin.module.business.oa.invoice.service.InvoiceService; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceAddForm; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceQueryForm; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceUpdateForm; 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/dao/InvoiceDao.java similarity index 94% rename from smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceDao.java rename to smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/dao/InvoiceDao.java index 68c8d9a9..5afcebbc 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/dao/InvoiceDao.java @@ -1,4 +1,4 @@ -package net.lab1024.sa.admin.module.business.oa.invoice; +package net.lab1024.sa.admin.module.business.oa.invoice.dao; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -7,7 +7,6 @@ import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceQueryForm; import net.lab1024.sa.admin.module.business.oa.invoice.domain.InvoiceVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; import java.util.List; diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/service/InvoiceService.java similarity index 97% rename from smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java rename to smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/service/InvoiceService.java index dda73c3a..bfa87e09 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/InvoiceService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/business/oa/invoice/service/InvoiceService.java @@ -1,10 +1,11 @@ -package net.lab1024.sa.admin.module.business.oa.invoice; +package net.lab1024.sa.admin.module.business.oa.invoice.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.admin.module.business.oa.enterprise.EnterpriseService; import net.lab1024.sa.admin.module.business.oa.enterprise.domain.vo.EnterpriseVO; +import net.lab1024.sa.admin.module.business.oa.invoice.dao.InvoiceDao; import net.lab1024.sa.admin.module.business.oa.invoice.domain.*; import net.lab1024.sa.base.common.domain.PageResult; import net.lab1024.sa.base.common.domain.ResponseDTO; 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 4924d5a5..011f0168 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 @@ -5,7 +5,6 @@ import net.lab1024.sa.admin.module.system.department.domain.entity.DepartmentEnt import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; -import org.springframework.stereotype.Component; import java.util.List; @@ -32,4 +31,5 @@ public interface DepartmentDao extends BaseMapper { */ List listAll(); + DepartmentVO selectDepartmentVO(@Param("departmentId")Long departmentId); } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java index a53a74e3..d829d355 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/manager/DepartmentCacheManager.java @@ -29,7 +29,7 @@ import java.util.stream.Collectors; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Slf4j @Service @@ -42,7 +42,7 @@ public class DepartmentCacheManager { log.info("clear " + cache); } - @CacheEvict(value = {AdminCacheConst.Department.DEPARTMENT_LIST_CACHE, AdminCacheConst.Department.DEPARTMENT_MAP_CACHE, AdminCacheConst.Department.DEPARTMENT_SELF_CHILDREN_CACHE, AdminCacheConst.Department.DEPARTMENT_TREE_CACHE, AdminCacheConst.Department.DEPARTMENT_PATH_CACHE,}, allEntries = true) + @CacheEvict(value = {AdminCacheConst.Department.DEPARTMENT_LIST_CACHE, AdminCacheConst.Department.DEPARTMENT_SELF_CHILDREN_CACHE, AdminCacheConst.Department.DEPARTMENT_TREE_CACHE, AdminCacheConst.Department.DEPARTMENT_PATH_CACHE,}, allEntries = true) public void clearCache() { logClearInfo(AdminCacheConst.Department.DEPARTMENT_LIST_CACHE); } @@ -56,19 +56,8 @@ public class DepartmentCacheManager { return departmentDao.listAll(); } - /** - * 部门map - * - */ - @Cacheable(AdminCacheConst.Department.DEPARTMENT_MAP_CACHE) - public Map getDepartmentMap() { - return departmentDao.listAll().stream().collect(Collectors.toMap(DepartmentVO::getDepartmentId, Function.identity())); - } - - /** * 缓存部门树结构 - * */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_TREE_CACHE) public List getDepartmentTree() { @@ -78,7 +67,6 @@ public class DepartmentCacheManager { /** * 缓存某个部门的下级id列表 - * */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_SELF_CHILDREN_CACHE) public List getDepartmentSelfAndChildren(Long departmentId) { @@ -89,7 +77,6 @@ public class DepartmentCacheManager { /** * 部门的路径名称 - * */ @Cacheable(AdminCacheConst.Department.DEPARTMENT_PATH_CACHE) public Map getDepartmentPathMap() { @@ -125,7 +112,6 @@ public class DepartmentCacheManager { /** * 构建部门树结构 - * */ public List buildTree(List voList) { if (CollectionUtils.isEmpty(voList)) { @@ -140,7 +126,7 @@ public class DepartmentCacheManager { return treeVOList; } - /** + /** * 构建所有根节点的下级树形结构 * 返回值为层序遍历结果 * [由于departmentDao中listAll给出数据根据Sort降序 所以同一层中Sort值较大的优先遍历] @@ -148,7 +134,7 @@ public class DepartmentCacheManager { private List recursiveBuildTree(List nodeList, List allDepartmentList) { int nodeSize = nodeList.size(); List childIdList = new ArrayList<>(); - for(int i = 0; i < nodeSize; i++) { + for (int i = 0; i < nodeSize; i++) { int preIndex = i - 1; int nextIndex = i + 1; DepartmentTreeVO node = nodeList.get(i); @@ -167,14 +153,14 @@ public class DepartmentCacheManager { tempChildIdList = this.recursiveBuildTree(children, allDepartmentList); } - if(CollectionUtils.isEmpty(node.getSelfAndAllChildrenIdList())) { + if (CollectionUtils.isEmpty(node.getSelfAndAllChildrenIdList())) { node.setSelfAndAllChildrenIdList( new ArrayList<>() ); } node.getSelfAndAllChildrenIdList().add(node.getDepartmentId()); - if(CollectionUtils.isNotEmpty(tempChildIdList)) { + if (CollectionUtils.isNotEmpty(tempChildIdList)) { node.getSelfAndAllChildrenIdList().addAll(tempChildIdList); childIdList.addAll(tempChildIdList); } @@ -182,7 +168,7 @@ public class DepartmentCacheManager { } // 保证本层遍历顺序 - for(int i = nodeSize - 1; i >= 0; i--) { + for (int i = nodeSize - 1; i >= 0; i--) { childIdList.add(0, nodeList.get(i).getDepartmentId()); } @@ -192,7 +178,6 @@ public class DepartmentCacheManager { /** * 获取子元素 - * */ private List getChildren(Long departmentId, List voList) { List childrenEntityList = voList.stream().filter(e -> departmentId.equals(e.getParentId())).collect(Collectors.toList()); @@ -205,7 +190,6 @@ public class DepartmentCacheManager { /** * 通过部门id,获取当前以及下属部门 - * */ public List selfAndChildrenIdList(Long departmentId, List voList) { List selfAndChildrenIdList = Lists.newArrayList(); diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java index 5f7d1520..3c38e705 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/department/service/DepartmentService.java @@ -26,7 +26,7 @@ import java.util.Map; * @Date 2022-01-12 20:37:48 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ @Service public class DepartmentService { @@ -44,7 +44,6 @@ public class DepartmentService { /** * 新增添加部门 - * */ public ResponseDTO addDepartment(DepartmentAddForm departmentAddForm) { @@ -57,7 +56,6 @@ public class DepartmentService { /** * 更新部门信息 - * */ public ResponseDTO updateDepartment(DepartmentUpdateForm updateDTO) { if (updateDTO.getParentId() == null) { @@ -78,7 +76,6 @@ public class DepartmentService { * 根据id删除部门 * 1、需要判断当前部门是否有子部门,有子部门则不允许删除 * 2、需要判断当前部门是否有员工,有员工则不能删除 - * */ public ResponseDTO deleteDepartment(Long departmentId) { DepartmentEntity departmentEntity = departmentDao.selectById(departmentId); @@ -122,7 +119,6 @@ public class DepartmentService { /** * 自身以及所有下级的部门id列表 - * */ public List selfAndChildrenIdList(Long departmentId) { return departmentCacheManager.getDepartmentSelfAndChildren(departmentId); @@ -131,7 +127,6 @@ public class DepartmentService { /** * 获取所有部门 - * */ public List listAll() { return departmentCacheManager.getDepartmentList(); @@ -140,10 +135,9 @@ public class DepartmentService { /** * 获取部门 - * */ public DepartmentVO getDepartmentById(Long departmentId) { - return departmentCacheManager.getDepartmentMap().get(departmentId); + return departmentDao.selectDepartmentVO(departmentId); } /** @@ -153,38 +147,4 @@ public class DepartmentService { return departmentCacheManager.getDepartmentPathMap().get(departmentId); } - /** - * 查询全部父级部门(不包含自己) - * - */ - public List queryAllParentDepartment(Long departmentId) { - List list = new ArrayList<>(); - - Map departmentMap = departmentCacheManager.getDepartmentMap(); - DepartmentVO departmentVO = departmentMap.get(departmentId); - while (departmentVO != null) { - list.add(departmentVO); - departmentVO = departmentMap.get(departmentVO.getParentId()); - } - Collections.reverse(list); - return list; - } - - /** - * 查询全部父级部门(不包含自己) - * - */ - public List queryAllParentDepartmentIdList(Long departmentId) { - List list = new ArrayList<>(); - - Map departmentMap = departmentCacheManager.getDepartmentMap(); - DepartmentVO departmentVO = departmentMap.get(departmentId); - while (departmentVO != null) { - list.add(departmentVO.getDepartmentId()); - departmentVO = departmentMap.get(departmentVO.getParentId()); - } - Collections.reverse(list); - return list; - } - } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java index f3d96baf..07202e26 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/employee/domain/form/EmployeeUpdatePasswordForm.java @@ -2,9 +2,7 @@ package net.lab1024.sa.admin.module.system.employee.domain.form; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Pattern; import lombok.Data; -import net.lab1024.sa.base.common.util.SmartVerificationUtil; /** * 修改密码所需参数 diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/manager/LoginManager.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/manager/LoginManager.java new file mode 100644 index 00000000..8fdc9a1d --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/login/manager/LoginManager.java @@ -0,0 +1,162 @@ +package net.lab1024.sa.admin.module.system.login.manager; + +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import net.lab1024.sa.admin.constant.AdminCacheConst; +import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; +import net.lab1024.sa.admin.module.system.department.service.DepartmentService; +import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; +import net.lab1024.sa.admin.module.system.employee.service.EmployeeService; +import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; +import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; +import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; +import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; +import net.lab1024.sa.admin.module.system.role.service.RoleMenuService; +import net.lab1024.sa.base.common.constant.StringConst; +import net.lab1024.sa.base.common.domain.ResponseDTO; +import net.lab1024.sa.base.common.domain.UserPermission; +import net.lab1024.sa.base.common.enumeration.UserTypeEnum; +import net.lab1024.sa.base.common.util.SmartBeanUtil; +import net.lab1024.sa.base.module.support.file.service.IFileStorageService; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.stream.Collectors; + +/** + * 登录Manager + * + * @Author 1024创新实验室: 卓大 + * @Date 2025-05-03 22:56:34 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Slf4j +@Service +public class LoginManager { + + @Resource + private DepartmentService departmentService; + + @Resource + private IFileStorageService fileStorageService; + + @Resource + private EmployeeService employeeService; + + @Resource + private RoleEmployeeService roleEmployeeService; + + @Resource + private RoleMenuService roleMenuService; + + + /** + * 获取请求用户信息 + */ + @Cacheable(AdminCacheConst.Login.REQUEST_EMPLOYEE) + public RequestEmployee getRequestEmployee(Long requestEmployeeId ) { + if (requestEmployeeId == null) { + return null; + } + // 员工基本信息 + EmployeeEntity employeeEntity = employeeService.getById(requestEmployeeId); + if (employeeEntity == null) { + return null; + } + + return this.loadLoginInfo(employeeEntity); + } + + /** + * 获取登录的用户信息 + */ + @CachePut(value = AdminCacheConst.Login.REQUEST_EMPLOYEE, key = "#employeeEntity.employeeId") + public RequestEmployee loadLoginInfo(EmployeeEntity employeeEntity) { + // 基础信息 + RequestEmployee requestEmployee = SmartBeanUtil.copy(employeeEntity, RequestEmployee.class); + requestEmployee.setUserType(UserTypeEnum.ADMIN_EMPLOYEE); + + // 部门信息 + DepartmentVO department = departmentService.getDepartmentById(employeeEntity.getDepartmentId()); + requestEmployee.setDepartmentName(null == department ? StringConst.EMPTY : department.getName()); + + // 头像信息 + String avatar = employeeEntity.getAvatar(); + if (StringUtils.isNotBlank(avatar)) { + ResponseDTO getFileUrl = fileStorageService.getFileUrl(avatar); + if (BooleanUtils.isTrue(getFileUrl.getOk())) { + requestEmployee.setAvatar(getFileUrl.getData()); + } + } + return requestEmployee; + } + + + /** + * 获取用户的权限(包含 角色列表、权限列表) + */ + @Cacheable(AdminCacheConst.Login.USER_PERMISSION) + public UserPermission getUserPermission(Long employeeId) { + if(null == employeeId){ + return null; + } + + return this.loadUserPermission(employeeId); + } + + /** + * 获取用户的权限(包含 角色列表、权限列表) + */ + @CachePut(AdminCacheConst.Login.USER_PERMISSION) + public UserPermission loadUserPermission(Long employeeId) { + UserPermission userPermission = new UserPermission(); + userPermission.setPermissionList(new ArrayList<>()); + userPermission.setRoleList(new ArrayList<>()); + + // 角色列表 + List roleList = roleEmployeeService.getRoleIdList(employeeId); + userPermission.getRoleList().addAll(roleList.stream().map(RoleVO::getRoleCode).collect(Collectors.toSet())); + + // 前端菜单和功能点清单 + EmployeeEntity employeeEntity = employeeService.getById(employeeId); + + List menuAndPointsList = roleMenuService.getMenuList(roleList.stream().map(RoleVO::getRoleId).collect(Collectors.toList()), employeeEntity.getAdministratorFlag()); + + // 权限列表 + HashSet permissionSet = new HashSet<>(); + for (MenuVO menu : menuAndPointsList) { + if (menu.getPermsType() == null) { + continue; + } + + String perms = menu.getApiPerms(); + if (StringUtils.isEmpty(perms)) { + continue; + } + //接口权限 + String[] split = perms.split(","); + permissionSet.addAll(Arrays.asList(split)); + } + userPermission.getPermissionList().addAll(permissionSet); + + return userPermission; + } + + + @CacheEvict(value = {AdminCacheConst.Login.USER_PERMISSION, AdminCacheConst.Login.REQUEST_EMPLOYEE}, allEntries = true) + public void clear(){ + + } + + +} 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 27bbc71b..c5fa8c7d 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 @@ -6,17 +6,16 @@ import cn.hutool.core.lang.UUID; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.extra.servlet.JakartaServletUtil; -import com.googlecode.concurrentlinkedhashmap.ConcurrentLinkedHashMap; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import lombok.extern.slf4j.Slf4j; -import net.lab1024.sa.admin.module.system.department.domain.vo.DepartmentVO; import net.lab1024.sa.admin.module.system.department.service.DepartmentService; import net.lab1024.sa.admin.module.system.employee.domain.entity.EmployeeEntity; import net.lab1024.sa.admin.module.system.employee.service.EmployeeService; import net.lab1024.sa.admin.module.system.login.domain.LoginForm; import net.lab1024.sa.admin.module.system.login.domain.LoginResultVO; import net.lab1024.sa.admin.module.system.login.domain.RequestEmployee; +import net.lab1024.sa.admin.module.system.login.manager.LoginManager; import net.lab1024.sa.admin.module.system.menu.domain.vo.MenuVO; import net.lab1024.sa.admin.module.system.role.domain.vo.RoleVO; import net.lab1024.sa.admin.module.system.role.service.RoleEmployeeService; @@ -48,21 +47,22 @@ import net.lab1024.sa.base.module.support.mail.MailService; import net.lab1024.sa.base.module.support.mail.constant.MailTemplateCodeEnum; import net.lab1024.sa.base.module.support.redis.RedisService; import net.lab1024.sa.base.module.support.securityprotect.domain.LoginFailEntity; -import net.lab1024.sa.base.module.support.securityprotect.service.*; -import org.apache.commons.lang3.BooleanUtils; -import org.apache.commons.lang3.StringUtils; +import net.lab1024.sa.base.module.support.securityprotect.service.Level3ProtectConfigService; +import net.lab1024.sa.base.module.support.securityprotect.service.SecurityLoginService; +import net.lab1024.sa.base.module.support.securityprotect.service.SecurityPasswordService; import org.springframework.stereotype.Service; import java.time.LocalDateTime; -import java.util.*; -import java.util.concurrent.ConcurrentMap; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; import java.util.stream.Collectors; /** * 登录 * - * @Author 1024创新实验室: 开云 - * @Date 2021-12-01 22:56:34 + * @Author 1024创新实验室: 卓大 + * @Date 2025-05-03 22:56:34 * @Wechat zhuoda1024 * @Email lab1024@163.com * @Copyright 1024创新实验室 @@ -76,22 +76,6 @@ public class LoginService implements StpInterface { */ private static final String SUPER_PASSWORD_LOGIN_ID_PREFIX = "S"; - /** - * 最大在线缓存人数 - */ - private static final long CACHE_MAX_ONLINE_PERSON_COUNT = 1000L; - - /** - * 登录信息二级缓存 - */ - private final ConcurrentMap loginEmployeeCache = new ConcurrentLinkedHashMap.Builder().maximumWeightedCapacity(CACHE_MAX_ONLINE_PERSON_COUNT).build(); - - - /** - * 权限 缓存 - */ - private final ConcurrentMap permissionCache = new ConcurrentLinkedHashMap.Builder().maximumWeightedCapacity(CACHE_MAX_ONLINE_PERSON_COUNT).build(); - @Resource private EmployeeService employeeService; @@ -134,6 +118,9 @@ public class LoginService implements StpInterface { @Resource private RedisService redisService; + @Resource + private LoginManager loginManager; + /** * 获取验证码 */ @@ -224,10 +211,7 @@ public class LoginService implements StpInterface { } // 获取员工信息 - RequestEmployee requestEmployee = loadLoginInfo(employeeEntity); - - // 放入缓存 - loginEmployeeCache.put(employeeEntity.getEmployeeId(), requestEmployee); + RequestEmployee requestEmployee = loginManager.loadLoginInfo(employeeEntity); // 移除登录失败 securityLoginService.removeLoginFail(employeeEntity.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE); @@ -242,8 +226,8 @@ public class LoginService implements StpInterface { // 设置 token loginResultVO.setToken(token); - // 清除权限缓存 - permissionCache.remove(employeeEntity.getEmployeeId()); + // 更新用户权限 + loginManager.loadUserPermission(employeeEntity.getEmployeeId()); return ResponseDTO.ok(loginResultVO); } @@ -262,10 +246,6 @@ public class LoginService implements StpInterface { List menuAndPointsList = roleMenuService.getMenuList(roleList.stream().map(RoleVO::getRoleId).collect(Collectors.toList()), requestEmployee.getAdministratorFlag()); loginResultVO.setMenuList(menuAndPointsList); - // 更新下后端权限缓存 - UserPermission userPermission = getUserPermission(requestEmployee.getUserId()); - permissionCache.put(requestEmployee.getUserId(), userPermission); - // 上次登录信息 LoginLogVO loginLogVO = loginLogService.queryLastByUserId(requestEmployee.getEmployeeId(), UserTypeEnum.ADMIN_EMPLOYEE, LoginLogResultEnum.LOGIN_SUCCESS); if (loginLogVO != null) { @@ -289,32 +269,6 @@ public class LoginService implements StpInterface { } - /** - * 获取登录的用户信息 - */ - private RequestEmployee loadLoginInfo(EmployeeEntity employeeEntity) { - - // 基础信息 - RequestEmployee requestEmployee = SmartBeanUtil.copy(employeeEntity, RequestEmployee.class); - requestEmployee.setUserType(UserTypeEnum.ADMIN_EMPLOYEE); - - // 部门信息 - DepartmentVO department = departmentService.getDepartmentById(employeeEntity.getDepartmentId()); - requestEmployee.setDepartmentName(null == department ? StringConst.EMPTY : department.getName()); - - // 头像信息 - String avatar = employeeEntity.getAvatar(); - if (StringUtils.isNotBlank(avatar)) { - ResponseDTO getFileUrl = fileStorageService.getFileUrl(avatar); - if (BooleanUtils.isTrue(getFileUrl.getOk())) { - requestEmployee.setAvatar(getFileUrl.getData()); - } - } - - return requestEmployee; - } - - /** * 根据登陆token 获取员请求工信息 */ @@ -328,17 +282,7 @@ public class LoginService implements StpInterface { return null; } - RequestEmployee requestEmployee = loginEmployeeCache.get(requestEmployeeId); - if (requestEmployee == null) { - // 员工基本信息 - EmployeeEntity employeeEntity = employeeService.getById(requestEmployeeId); - if (employeeEntity == null) { - return null; - } - - requestEmployee = this.loadLoginInfo(employeeEntity); - loginEmployeeCache.put(requestEmployeeId, requestEmployee); - } + RequestEmployee requestEmployee = loginManager.getRequestEmployee(requestEmployeeId); // 更新请求ip和user agent requestEmployee.setUserAgent(JakartaServletUtil.getHeaderIgnoreCase(request, RequestHeaderConst.USER_AGENT)); @@ -382,7 +326,7 @@ public class LoginService implements StpInterface { StpUtil.logout(); // 清空登录信息缓存 - loginEmployeeCache.remove(requestUser.getUserId()); + loginManager.clear(); //保存登出日志 LoginLogEntity loginEntity = LoginLogEntity.builder() @@ -400,14 +344,6 @@ public class LoginService implements StpInterface { return ResponseDTO.ok(); } - /** - * 清除员工登录缓存 - */ - public void clearLoginEmployeeCache(Long employeeId) { - // 清空登录信息缓存 - loginEmployeeCache.remove(employeeId); - } - /** * 保存登录日志 */ @@ -435,12 +371,7 @@ public class LoginService implements StpInterface { return Collections.emptyList(); } - UserPermission userPermission = permissionCache.get(employeeId); - if (userPermission == null) { - userPermission = getUserPermission(employeeId); - permissionCache.put(employeeId, userPermission); - } - + UserPermission userPermission = loginManager.getUserPermission(employeeId); return userPermission.getPermissionList(); } @@ -451,51 +382,10 @@ public class LoginService implements StpInterface { return Collections.emptyList(); } - UserPermission userPermission = permissionCache.get(employeeId); - if (userPermission == null) { - userPermission = getUserPermission(employeeId); - permissionCache.put(employeeId, userPermission); - } + UserPermission userPermission = loginManager.getUserPermission(employeeId); return userPermission.getRoleList(); } - /** - * 获取用户的权限(包含 角色列表、权限列表) - */ - private UserPermission getUserPermission(Long employeeId) { - - UserPermission userPermission = new UserPermission(); - userPermission.setPermissionList(new ArrayList<>()); - userPermission.setRoleList(new ArrayList<>()); - - // 角色列表 - List roleList = roleEmployeeService.getRoleIdList(employeeId); - userPermission.getRoleList().addAll(roleList.stream().map(RoleVO::getRoleCode).collect(Collectors.toSet())); - - // 前端菜单和功能点清单 - EmployeeEntity employeeEntity = employeeService.getById(employeeId); - - List menuAndPointsList = roleMenuService.getMenuList(roleList.stream().map(RoleVO::getRoleId).collect(Collectors.toList()), employeeEntity.getAdministratorFlag()); - - // 权限列表 - HashSet permissionSet = new HashSet<>(); - for (MenuVO menu : menuAndPointsList) { - if (menu.getPermsType() == null) { - continue; - } - - String perms = menu.getApiPerms(); - if (StringUtils.isEmpty(perms)) { - continue; - } - //接口权限 - String[] split = perms.split(","); - permissionSet.addAll(Arrays.asList(split)); - } - userPermission.getPermissionList().addAll(permissionSet); - - return userPermission; - } /** * 发送 邮箱 验证码 @@ -590,4 +480,8 @@ public class LoginService implements StpInterface { String redisVerificationCodeKey = redisService.generateRedisKey(RedisKeyConst.Support.LOGIN_VERIFICATION_CODE, UserTypeEnum.ADMIN_EMPLOYEE.getValue() + RedisKeyConst.SEPARATOR + employeeId); redisService.delete(redisVerificationCodeKey); } + + public void clearLoginEmployeeCache(Long employeeId) { + loginManager.clear(); + } } diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java index 6e2d9751..ba33dfd2 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/java/net/lab1024/sa/admin/module/system/role/manager/RoleEmployeeManager.java @@ -3,11 +3,7 @@ package net.lab1024.sa.admin.module.system.role.manager; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import net.lab1024.sa.admin.module.system.role.dao.RoleEmployeeDao; import net.lab1024.sa.admin.module.system.role.domain.entity.RoleEmployeeEntity; -import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; /** * 角色员工 manager diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/bank/BankMapper.xml b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/bank/BankMapper.xml index 79b505db..c742cc76 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/bank/BankMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/bank/BankMapper.xml @@ -1,6 +1,6 @@ - + UPDATE t_oa_bank SET deleted_flag = #{deletedFlag} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/invoice/InvoiceMapper.xml b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/invoice/InvoiceMapper.xml index 0001d92f..afbc0469 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/invoice/InvoiceMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/business/oa/invoice/InvoiceMapper.xml @@ -1,6 +1,6 @@ - + UPDATE t_oa_invoice SET deleted_flag = #{deletedFlag} diff --git a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/department/DepartmentMapper.xml b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/department/DepartmentMapper.xml index 326d94f5..8ee2974d 100644 --- a/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/department/DepartmentMapper.xml +++ b/smart-admin-api-java17-springboot3/sa-admin/src/main/resources/mapper/system/department/DepartmentMapper.xml @@ -19,5 +19,16 @@ WHERE parent_id = #{departmentId} + + \ No newline at end of file diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java index c10897d0..355b9482 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/domain/UserPermission.java @@ -2,6 +2,7 @@ package net.lab1024.sa.base.common.domain; import lombok.Data; +import java.io.Serializable; import java.util.List; /** @@ -15,7 +16,7 @@ import java.util.List; */ @Data -public class UserPermission { +public class UserPermission implements Serializable { /** * 权限列表 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 index bf6de16a..356b082c 100644 --- 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 @@ -1,11 +1,14 @@ package net.lab1024.sa.base.config; +import com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer; 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; +import org.springframework.data.redis.cache.RedisCacheConfiguration; +import org.springframework.data.redis.serializer.RedisSerializationContext; /** * 缓存配置 @@ -19,6 +22,14 @@ 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 RedisCacheConfiguration redisCacheConfiguration() { + return RedisCacheConfiguration.defaultCacheConfig() + .disableCachingNullValues() + .computePrefixWith(name -> "cache:" + name + ":") + .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericFastJsonRedisSerializer())); + } @Bean @ConditionalOnProperty(prefix = "spring.cache", name = {"type"}, havingValue = REDIS_CACHE) 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 9b5d07bc..ef6255c7 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 @@ -1,17 +1,8 @@ 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 org.springframework.stereotype.Service; -import java.util.Collection; import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; /** * 缓存服务 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 efd88d9a..68b77e45 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 @@ -3,10 +3,8 @@ package net.lab1024.sa.base.module.support.codegenerator.service.variable.backen import cn.hutool.core.bean.BeanUtil; import net.lab1024.sa.base.module.support.codegenerator.constant.CodeQueryFieldQueryTypeEnum; import net.lab1024.sa.base.module.support.codegenerator.domain.form.CodeGeneratorConfigForm; -import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeInsertAndUpdateField; import net.lab1024.sa.base.module.support.codegenerator.domain.model.CodeQueryField; import net.lab1024.sa.base.module.support.codegenerator.service.variable.CodeGenerateBaseVariableService; -import org.apache.commons.collections4.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java index 81619de5..dc5e6358 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/codegenerator/service/variable/front/ListVariableService.java @@ -47,7 +47,8 @@ public class ListVariableService extends CodeGenerateBaseVariableService { CodeField codeField = getCodeFieldByColumnName(queryField.getColumnNameList().get(0), form); if (CodeQueryFieldQueryTypeEnum.ENUM.equalsValue(queryField.getQueryTypeEnum())) { - objectMap.put("frontEnumName", codeField.getEnumName()); + String upperUnderscoreEnum = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, codeField.getEnumName()); + objectMap.put("frontEnumName", upperUnderscoreEnum); frontImportSet.add("import SmartEnumSelect from '/@/components/framework/smart-enum-select/index.vue';"); } @@ -76,6 +77,12 @@ public class ListVariableService extends CodeGenerateBaseVariableService { continue; } + // 是否存在枚举 + if (SmartStringUtil.isNotBlank(codeField.getEnumName())) { + String upperUnderscoreEnum = CaseFormat.UPPER_CAMEL.to(CaseFormat.UPPER_UNDERSCORE, codeField.getEnumName()); + objectMap.put("frontEnumPlugin", "$smartEnumPlugin.getDescByValue('" + upperUnderscoreEnum + "', text)"); + } + // 是否存在字典 if (SmartStringUtil.isNotBlank(codeField.getDict())) { objectMap.put("dict", codeField.getDict()); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/api/domain/SmartJobUpdateForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/api/domain/SmartJobUpdateForm.java index 860b4a92..c9f73a5d 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/api/domain/SmartJobUpdateForm.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/job/api/domain/SmartJobUpdateForm.java @@ -1,13 +1,8 @@ package net.lab1024.sa.base.module.support.job.api.domain; import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.Data; -import net.lab1024.sa.base.common.swagger.SchemaEnum; -import net.lab1024.sa.base.common.validator.enumeration.CheckEnum; -import net.lab1024.sa.base.module.support.job.constant.SmartJobTriggerTypeEnum; -import org.hibernate.validator.constraints.Length; /** * 定时任务 更新 diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailService.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailService.java index ac5255d6..d000d243 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailService.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/mail/MailService.java @@ -33,7 +33,7 @@ import java.util.Map; /** * - * 发生邮件:
+ * 发送邮件:
* 1、支持直接发送
* 2、支持使用邮件模板发送 * diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/domain/MessageTemplateSendForm.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/domain/MessageTemplateSendForm.java index 9f70ac69..5bb7236e 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/domain/MessageTemplateSendForm.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/message/domain/MessageTemplateSendForm.java @@ -1,10 +1,13 @@ package net.lab1024.sa.base.module.support.message.domain; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import lombok.Data; import net.lab1024.sa.base.common.enumeration.UserTypeEnum; import net.lab1024.sa.base.module.support.message.constant.MessageTemplateEnum; +import java.util.List; import java.util.Map; /** @@ -25,6 +28,10 @@ public class MessageTemplateSendForm { @NotNull(message = "接收者id不能为空") private Long receiverUserId; + @Schema(description = "接收者id") + @NotEmpty(message = "接收者id不能为空") + private List receiverUserIdList; + /** * 相关业务id | 可选 * 用于跳转具体业务 diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java index 98773e18..f28116d8 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/SmartReloadManager.java @@ -11,9 +11,6 @@ import net.lab1024.sa.base.module.support.reload.core.thread.SmartReloadRunnable import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; -import org.springframework.context.ApplicationContext; -import org.springframework.context.ApplicationListener; -import org.springframework.context.event.ContextRefreshedEvent; import org.springframework.stereotype.Service; import org.springframework.util.ReflectionUtils; diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java index 88cb1a40..0e656c07 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/reload/core/thread/SmartReloadRunnable.java @@ -2,7 +2,6 @@ package net.lab1024.sa.base.module.support.reload.core.thread; import lombok.extern.slf4j.Slf4j; import net.lab1024.sa.base.module.support.reload.core.AbstractSmartReloadCommand; -import net.lab1024.sa.base.module.support.reload.core.SmartReloadManager; import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadItem; import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadObject; import net.lab1024.sa.base.module.support.reload.core.domain.SmartReloadResult; 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 7469ba68..371f7b95 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 @@ -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) 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 a2070a34..c18cc038 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 @@ -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; 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 cb1404df..f940fdbb 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 @@ -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; /** diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm index 04230b36..146f9be6 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/resources/code-generator-template/java/domain/entity/Entity.java.vm @@ -18,7 +18,7 @@ public class ${name.upperCamel}Entity { #foreach ($field in $fields) /** - * $field.label + * $field.columnComment */ #if($field.primaryKeyFlag && $field.autoIncreaseFlag) @TableId(type = IdType.AUTO) 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 e336227b..e90d74d2 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 @@ -89,6 +89,7 @@ #end #end + #foreach ($field in $listFields) + #if($field.frontEnumPlugin) + + #end + #end #foreach ($field in $listFields) #if($field.dict)