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 @@