content: package com.gitee.pifeng.monitoring.server.business.server.controller;
  
  import cn.hutool.core.date.DateUtil;
  import cn.hutool.core.date.TimeInterval;
  import com.gitee.pifeng.monitoring.common.domain.Result;
  import com.gitee.pifeng.monitoring.common.dto.BaseResponsePackage;
  import com.gitee.pifeng.monitoring.common.dto.CiphertextPackage;
  import com.gitee.pifeng.monitoring.common.dto.ServerPackage;
  import com.gitee.pifeng.monitoring.server.business.server.core.ServerPackageConstructor;
  import com.gitee.pifeng.monitoring.server.business.server.service.IServerService;
  import io.swagger.v3.oas.annotations.Operation;
  import io.swagger.v3.oas.annotations.media.Content;
  import io.swagger.v3.oas.annotations.media.Schema;
  import io.swagger.v3.oas.annotations.responses.ApiResponse;
  import io.swagger.v3.oas.annotations.tags.Tag;
  import lombok.extern.slf4j.Slf4j;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.web.bind.annotation.PostMapping;
  import org.springframework.web.bind.annotation.RequestBody;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RestController;
  
  /**
   * <p>
   * 服务器信息包控制器
   * </p>
   *
   * @author 皮锋
   * @custom.date 2020年3月7日 下午5:03:49
   */
  @Slf4j
  @RestController
  @RequestMapping("/server")
  @Tag(name = "信息包.服务器信息包")
  public class ServerController {
  
      /**
       * 服务端包构造器
       */
      @Autowired
      private ServerPackageConstructor serverPackageConstructor;
  
      /**
       * 服务器信息服务层接口
       */
      @Autowired
      private IServerService serverService;
  
      /**
       * <p>
       * 监控服务端程序接收监控代理端程序或者监控客户端程序发的服务器信息包，并返回结果
       * </p>
       *
       * @param serverPackage 服务器信息包
       * @return {@link BaseResponsePackage}
       * @author 皮锋
       * @custom.date 2020年3月6日 下午3:00:54
       */
      @Operation(description = "接收和响应监控代理端程序或者监控客户端程序发的服务器信息包", summary = "接收服务器信息包",
              requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(content = @Content(schema = @Schema(implementation = CiphertextPackage.class))),
              responses = @ApiResponse(content = {@Content(schema = @Schema(implementation = CiphertextPackage.class))}))
      @PostMapping("/accept-server-package")
      public BaseResponsePackage acceptServerPackage(@RequestBody ServerPackage serverPackage) {
          // 计时器
          TimeInterval timer = DateUtil.timer();
          Result result = this.serverService.dealServerPackage(serverPackage);
          BaseResponsePackage baseResponsePackage = this.serverPackageConstructor.structureBaseResponsePackage(result);
          // 时间差（毫秒）
          String betweenDay = timer.intervalPretty();
          if (timer.intervalSecond() > 1) {
              log.warn("处理服务器信息包耗时：{}", betweenDay);
          }
          return baseResponsePackage;
      }
  
  }
  