diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java index 022f219..27f5acc 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertServiceImpl.java @@ -44,15 +44,18 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.enums.DataScopeType; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.resource.api.RemoteMessageService; import org.dromara.system.api.*; import org.dromara.system.api.domain.bo.RemoteNoticeBo; import org.dromara.system.api.domain.vo.RemoteAiLabelPostVo; import org.dromara.system.api.domain.vo.RemoteDeptVo; +import org.dromara.system.api.domain.vo.RemotePostVo; import org.dromara.system.api.domain.vo.RemoteUserVo; import org.dromara.business.domain.BusinessAlertConstructInfoOss; import org.dromara.business.mapper.BusinessAlertConstructInfoOssMapper; +import org.dromara.system.api.model.RoleDTO; import org.dromara.workflow.api.RemoteWorkflowService; import org.dromara.workflow.api.domain.RemoteStartProcess; import org.springframework.beans.BeanUtils; @@ -131,6 +134,12 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { @DubboReference private RemoteDeptService remoteDeptService; + @DubboReference + RemotePostService remotePostService; + + @DubboReference(timeout = 30000) + RemoteDataScopeService remoteDataScopeService; + /** * 新增预警任务 @@ -724,8 +733,48 @@ public class BusinessAlertServiceImpl implements IBusinessAlertService { } + private void createPermissions(BusinessAlertBo businessAlertBo) { + try { + RoleDTO roleDTO = LoginHelper.getLoginUser().getRoles().getFirst(); + + //自定义权限 + if (roleDTO.getDataScope().equalsIgnoreCase(DataScopeType.CUSTOM.getCode())){ + String roleCustom = remoteDataScopeService.getRoleCustom(roleDTO.getRoleId()); + if (roleCustom.equalsIgnoreCase("-1")){ + businessAlertBo.setDeptIdList(ListUtil.empty()); + }else { + businessAlertBo.setDeptIdList(Arrays.stream(roleCustom.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + } + } else if (roleDTO.getDataScope().equalsIgnoreCase(DataScopeType.DEPT_AND_CHILD.getCode())) { + //部门及其以下 + String deptAndChild = remoteDataScopeService.getDeptAndChild(LoginHelper.getDeptId()); + if (deptAndChild.equalsIgnoreCase("-1")){ + businessAlertBo.setDeptIdList(ListUtil.empty()); + }else { + businessAlertBo.setDeptIdList(Arrays.stream(deptAndChild.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList())); + } + + } else if (roleDTO.getDataScope().equalsIgnoreCase(DataScopeType.DEPT.getCode())) { + //本部门 + businessAlertBo.setDeptIdList(List.of(LoginHelper.getDeptId())); + } + } catch (Exception e) { + businessAlertBo.setDeptIdList(ListUtil.empty()); + log.error(e.getMessage(),e); + } + } + + @Override public Map listAlert(BusinessAlertBo businessAlertBo) { + + //构建查询数据权限 () + createPermissions(businessAlertBo); + Map result = new HashMap<>(); //生成近一周开始时间、结束时间 List dayList = getLastSixDays(); diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java index 7385b0d..a95ce9b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/controller/DeviceController.java @@ -2,11 +2,15 @@ package org.dromara.sample.manage.controller; import cn.dev33.satoken.annotation.SaCheckPermission; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import org.dromara.common.core.domain.R; import org.dromara.common.json.utils.JsonUtils; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.redis.config.RedisConst; +import org.dromara.common.redis.utils.RedisOpsUtils; import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.sdk.cloudapi.device.OsdDock; @@ -27,10 +31,8 @@ import org.dromara.system.api.model.LoginUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Optional; +import java.util.*; +import java.util.stream.Collectors; /** * @author sean.zhou @@ -63,6 +65,35 @@ public class DeviceController { return HttpResultResponse.success(devicesList); } + @GetMapping("/{workspace_id}/devices/redis") + @Operation(summary = "获取一个工作区中所有在线设备的列表。", description = "获取一个工作区中所有在线设备的列表") + public HttpResultResponse getDeviceRedis(@PathVariable("workspace_id") String workspaceId, + @RequestParam(name = "nickname",required = false) String nickname, + @RequestParam(name = "proIds",required = false) List proIds) { + /* Set hmsMap = deviceRedisService.getAllHmsKeys("1581F6Q8D245R00GZ6DW"); + // 读取整个 list + List list = RedisUtils.getCacheListRange("hms:1581F6Q8D245R00GZ6DW", 0, -1); //list data + System.out.println(list); + + RedisUtils.keys("osd:*");//--正常 + RedisUtils.getCacheObject("osd:7CTDM7H00BQ6W3");//--正常 + //查询osd数据 + RedisOpsUtils.getAllKeys("osd:*");//--正常 + RedisOpsUtils.get("osd:7CTDM7H00BQ6W3");//--正常 + Object osdDockObj = RedisOpsUtils.get("osd:8UUXN2B00A00SK"); + RedisOpsUtils.listGetAll("osd:7CTDM7H00BQ6W3").stream().map(String::valueOf).collect(Collectors.toSet());*/ + + JSONObject resJsonObject = new JSONObject(); + Set osdKeys = RedisOpsUtils.getAllKeys(RedisConst.OSD_PREFIX+"*"); + for (String osdKey : osdKeys) { + Object osdObj = RedisOpsUtils.get(osdKey); + resJsonObject.put(osdKey.replaceFirst(RedisConst.OSD_PREFIX,""), osdObj); + } + return HttpResultResponse.success(resJsonObject); + } + + + //查找设备列表-简版 @GetMapping("/{workspace_id}/devices/simple") diff --git a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SampleEngineRecordServiceImpl.java b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SampleEngineRecordServiceImpl.java index 7f1a9ae..68b620b 100644 --- a/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SampleEngineRecordServiceImpl.java +++ b/dk-modules/sample/src/main/java/org/dromara/sample/manage/service/impl/SampleEngineRecordServiceImpl.java @@ -189,7 +189,7 @@ public class SampleEngineRecordServiceImpl implements ISampleEngineRecordService // String ip = remoteConfigService.selectStreamIp(); String ip = remoteConfigFeign.getConfigKey("stream"); System.out.println(ip); - ip = "121.237.182.235";//服务器使用ip 【测试】 +// ip = "121.237.182.235";//服务器使用ip 【测试】 String md5 = Md5Utils.hash("xuzhou_ai"); //获取token + 设置请求Header和Body(如JSON) JSONObject jsonObj = new JSONObject(); jsonObj.put("username", sanitize("xuzhou_ai")); // sanitize函数见下文 diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysConfigController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysConfigController.java index abd524d..4c5761b 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysConfigController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysConfigController.java @@ -73,9 +73,10 @@ public class SysConfigController extends BaseController { return R.ok("操作成功", configService.selectConfigByKey(configKey)); } + //feign查询配置key,直接从数据库读取最新数据,跳过缓存,避免异常 @GetMapping(value = "/configKeyFeign/{configKey}") - public String getConfigKeyFeign(@PathVariable String configKey) { - return configService.selectConfigByKey(configKey); + public String getConfigKeyFeign(@PathVariable String configKey) { //configService.selectConfigByKey("stream") + return configService.selectConfigFeignByKey(configKey); } /** diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java b/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java index 5c7cee9..2ebaee1 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/ISysConfigService.java @@ -90,4 +90,5 @@ public interface ISysConfigService { boolean selectXingluoAutoSubmit(); + String selectConfigFeignByKey(String configKey); } diff --git a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java index c6f0b78..b043d07 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java +++ b/dk-modules/system/src/main/java/org/dromara/system/service/impl/SysConfigServiceImpl.java @@ -229,4 +229,14 @@ public class SysConfigServiceImpl implements ISysConfigService { return false; } + @Override + public String selectConfigFeignByKey(String configKey) { + SysConfig retConfig = baseMapper.selectOne(new LambdaQueryWrapper() + .eq(SysConfig::getConfigKey, configKey)); + if (ObjectUtil.isNotNull(retConfig)) { + return retConfig.getConfigValue(); + } + return StringUtils.EMPTY; + } + }