IpCheckController.java 2.02 KB
package com.canrd.webmagic.controller;

import com.canrd.webmagic.common.constant.ServerResult;
import com.canrd.webmagic.domain.dto.IpDO;
import com.canrd.webmagic.service.IpService;
import com.canrd.webmagic.util.PingUtil;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicInteger;

@RestController
@RequestMapping("/ip")
@Api("Ip-Check")
public class IpCheckController {
    @Resource
    private IpService ipService;

    @GetMapping("/getIpById/{id}")
    public ServerResult getIpById(@PathVariable int id){
        IpDO ip = ipService.getById(id);
        return ServerResult.success(ip);
    }

    @GetMapping("/getIps")
    public ServerResult getIps(){
        List<IpDO> ipList = ipService.findAll();
        return ServerResult.success(ipList);
    }

    @GetMapping("/checkIps")
    public ServerResult checkIps(){
        List<IpDO> ipList = ipService.findAll();
        AtomicInteger error= new AtomicInteger();
        AtomicInteger success= new AtomicInteger();
        ipList.forEach(ip-> {
            if (!PingUtil.ping(ip.getIp(),4,3000)) {
                ip.setIsUse(1);
                ip.setDetectionTime(new Date());
                ipService.updateById(ip);
                error.addAndGet(1);
            }else {
                success.addAndGet(1);
            }
        });
        String mes ="本次检测,存活ip数为"+success+",失活ip数为"+error;
        return ServerResult.success(mes);
    }

    @GetMapping("/randomIp")
    public ServerResult randomIp(){
        List<IpDO> ip = ipService.findAll();
        int size = ip.size();
        int ran = (int) (Math.random() * size-1);
        IpDO ipDO = ip.get(ran);
        return ServerResult.success(ipDO);
    }
}