Jelajahi Sumber

#MOD 商家团队成员设备数据查询权限

谭斌 2 tahun lalu
induk
melakukan
87f786c3db

+ 28 - 0
device-api-service-merc-mini/src/main/java/com/xy/controller/MercMiniDeviceController.java

@@ -2,6 +2,7 @@ package com.xy.controller;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.xy.annotate.RestMappingController;
 import com.xy.dto.DeviceInfoDto;
 import com.xy.dto.DeviceStatusDto;
@@ -20,6 +21,7 @@ import com.xy.utils.Emptys;
 import com.xy.utils.MercAuthUtils;
 import com.xy.utils.PageBean;
 import com.xy.utils.R;
+import com.xy.utils.enums.DeviceActiveStateEnum;
 import com.xy.utils.enums.DeviceNetSateType;
 import com.xy.utils.enums.DictSonEnum;
 import io.swagger.annotations.Api;
@@ -34,6 +36,7 @@ import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
+import java.util.stream.Collectors;
 
 import static com.xy.utils.Beans.copy;
 
@@ -68,6 +71,7 @@ public class MercMiniDeviceController {
     @ApiOperation("小程序商户设备搜索")
     public R<PageBean<DeviceInfoDto.MerHomeSearchVO>> mercDeviceSearchPage(@RequestBody DeviceInfoDto.Page page) {
         page.setMercId(MercAuthUtils.getMercId());
+        page.setMyDeviceIds(getMyDevices());
         return deviceInfoService.mercDeviceSearchPage(page);
     }
 
@@ -163,4 +167,28 @@ public class MercMiniDeviceController {
     }
 
 
+    @ApiOperation("当前登录用户拥有的设备")
+    @PostMapping("myDevices")
+    R<List<Long>> myDevices() {
+        return R.ok(getMyDevices());
+    }
+
+    List<Long> getMyDevices() {
+        boolean mercAdmin = MercAuthUtils.isMercAdmin();
+        Long mercId = MercAuthUtils.getMercId();
+        if (mercAdmin) {
+            List<DeviceInfo> deviceInfos = deviceInfoService.list(Wrappers.<DeviceInfo>lambdaQuery().eq(DeviceInfo::getMercId, mercId).eq(DeviceInfo::getActiveState, DeviceActiveStateEnum.TRUE));
+            if (CollUtil.isEmpty(deviceInfos)) {
+                return CollUtil.newArrayList();
+            }
+            return deviceInfos.stream().map(DeviceInfo::getDeviceId).collect(Collectors.toList());
+        } else {
+            //成员设备
+            List<Long> deviceIds = R.feignCheckData(mercFeignService.mercUserDevice());
+            return deviceIds;
+        }
+
+    }
+
+
 }

+ 9 - 1
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -652,15 +652,23 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         //小程序独有查询字段 缺货状态:stockStatus ,是否查故障设备:fault
         Boolean fault = page.getFault();
         Long mercId = page.getMercId();
+        List<Long> myDeviceIds = page.getDeviceIdList();
+        if (CollUtil.isEmpty(myDeviceIds)) {
+            //无设备
+            return R.ok(pageData);
+        }
         if (BooleanUtil.isTrue(fault)) {
             //查询故障设备
             List<DeviceErrorsRecord> deviceErrorsRecords = deviceErrorsRecordService.list(Wrappers.<DeviceErrorsRecord>lambdaQuery()
-                    .eq(mercId != null, DeviceErrorsRecord::getMercId, page.getMercId()));
+                    .eq(mercId != null, DeviceErrorsRecord::getMercId, page.getMercId())
+                    .in(DeviceErrorsRecord::getDeviceId, myDeviceIds));
             List<Long> deviceIdList = deviceErrorsRecords.stream().map(DeviceErrorsRecord::getDeviceId).collect(Collectors.toList());
             if (CollUtil.isEmpty(deviceIdList)) {
                 return R.ok(new PageBean<>());
             }
             page.setDeviceIdList(deviceIdList);
+        } else {
+            page.setDeviceIdList(myDeviceIds);
         }
 
         PageBean<DeviceInfoDto.Vo2> pageBean = queryPage(page);

+ 4 - 1
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -147,6 +147,9 @@ public class DeviceInfoDto {
     @Accessors(chain = true)
     public static class Page extends Vo {
 
+        @ApiModelProperty(value = "拥有的设备ID", hidden = true)
+        private List<Long> myDeviceIds;
+
         @ApiModelProperty("缺货状态")
         private Integer stockStatus;
 
@@ -674,7 +677,7 @@ public class DeviceInfoDto {
     @Data
     @Accessors(chain = true)
     public static class DeviceDataCountDTO {
-
+ 
         @ApiModelProperty("商户ID")
         private Long mercId;