martin il y a 3 ans
Parent
commit
8f7f85d84f
17 fichiers modifiés avec 348 ajouts et 50 suppressions
  1. 9 7
      api-common/src/main/java/api/common/pojo/po/home/SystemServerPO.java
  2. 14 0
      api-common/src/main/java/api/common/pojo/vo/home/AccessVO.java
  3. 20 0
      api-common/src/main/java/api/common/pojo/vo/home/HardwareVO.java
  4. 20 0
      api-common/src/main/java/api/common/pojo/vo/home/ServiceVO.java
  5. 25 0
      api-common/src/main/java/api/common/pojo/vo/home/SystemServerVO.java
  6. 0 24
      api-common/src/main/java/api/common/pojo/vo/system/SystemServerVO.java
  7. 5 0
      simulation-oauth-server/pom.xml
  8. 27 1
      simulation-oauth-server/src/main/java/com/css/simulation/oauth/server/controller/OauthServerController.java
  9. 25 0
      simulation-oauth-server/src/test/java/com/css/simulation/oauth/server/Test.java
  10. 22 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/feign/MyOauthServerService.java
  11. 16 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/feign/fallback/MyOauthServerServiceFallback.java
  12. 37 5
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/HomePageController.java
  13. 24 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SystemAccessMapper.java
  14. 13 9
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SystemServerMapper.java
  15. 84 4
      simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/HomePageService.java
  16. 3 0
      simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/UserMapper.java
  17. 4 0
      simulation-resource-server/src/main/resources/mapper/system/UserMapper.xml

+ 9 - 7
api-common/src/main/java/api/common/pojo/po/SystemServerPO.java → api-common/src/main/java/api/common/pojo/po/home/SystemServerPO.java

@@ -1,4 +1,4 @@
-package api.common.pojo.po;
+package api.common.pojo.po.home;
 
 
 import api.common.pojo.common.CommonPO;
@@ -15,12 +15,14 @@ public class SystemServerPO extends CommonPO {
     String serverId;
     String serverAddress;
     String serverType;
-    String cpuUsage;
-    String memoryUsage;
-    String memoryAvailable;
-    String diskUsage;
-    String diskAvailable;
-    String taskNumber;
+    Integer cpuUsage;
+    Integer memoryUsage;
+    Double memoryAvailable;
+    Integer diskUsage;
+    Double diskAvailable;
+    Integer taskNumber;
+    Integer weight;
+    Integer gpuUsage;
 
 
 }

+ 14 - 0
api-common/src/main/java/api/common/pojo/vo/home/AccessVO.java

@@ -0,0 +1,14 @@
+package api.common.pojo.vo.home;
+
+
+import lombok.*;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class AccessVO  {
+    String toDate;
+    Integer num;
+}

+ 20 - 0
api-common/src/main/java/api/common/pojo/vo/home/HardwareVO.java

@@ -0,0 +1,20 @@
+package api.common.pojo.vo.home;
+
+
+import lombok.*;
+
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class HardwareVO {
+
+    Integer serverNumber;
+    String memoryUsage;
+    String diskUsage;
+    String cpuUsage;
+    String gpuUsage;
+
+
+}

+ 20 - 0
api-common/src/main/java/api/common/pojo/vo/home/ServiceVO.java

@@ -0,0 +1,20 @@
+package api.common.pojo.vo.home;
+
+
+import api.common.pojo.common.CommonPO;
+import lombok.*;
+
+@EqualsAndHashCode(callSuper = true)
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ServiceVO extends CommonPO {
+
+    Integer userNumber;
+    Integer onlineNumber;
+    Integer simulationNodeNumber;
+    Integer simulationLicenseNumber;
+    Integer dynamicsLicenseNumber;
+
+}

+ 25 - 0
api-common/src/main/java/api/common/pojo/vo/home/SystemServerVO.java

@@ -0,0 +1,25 @@
+package api.common.pojo.vo.home;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SystemServerVO {
+
+    String id;
+    String serverId;
+    String serverAddress;
+    String serverType;
+    Integer cpuUsage;
+    Integer memoryUsage;
+    Double memoryAvailable;
+    Integer diskUsage;
+    Double diskAvailable;
+    Integer taskNumber;
+    Integer weight;
+}

+ 0 - 24
api-common/src/main/java/api/common/pojo/vo/system/SystemServerVO.java

@@ -1,24 +0,0 @@
-package api.common.pojo.vo.system;
-
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-@Data
-@Builder
-@NoArgsConstructor
-@AllArgsConstructor
-public class SystemServerVO {
-
-    private String id;
-    private String serverId;
-    private String serverAddress;
-    private String serverType;
-    private String cpuUsage;
-    private String memoryUsage;
-    private String memoryAvailable;
-    private String diskUsage;
-    private String diskAvailable;
-    private String taskNumber;
-}

+ 5 - 0
simulation-oauth-server/pom.xml

@@ -111,6 +111,11 @@
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>

+ 27 - 1
simulation-oauth-server/src/main/java/com/css/simulation/oauth/server/controller/OauthServerController.java

@@ -1,13 +1,39 @@
 package com.css.simulation.oauth.server.controller;
 
 
+import api.common.pojo.common.ResponseBodyVO;
+import api.common.util.CollectionUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Set;
+
 @RestController
 public class OauthServerController {
 
 
-
+    @Autowired
+    RedisTemplate<String, String> redisTemplate;
+
+    /**
+     * 服务监控
+     */
+    @PostMapping("online")
+    @ResponseBody
+    public ResponseBodyVO<Integer> online() {
+        int online;
+
+        Set<String> keys = redisTemplate.keys("access:*");
+        if (CollectionUtil.isEmpty(keys)) {
+            online = 0;
+        } else {
+            online = keys.size();
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, online);
+    }
 
 
 }

+ 25 - 0
simulation-oauth-server/src/test/java/com/css/simulation/oauth/server/Test.java

@@ -0,0 +1,25 @@
+package com.css.simulation.oauth.server;
+
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.test.context.junit4.SpringRunner;
+
+import java.util.Set;
+
+@SpringBootTest
+@RunWith(SpringRunner.class)
+public class Test {
+    @Autowired
+    StringRedisTemplate redisTemplate;
+
+
+    @org.junit.Test
+    public void test() {
+        Set<String> keys = redisTemplate.keys("access:*");
+        int size = keys.size();
+        System.out.println(size);
+    }
+
+}

+ 22 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/feign/MyOauthServerService.java

@@ -0,0 +1,22 @@
+package com.css.simulation.resource.feign;
+
+import api.common.pojo.common.ResponseBodyVO;
+import com.css.simulation.resource.common.config.FeignConfiguration;
+import com.css.simulation.resource.feign.fallback.RedisServiceFallback;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+
+//@FeignClient(name = "test", url = "http://10.15.12.72:8001", fallback = RedisServiceFallback.class, configuration = FeignConfiguration.class)
+@FeignClient(value = "simulation-oauth-server",
+        contextId = "oauthServer",
+        path = "/simulation/oauth/server",
+        fallback = RedisServiceFallback.class,
+        configuration = FeignConfiguration.class)
+public interface MyOauthServerService {
+
+    @PostMapping("/online")
+    ResponseBodyVO<Integer> online();
+
+
+
+}

+ 16 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/feign/fallback/MyOauthServerServiceFallback.java

@@ -0,0 +1,16 @@
+package com.css.simulation.resource.feign.fallback;
+
+import api.common.pojo.common.ResponseBodyVO;
+import com.css.simulation.resource.feign.MyOauthServerService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class MyOauthServerServiceFallback implements MyOauthServerService {
+
+
+    @Override
+    public ResponseBodyVO<Integer> online() {
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SERVER_FAILURE);
+    }
+
+}

+ 37 - 5
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/ctrl/HomePageController.java

@@ -2,7 +2,10 @@ package com.css.simulation.resource.scene.ctrl;
 
 import api.common.pojo.common.PageVO;
 import api.common.pojo.common.ResponseBodyVO;
-import api.common.pojo.vo.system.SystemServerVO;
+import api.common.pojo.vo.home.AccessVO;
+import api.common.pojo.vo.home.HardwareVO;
+import api.common.pojo.vo.home.ServiceVO;
+import api.common.pojo.vo.home.SystemServerVO;
 import com.css.simulation.resource.algorithm.service.AlgorithmService;
 import com.css.simulation.resource.project.service.SimulationProjectService;
 import com.css.simulation.resource.scene.service.HomePageService;
@@ -15,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 
 //首页系统概览
@@ -130,11 +134,39 @@ public class HomePageController {
 
 
     /**
-     * 评测等级分布-饼图
+     * 硬件监控
+     */
+    @PostMapping("selectHardware")
+    @ResponseBody
+    public ResponseBodyVO<HardwareVO> selectHardware() {
+        return homePageService.selectHardware();
+    }
+
+    /**
+     * 服务监控
+     */
+    @PostMapping("selectService")
+    @ResponseBody
+    public ResponseBodyVO<ServiceVO> selectService() {
+        return homePageService.selectService();
+    }
+
+    /**
+     * 日访问人数
+     */
+    @PostMapping("selectAccess")
+    @ResponseBody
+    public ResponseBodyVO<List<AccessVO>> selectAccess() {
+        return homePageService.selectAccess();
+    }
+
+
+    /**
+     * 服务器监控
      */
-    @PostMapping("selectServerList")
+    @PostMapping("selectServer")
     @ResponseBody
-    public ResponseBodyVO<PageInfo<SystemServerVO>> selectServerList(PageVO pageVO) {
-        return homePageService.selectServerList(pageVO);
+    public ResponseBodyVO<PageInfo<SystemServerVO>> selectServer(PageVO pageVO) {
+        return homePageService.selectServer(pageVO);
     }
 }

+ 24 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SystemAccessMapper.java

@@ -0,0 +1,24 @@
+package com.css.simulation.resource.scene.mapper;
+
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.Map;
+
+
+@Mapper
+public interface SystemAccessMapper {
+
+
+    @Select("<script>" +
+            "        select count(id) from system_access\n" +
+            "        where is_deleted = '0'\n" +
+            "        <if test=\"startDate != null\">\n" +
+            "            and access_time &gt;= #{startDate}\n" +
+            "        </if>\n" +
+            "        <if test=\"endDate != null\">\n" +
+            "            and access_time &lt;= #{endDate}\n" +
+            "        </if>" +
+            "</script>")
+    Integer selectPastAccess(Map<String, Object> params);
+}

+ 13 - 9
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/mapper/SystemServerMapper.java

@@ -1,6 +1,6 @@
 package com.css.simulation.resource.scene.mapper;
 
-import api.common.pojo.vo.system.SystemServerVO;
+import api.common.pojo.po.home.SystemServerPO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Result;
 import org.apache.ibatis.annotations.Results;
@@ -33,12 +33,14 @@ public interface SystemServerMapper {
             @Result(column = "server_id", property = "serverId", jdbcType = JdbcType.VARCHAR),
             @Result(column = "server_address", property = "serverAddress", jdbcType = JdbcType.VARCHAR),
             @Result(column = "server_type", property = "serverType", jdbcType = JdbcType.VARCHAR),
-            @Result(column = "cpu_usage", property = "cpuUsage", jdbcType = JdbcType.VARCHAR),
-            @Result(column = "memory_usage", property = "memoryUsage", jdbcType = JdbcType.VARCHAR),
-            @Result(column = "memory_available", property = "memoryAvailable", jdbcType = JdbcType.VARCHAR),
-            @Result(column = "disk_usage", property = "diskUsage", jdbcType = JdbcType.VARCHAR),
-            @Result(column = "disk_available", property = "diskAvailable", jdbcType = JdbcType.VARCHAR),
-            @Result(column = "task_number", property = "taskNumber", jdbcType = JdbcType.VARCHAR)
+            @Result(column = "cpu_usage", property = "cpuUsage", jdbcType = JdbcType.INTEGER),
+            @Result(column = "memory_usage", property = "memoryUsage", jdbcType = JdbcType.INTEGER),
+            @Result(column = "memory_available", property = "memoryAvailable", jdbcType = JdbcType.DOUBLE),
+            @Result(column = "disk_usage", property = "diskUsage", jdbcType = JdbcType.INTEGER),
+            @Result(column = "disk_available", property = "diskAvailable", jdbcType = JdbcType.DOUBLE),
+            @Result(column = "task_number", property = "taskNumber", jdbcType = JdbcType.INTEGER),
+            @Result(column = "weight", property = "weight", jdbcType = JdbcType.INTEGER),
+            @Result(column = "weight", property = "weight", jdbcType = JdbcType.INTEGER)
     })
 
     @Select("select id,\n" +
@@ -50,9 +52,11 @@ public interface SystemServerMapper {
             "       memory_available,\n" +
             "       disk_usage,\n" +
             "       disk_available,\n" +
-            "       task_number\n" +
+            "       task_number,\n" +
+            "       weight,\n" +
+            "       gpu_usage\n" +
             "from system_server\n" +
             "where is_deleted = '0'")
-    List<SystemServerVO> selectAll();
+    List<SystemServerPO> selectAll();
 
 }

+ 84 - 4
simulation-resource-server/src/main/java/com/css/simulation/resource/scene/service/HomePageService.java

@@ -2,14 +2,26 @@ package com.css.simulation.resource.scene.service;
 
 import api.common.pojo.common.PageVO;
 import api.common.pojo.common.ResponseBodyVO;
-import api.common.pojo.vo.system.SystemServerVO;
+import api.common.pojo.po.home.SystemServerPO;
+import api.common.pojo.vo.home.AccessVO;
+import api.common.pojo.vo.home.HardwareVO;
+import api.common.pojo.vo.home.ServiceVO;
+import api.common.pojo.vo.home.SystemServerVO;
+import api.common.util.TimeUtil;
+import com.css.simulation.resource.feign.MyOauthServerService;
+import com.css.simulation.resource.project.mapper.SimulationProjectMapper;
+import com.css.simulation.resource.scene.mapper.SystemAccessMapper;
 import com.css.simulation.resource.scene.mapper.SystemServerMapper;
+import com.css.simulation.resource.system.mapper.UserMapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 
 @Service
 public class HomePageService {
@@ -17,12 +29,80 @@ public class HomePageService {
     @Autowired
     SystemServerMapper systemServerMapper;
 
+    @Autowired
+    SystemAccessMapper systemAccessMapper;
+
+    @Autowired
+    UserMapper userMapper;
+
+    @Autowired
+    MyOauthServerService myOauthServerService;
+
+    @Autowired
+    private SimulationProjectMapper simulationProjectMapper;
 
-    public ResponseBodyVO<PageInfo<SystemServerVO>> selectServerList(PageVO pageVO) {
+
+
+
+    public ResponseBodyVO<HardwareVO> selectHardware() {
+
+
+        List<SystemServerPO> systemServerPOList = systemServerMapper.selectAll();
+        int weightSum = systemServerPOList.stream().mapToInt(SystemServerPO::getWeight).sum();  // 权重之和
+        HardwareVO build = HardwareVO.builder()
+                .serverNumber(systemServerPOList.size())
+                .memoryUsage(systemServerPOList.stream().mapToInt(po -> po.getMemoryUsage() * po.getWeight() / weightSum).sum() + "")
+                .diskUsage(systemServerPOList.stream().mapToInt(po -> po.getDiskUsage() * po.getWeight() / weightSum) + "")
+                .cpuUsage(systemServerPOList.stream().mapToInt(po -> po.getCpuUsage() * po.getWeight() / weightSum) + "")
+                .gpuUsage(systemServerPOList.stream().mapToInt(po -> po.getGpuUsage() * po.getWeight() / weightSum) + "")
+                .build();
+
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, build);
+
+    }
+
+
+    public ResponseBodyVO<ServiceVO> selectService() {
+
+        ServiceVO build = ServiceVO.builder()
+                .userNumber(userMapper.selectCount())
+                .onlineNumber(myOauthServerService.online().getInfo())
+                .simulationNodeNumber(1)
+                .simulationLicenseNumber(1)
+                .dynamicsLicenseNumber(1)
+                .build();
+
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, build);
+
+    }
+
+
+    public ResponseBodyVO<List<AccessVO>> selectAccess() {
+        List<AccessVO> list = new ArrayList<>();
+        for (int i = 6; i > -1; i--) {
+            AccessVO vo = new AccessVO();
+            Map<String, Object> params = TimeUtil.getPastTime(i);
+            Integer num = systemAccessMapper.selectPastAccess(params);
+            vo.setToDate(params.get("toDate").toString());
+            vo.setNum(num);
+            list.add(vo);
+        }
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, list);
+
+    }
+
+    public ResponseBodyVO<PageInfo<SystemServerVO>> selectServer(PageVO pageVO) {
 
         PageHelper.startPage(pageVO.getCurrentPage(), pageVO.getPageSize());
-        List<SystemServerVO> systemServerPOList = systemServerMapper.selectAll();
+        List<SystemServerPO> systemServerPOList = systemServerMapper.selectAll();
+        List<SystemServerVO> systemServerVOList = new ArrayList<>();
+        systemServerPOList.forEach(po -> {
+            SystemServerVO vo = new SystemServerVO();
+            BeanUtils.copyProperties(po, vo);
+            systemServerVOList.add(vo);
+        });
 
-        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, new PageInfo<>(systemServerPOList));
+        return new ResponseBodyVO<>(ResponseBodyVO.Response.SUCCESS, new PageInfo<>(systemServerVOList));
     }
+
 }

+ 3 - 0
simulation-resource-server/src/main/java/com/css/simulation/resource/system/mapper/UserMapper.java

@@ -11,4 +11,7 @@ public interface UserMapper {
 
     UserInfoVO getUserInfo(@Param("userId") String userId);
 
+
+    Integer selectCount();
+
 }

+ 4 - 0
simulation-resource-server/src/main/resources/mapper/system/UserMapper.xml

@@ -17,4 +17,8 @@
             is_deactivate
         FROM system_user WHERE id = #{userId,jdbcType=VARCHAR}
     </select>
+    <select id="selectCount" resultType="java.lang.Integer">
+        select count(*)
+        from system_user
+    </select>
 </mapper>