Переглянути джерело

feat:es数据查询进行根据租户进行数据隔离,支持超级管理员动态切换

lihao16 2 місяців тому
батько
коміт
4590f15310

+ 14 - 0
smsb-modules/smsb-device/src/main/java/com/inspur/device/service/impl/EsSmsbDeviceServiceImpl.java

@@ -15,8 +15,11 @@ import lombok.extern.slf4j.Slf4j;
 import org.dromara.common.core.utils.DateUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.PageQuery;
+import org.dromara.common.satoken.utils.LoginHelper;
+import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.easyes.core.biz.EsPageInfo;
 import org.dromara.easyes.core.conditions.select.LambdaEsQueryWrapper;
+import org.dromara.system.service.ISysRoleService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -41,6 +44,9 @@ public class EsSmsbDeviceServiceImpl implements IEsSmsbDeviceService {
     @Autowired
     private EsDeviceHeartRecordMapper esDeviceHeartRecordMapper;
 
+    @Autowired
+    private ISysRoleService roleService;
+
     @Override
     public void insertEsDeviceHeartRecord(SmsbDeviceHeartRecord smsbDeviceHeartRecord, SmsbDeviceVo smsbDeviceVo) {
         EsDeviceHeartRecord esSmsbDeviceHeartRecord = new EsDeviceHeartRecord();
@@ -73,6 +79,14 @@ public class EsSmsbDeviceServiceImpl implements IEsSmsbDeviceService {
     @Override
     public EsPageInfo<SmsbDeviceHeartRecordVo> queryEsDeviceHeartPageList(SmsbDeviceHeartRecordBo bo, PageQuery pageQuery) {
         LambdaEsQueryWrapper<EsDeviceHeartRecord> wrapper = new LambdaEsQueryWrapper<>();
+        Long userId = LoginHelper.getUserId();
+        if (roleService.checkSuperAdminByUserId(userId)) {
+            String tenantId = TenantHelper.getDynamic();
+            tenantId = StringUtils.isEmpty(tenantId) ? LoginHelper.getTenantId() : tenantId;
+            wrapper.match(EsDeviceHeartRecord::getTenantId, tenantId);
+        } else {
+            wrapper.match(EsDeviceHeartRecord::getTenantId, LoginHelper.getTenantId());
+        }
         wrapper.match(EsDeviceHeartRecord::getHeartType, bo.getHeartType().toString());
         if (!StringUtils.isEmpty(bo.getIdentifier())) {
             wrapper.match(EsDeviceHeartRecord::getIdentifier, bo.getIdentifier());