diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server-sync/pom.xml b/casic-server-sync/pom.xml
index 15450dc..4153a7a 100644
--- a/casic-server-sync/pom.xml
+++ b/casic-server-sync/pom.xml
@@ -109,6 +109,11 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@
+ com.casic
+ casic-warning-analysis
+ ${pro.version}
+
+
org.springframework.boot
spring-boot-starter-web
${boot.version}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
index 7c06c67..610ca86 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/RiskSyncController.java
@@ -1,6 +1,8 @@
package com.casic.missiles.modular.device.controller;
+import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.application.service.AbstractDeptService;
import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.base.controller.BaseController;
@@ -8,15 +10,19 @@
import com.casic.missiles.model.response.dto.ResponseDataDTO;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
import com.casic.missiles.modular.device.service.IClientAuthService;
import com.casic.missiles.modular.system.model.Dept;
import com.casic.missiles.modular.system.model.User;
+import com.casic.missiles.modular.util.IRiskCacheUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -26,8 +32,10 @@
private IClientAuthService clientAuthService;
@Resource
private AbstractDeptService deptService;
+
@Resource
- private AbstractUserService userService;
+ private IBusDeviceInfoService deviceService;
+
@PostMapping("/client/login")
@ResponseBody
public ResponseData login(@RequestBody RiskLoginForm deviceLoginForm, HttpSession session) {
@@ -39,9 +47,13 @@
*
* @return
*/
- @PostMapping("/dept/list")
+ @GetMapping("/dept")
@ResponseBody
public ResponseDataDTO> dept() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
List deptList = deptService.list(query);
return ResponseDataDTO.success(deptList);
@@ -52,12 +64,17 @@
*
* @return
*/
- @PostMapping("/user/list")
+ @GetMapping("/user/list")
@ResponseBody
public ResponseDataDTO> user() {
- //todo 此处租户拦截需移除
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
+
LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
+
+ List deptList = clientAuthService.userList(query);
return ResponseDataDTO.success(deptList);
}
@@ -66,12 +83,42 @@
*
* @return
*/
- @PostMapping("/device/list")
+ @GetMapping("/device/list")
@ResponseBody
public ResponseDataDTO> device() {
+ RiskLoginForm deviceLoginForm = validToken();
+ if (deviceLoginForm == null) {
+ return createAuthError();
+ }
- LambdaQueryWrapper query = new LambdaQueryWrapper<>();
- List deptList = userService.list(query);
- return ResponseDataDTO.success(deptList);
+ LambdaQueryWrapper query = new LambdaQueryWrapper<>();
+ List deviceInfos = deviceService.list(query);
+
+ return ResponseDataDTO.success(deviceInfos);
+ }
+
+
+
+ private RiskLoginForm validToken() {
+ HttpServletRequest request = super.getHttpServletRequest();
+ String token = request.getHeader("Authorization");
+ if (StrUtil.isNotEmpty(token)) {
+ String cacheKey = IRiskCacheUtil.get(token);
+ if (cacheKey == null) {
+ return null;
+ }
+ try {
+ return clientAuthService.parseToken(token);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return null;
+ }
+
+ private ResponseDataDTO createAuthError() {
+ ResponseDataDTO responseDataDTO = ResponseDataDTO.error("未获取到有效登录token");
+ responseDataDTO.setCode(401);
+ return responseDataDTO;
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
index 5e5b890..5b67f2f 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/controller/UserSyncController.java
@@ -1,13 +1,23 @@
package com.casic.missiles.modular.device.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.casic.missiles.core.base.controller.BaseController;
+import com.casic.missiles.core.common.annotion.BussinessLog;
import com.casic.missiles.model.response.dto.ResponseDataDTO;
+import com.casic.missiles.modular.device.dictmap.DeviceGroupDict;
+import com.casic.missiles.modular.device.model.BusDeviceInfo;
+import com.casic.missiles.modular.device.model.RiskPointInfo;
import com.casic.missiles.modular.device.service.IBusDeviceInfoService;
+import com.casic.missiles.modular.device.service.IRiskPointInfoService;
import io.swagger.annotations.Api;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
+import java.util.stream.Collectors;
@Api(tags = "风险点数据同步")
@RestController
@@ -16,28 +26,36 @@
@Resource
private IBusDeviceInfoService busDeviceInfoService;
-
+ @Resource
+ private IRiskPointInfoService pointInfoService;
/**
* 登录用户授权设备权限查看
+ *
* @return
*/
+ @BussinessLog(value = "设备授权读取")
@GetMapping("/device/permissions")
@ResponseBody
public ResponseDataDTO> devicePermissions() {
- //用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
+ QueryWrapper query = new QueryWrapper<>();
+ List infos = busDeviceInfoService.selectBusDeviceInfoList(query);
+ List deviceIds = infos.stream().map(BusDeviceInfo::getId).collect(Collectors.toList());
return ResponseDataDTO.success(deviceIds);
}
/**
* 登录用户风险点授权查询
+ *
* @return
*/
+ @BussinessLog(value = "风险点授权读取")
@GetMapping("/permissions")
@ResponseBody
public ResponseDataDTO> permissions() {
//用户可见设备集合ID
- List deviceIds = busDeviceInfoService.selectDeviceIds();
- return ResponseDataDTO.success(deviceIds);
+ QueryWrapper query = new QueryWrapper();
+ List points = pointInfoService.selectlist(query);
+ List ids = points.stream().map(RiskPointInfo::getTargetId).collect(Collectors.toList());
+ return ResponseDataDTO.success(ids);
}
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
index 40fdb4b..654a3e2 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/IClientAuthService.java
@@ -1,9 +1,12 @@
package com.casic.missiles.modular.device.service;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
+import com.casic.missiles.modular.system.model.User;
import javax.servlet.http.HttpSession;
+import java.util.List;
public interface IClientAuthService {
/**
@@ -12,4 +15,14 @@
* @return
*/
ResponseData login(RiskLoginForm deviceLoginForm, HttpSession session);
+
+ RiskLoginForm parseToken(String jwtStr);
+
+ /**
+ * 全量用户查询
+ *
+ * @param query
+ * @return
+ */
+ List userList(LambdaQueryWrapper query);
}
diff --git a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
index 576e857..1d5a506 100644
--- a/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
+++ b/casic-server-sync/src/main/java/com/casic/missiles/modular/device/service/impl/ClientAuthServiceImpl.java
@@ -4,19 +4,23 @@
import cn.hutool.core.util.StrUtil;
import cn.hutool.jwt.JWT;
import cn.hutool.jwt.JWTUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.casic.missiles.core.application.service.AbstractRoleService;
+import com.casic.missiles.core.application.service.AbstractUserService;
import com.casic.missiles.core.util.RSAUtils;
import com.casic.missiles.model.exception.ServiceException;
import com.casic.missiles.model.response.ResponseData;
import com.casic.missiles.modular.device.dto.RiskLoginForm;
import com.casic.missiles.modular.device.service.IClientAuthService;
+import com.casic.missiles.modular.system.model.User;
import com.casic.missiles.modular.util.IRiskCacheUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
@Slf4j
@Service
@@ -30,10 +34,12 @@
try {
String str = RSAUtils.decrypt(deviceLoginForm.getSecret(), privateKey);
Long time = Long.valueOf(StrUtil.split(str, "_").get(1));
+
//边缘盒子时差与服务时差不可超过24小时
if (time == null || System.currentTimeMillis() - time > 3600 * 24 * 1000) {
return ResponseData.error("请求时间超时");
}
+ deviceLoginForm.setClientId(StrUtil.split(str, "_").get(0));
deviceLoginForm.setTime(time);
} catch (Exception e) {
e.printStackTrace();
@@ -48,7 +54,8 @@
log.error("设备登录异常:{}", e.getMessage());
return ResponseData.error("登录异常,请联系管理员");
}
-}
+ }
+
/**
* token创建
*
@@ -57,17 +64,17 @@
* @return
* @throws Exception
*/
- public String createJwtToken(RiskLoginForm loginForm) throws Exception {
+ public String createJwtToken(RiskLoginForm loginForm) throws Exception {
Map payload = new HashMap<>();
payload.put("clientId", loginForm.getClientId()); // 设备编号
payload.put("time", loginForm.getTime()); // 请求时间
//RSA 解密
String str = RSAUtils.decrypt(loginForm.getSecret(), privateKey);
- String key = loginForm.getClientId()+"_" + loginForm.getTime() ;
+ String key = loginForm.getClientId() + "_" + loginForm.getTime();
if (!key.equals(str)) {
//秘钥验证失败
- throw new ServiceException(500,"秘钥验证失败");
+ throw new ServiceException(500, "秘钥验证失败");
}
// long exp = new Date().getTime() + 2 * 3600000; // 2小时后的时间戳
@@ -86,10 +93,26 @@
* @return
* @throws Exception
*/
- public static RiskLoginForm parseToken(String jwtStr){
+ public RiskLoginForm parseToken(String jwtStr) {
JWT jwtObj = new JWTUtil().parseToken(jwtStr);
RiskLoginForm deviceLoginForm = new RiskLoginForm();
deviceLoginForm.setClientId(Convert.toStr(jwtObj.getPayload("clientId")));
return deviceLoginForm;
}
+
+ @Resource
+ private AbstractUserService userService;
+ @Resource
+ private AbstractRoleService roleService;
+
+ @Override
+ public List userList(LambdaQueryWrapper query) {
+ //
+ List users = userService.list(query);
+ for (User user : users) {
+ String roleIds = user.getRoleId();
+ user.setRoleName(roleService.getRoleNameByIds(roleIds));
+ }
+ return users;
+ }
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
index 05176ba..6623000 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/data/constants/DataConstants.java
@@ -15,5 +15,6 @@
public static final String NODE_TYPE_DEPT = "1";
public static final String NODE_TYPE_DEVICE = "2";
+ public static final String NODE_TYPE_GROUP = "3";
public static final String NODE_TYPE_RISK = "2";
}
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
index ba9083f..1ac6563 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/DeviceGroupInfoController.java
@@ -26,7 +26,7 @@
import java.util.concurrent.ConcurrentHashMap;
/**
- * 设备分组管理Controller
+ * 设备授权分组管理Controller
*
* @author lwh
* @date 2024-04-12
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
index 013dc1e..b33e73d 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/controller/VideoPersonController.java
@@ -38,6 +38,7 @@
@ApiOperation(value = "用户树查询")
@PostMapping(value = "/tree")
public ResponseDataDTO> tree() {
- return ResponseDataDTO.success(sysUserGroupService.personTree());
+
+ return ResponseDataDTO.success(sysUserGroupService.personTree(true));
}
}
\ No newline at end of file
diff --git a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
index 4c70e28..6555b3f 100644
--- a/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
+++ b/casic-server/src/main/java/com/casic/missiles/modular/device/dao/mapping/BusDeviceInfoMapper.xml
@@ -109,8 +109,10 @@