From 0f1aa4cf839a32cc97145bfed1e21b70283e47d7e9d9ff24493b05ab21584aea Mon Sep 17 00:00:00 2001 From: yanglei Date: Fri, 14 Nov 2025 16:37:19 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=A8=A1=E5=9D=97=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E7=A7=9F=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../user/component/EbikeTenantFactory.java | 50 +++++++++++++++++++ .../user/config/MyBatisFlexConfiguration.java | 12 +++++ .../controller/EbikeRefundController.java | 2 + 3 files changed, 64 insertions(+) create mode 100644 ebike-user/src/main/java/com/cdzy/user/component/EbikeTenantFactory.java diff --git a/ebike-user/src/main/java/com/cdzy/user/component/EbikeTenantFactory.java b/ebike-user/src/main/java/com/cdzy/user/component/EbikeTenantFactory.java new file mode 100644 index 0000000..71bd3e1 --- /dev/null +++ b/ebike-user/src/main/java/com/cdzy/user/component/EbikeTenantFactory.java @@ -0,0 +1,50 @@ +package com.cdzy.user.component; + +import cn.dev33.satoken.stp.StpUtil; +import com.cdzy.common.model.response.CommonEbikeRole; +import com.cdzy.common.model.response.CommonStaffInfo; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.mybatisflex.core.tenant.TenantFactory; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +import java.util.List; +import java.util.TimeZone; + +public class EbikeTenantFactory implements TenantFactory { + + public Object[] getTenantIds() { + if (StpUtil.isLogin()) { + RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); + Object attribute = attributes.getAttribute("tenantId", RequestAttributes.SCOPE_REQUEST); + if (attribute != null) { + String id = (String) StpUtil.getLoginId(); + Object object = StpUtil.getSessionByLoginId(id).get(id); + ObjectMapper objectMapper = new ObjectMapper() + .registerModule(new JavaTimeModule()) + .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) + .setTimeZone(TimeZone.getTimeZone("Asia/Shanghai")); + CommonStaffInfo staffInfo = objectMapper.convertValue(object, CommonStaffInfo.class); + List roles = staffInfo.getRoles(); + boolean isSysAdmin = false; + for (CommonEbikeRole role : roles) { + if (role.getSysAdmin()) { + isSysAdmin = true; + break; + } + } + long tenantId = Long.parseLong(attribute.toString()); + //系统管理员 + if (isSysAdmin) { + return null; + } else { + return new Object[]{tenantId}; + } + } + + } + return null; + } +} \ No newline at end of file diff --git a/ebike-user/src/main/java/com/cdzy/user/config/MyBatisFlexConfiguration.java b/ebike-user/src/main/java/com/cdzy/user/config/MyBatisFlexConfiguration.java index 63d2477..27cc8f4 100644 --- a/ebike-user/src/main/java/com/cdzy/user/config/MyBatisFlexConfiguration.java +++ b/ebike-user/src/main/java/com/cdzy/user/config/MyBatisFlexConfiguration.java @@ -1,6 +1,7 @@ package com.cdzy.user.config; import com.cdzy.common.enums.EbikeContents; +import com.cdzy.user.component.EbikeTenantFactory; import com.mybatisflex.annotation.KeyType; import com.mybatisflex.core.FlexGlobalConfig; import com.mybatisflex.core.audit.AuditManager; @@ -53,4 +54,15 @@ public class MyBatisFlexConfiguration { //设置数据已被删除时的值 globalConfig.setDeletedValueOfLogicDelete(Boolean.TRUE); } + + /** + * 详细的租户工厂配置 + */ + @Bean + public static TenantFactory tenantFactory() { + logger.info("开始初始化租户工厂"); + EbikeTenantFactory factory = new EbikeTenantFactory(); + TenantManager.setTenantFactory(factory); + return new EbikeTenantFactory(); + } } \ No newline at end of file diff --git a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeRefundController.java b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeRefundController.java index b6e3d26..d7b3a0e 100644 --- a/ebike-user/src/main/java/com/cdzy/user/controller/EbikeRefundController.java +++ b/ebike-user/src/main/java/com/cdzy/user/controller/EbikeRefundController.java @@ -13,6 +13,8 @@ import jakarta.annotation.Resource; import org.springframework.web.bind.annotation.*; /** + * 用户退款 控制层 + * * @author yanglei * @since 2025-11-13 20:07 */