parent
9517158900
commit
059c89a086
@ -0,0 +1,13 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: "index"
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.xjs.apitools.controller;
|
||||||
|
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* api小工具控制器
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-01-17
|
||||||
|
*/
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("apitools")
|
||||||
|
@Api(tags = "业务模块-API小工具")
|
||||||
|
@Log4j2
|
||||||
|
public class ApiToolsController {
|
||||||
|
}
|
@ -0,0 +1,33 @@
|
|||||||
|
package com.xjs.apitools.factory;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* api工具工厂接口
|
||||||
|
*
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-01-17
|
||||||
|
*/
|
||||||
|
public interface ApiToolsFactory<T, R> {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取api数据工厂方法 (无参)
|
||||||
|
*
|
||||||
|
* @return T
|
||||||
|
*/
|
||||||
|
default T ApiData() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取api数据工厂方法 (有参)
|
||||||
|
*
|
||||||
|
* @param req 请求参数
|
||||||
|
* @return T
|
||||||
|
*/
|
||||||
|
default T ApiData(R req) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package com.xjs.apitools.factory.impl;
|
||||||
|
|
||||||
|
import com.xjs.apitools.domain.ApiHoliday;
|
||||||
|
import com.xjs.apitools.factory.ApiToolsFactory;
|
||||||
|
import com.xjs.config.RollProperties;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* roll平台获取节假日api工厂实现
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-01-17
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Log4j2
|
||||||
|
public class RollHolidayFactory implements ApiToolsFactory<ApiHoliday,Object> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private RollProperties rollProperties;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ApiHoliday ApiData() {
|
||||||
|
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.xjs.common.client.api.speedtest;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.annotation.ApiLog;
|
||||||
|
import com.xjs.common.client.factory.SpeedTestIPFeignFactory;
|
||||||
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
|
import static com.xjs.consts.ApiConst.SPEED_TEST_IP;
|
||||||
|
import static com.xjs.consts.ApiConst.SPEED_TEST_IP_URL;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https://myplugin.speedtest.cn/#/ 测速网
|
||||||
|
*
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-01-17
|
||||||
|
*/
|
||||||
|
@FeignClient(name = "speedTestIP", url = SPEED_TEST_IP_URL,fallbackFactory = SpeedTestIPFeignFactory.class)
|
||||||
|
public interface SpeedTestIPFeignClient {
|
||||||
|
|
||||||
|
@GetMapping()
|
||||||
|
@ApiLog(name = SPEED_TEST_IP,
|
||||||
|
url = SPEED_TEST_IP_URL,
|
||||||
|
method = "Get")
|
||||||
|
JSONObject IpApi(@RequestParam("ipv4") String requestBody);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.xjs.common.client.factory;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.ruoyi.common.core.domain.R;
|
||||||
|
import com.xjs.common.client.api.speedtest.SpeedTestIPFeignClient;
|
||||||
|
import lombok.extern.log4j.Log4j2;
|
||||||
|
import org.springframework.cloud.openfeign.FallbackFactory;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import static com.xjs.consts.ApiConst.DEMOTE_ERROR;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-01-17
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Log4j2
|
||||||
|
public class SpeedTestIPFeignFactory implements FallbackFactory<SpeedTestIPFeignClient> {
|
||||||
|
@Override
|
||||||
|
public SpeedTestIPFeignClient create(Throwable cause) {
|
||||||
|
log.error("api模块 测速网 IP服务调用失败:{},执行降级处理", cause.getMessage());
|
||||||
|
return requestBody -> {
|
||||||
|
JSONObject jsonObject = new JSONObject();
|
||||||
|
jsonObject.put(DEMOTE_ERROR, R.FAIL);
|
||||||
|
return jsonObject;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,44 @@
|
|||||||
|
package com.xjs.weather.factory.impl;
|
||||||
|
|
||||||
|
import com.alibaba.fastjson.JSONObject;
|
||||||
|
import com.xjs.common.client.api.speedtest.SpeedTestIPFeignClient;
|
||||||
|
import com.xjs.utils.IPUtils;
|
||||||
|
import com.xjs.weather.domain.IPInfoVo;
|
||||||
|
import com.xjs.weather.factory.IPFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import static com.xjs.consts.ApiConst.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 测速网 IP信息查询API工厂实现 (主要获取ipv6)
|
||||||
|
* @author xiejs
|
||||||
|
* @since 2022-01-17
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
public class SpeedTestIPFactory implements IPFactory<IPInfoVo> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private SpeedTestIPFeignClient speedTestIPFeignClient;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Deprecated
|
||||||
|
public IPInfoVo IpApi() {
|
||||||
|
String v4IP = IPUtils.getV4IP();
|
||||||
|
String ip = Optional.ofNullable(v4IP).orElse(LOCAL_IP);
|
||||||
|
JSONObject jsonObject = speedTestIPFeignClient.IpApi(ip);
|
||||||
|
if (!jsonObject.containsKey(DEMOTE_ERROR) && jsonObject.getInteger("code") == SPEED_TEST_CODE_SUCCESS.intValue()) {
|
||||||
|
JSONObject data = jsonObject.getJSONObject("data");
|
||||||
|
IPInfoVo ipInfoVo = new IPInfoVo();
|
||||||
|
ipInfoVo.setCity(data.getString("city"));
|
||||||
|
ipInfoVo.setIp(data.getString("ip"));
|
||||||
|
ipInfoVo.setIsp(data.getString("isp"));
|
||||||
|
ipInfoVo.setProvince(data.getString("province"));
|
||||||
|
System.out.println("json!!!"+data.toJSONString());
|
||||||
|
return ipInfoVo;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue