From 5032bcc26ee840150d39aeeef1f03b762f32219f Mon Sep 17 00:00:00 2001 From: chaiyapeng <3535863041@qq.com> Date: Fri, 23 Aug 2024 14:00:02 +0800 Subject: [PATCH] =?UTF-8?q?IP=E6=9F=A5=E8=AF=A2=E5=BD=92=E5=B1=9E=E5=9C=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cloud-mart-server/pom.xml | 9 +- .../com/muyu/cloud/mart/config/Demo65.java | 249 ++++++++++++++++++ .../muyu/cloud/mart/config/IPLocation.java | 53 ++++ .../cloud/mart/config/MobileLocation.java | 3 + .../muyu/cloud/mart/config/NewsInterface.java | 54 ++++ .../cloud/mart/config/WeatherInterface.java | 50 ++++ .../mart/controller/MarketController.java | 22 +- .../cloud/mart/service/MarketService.java | 4 +- .../mart/service/impl/MarketServiceImpl.java | 43 ++- 9 files changed, 472 insertions(+), 15 deletions(-) create mode 100644 cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java create mode 100644 cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java create mode 100644 cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java create mode 100644 cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java diff --git a/cloud-mart-server/pom.xml b/cloud-mart-server/pom.xml index 8716a04..0f7ba8f 100644 --- a/cloud-mart-server/pom.xml +++ b/cloud-mart-server/pom.xml @@ -106,14 +106,19 @@ commons-logging 1.2 - net.sf.json-lib json-lib 2.4 jdk13 - + + + net.sf.json-lib + json-lib + 2.2.3 + jdk15 + diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java new file mode 100644 index 0000000..3c898d0 --- /dev/null +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java @@ -0,0 +1,249 @@ +package com.muyu.cloud.mart.config; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.nio.charset.StandardCharsets; +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.config + * @Project:cloud-mart + * @name:Demo65 + * @Date:2024/8/23 9:59 + * 老黄历 + */ +public class Demo65 { + //接口请求地址 + public static final String CAlENDAR_URL = "http://v.juhe.cn/laohuangli/d?key=%s&date=%s"; + public static final String HOUR_URL = "http://v.juhe.cn/laohuangli/h?key=%s&date=%s"; + //申请接口的请求key + // TODO: 您需要改为自己的请求key + public static final String KEY = "您需要改为自己的请求key"; + + + public static void main(String[] args) { + + // TODO: 日期 + String date = "2020-11-10"; + + + //日期接口 + System.out.println("------------日期接口-----------------"); + printCalendar(date); + //时辰接口 + System.out.println("------------时辰接口-----------------"); + printHour(date); + } + + + /** + * 时辰 + * + * @param date String 日期 + */ + public static void printHour(String date) { + //发送http请求的url + String url = String.format(HOUR_URL, KEY, date); + + final String response = doGet(url); + System.out.println("接口返回:" + response); + try { + JSONObject jsonObject = JSONObject.fromObject(response); + int error_code = jsonObject.getInt("error_code"); + if (error_code == 0) { + System.out.println("调用接口成功"); + JSONArray result = jsonObject.getJSONArray("result"); + result.stream().map(JSONObject::fromObject).forEach(hour -> { + System.out.println("阳历:" + ((JSONObject) hour).getString("yangli")); + System.out.println("时间段:" + ((JSONObject) hour).getString("hours")); + System.out.println("描述:" + ((JSONObject) hour).getString("des")); + System.out.println("宜:" + ((JSONObject) hour).getString("yi")); + System.out.println("忌:" + ((JSONObject) hour).getString("ji")); + }); + + } else { + System.out.println("调用接口失败:" + jsonObject.getString("reason")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 日期 + * + * @param date String 日期 + */ + public static void printCalendar(String date) { + //发送http请求的url + String url = String.format(CAlENDAR_URL, KEY, date); + + final String response = doGet(url); + System.out.println("接口返回:" + response); + try { + JSONObject jsonObject = JSONObject.fromObject(response); + int error_code = jsonObject.getInt("error_code"); + if (error_code == 0) { + System.out.println("调用接口成功"); + JSONObject result = jsonObject.getJSONObject("result"); + System.out.println("阳历:" + result.getString("yangli")); + System.out.println("阴历:" + result.getString("yinli")); + System.out.println("五行:" + result.getString("wuxing")); + System.out.println("冲煞:" + result.getString("chongsha")); + System.out.println("彭祖百忌:" + result.getString("baiji")); + System.out.println("吉神宜趋:" + result.getString("jishen")); + System.out.println("宜:" + result.getString("yi")); + System.out.println("凶神宜忌:" + result.getString("xiongshen")); + System.out.println("忌:" + result.getString("ji")); + } else { + System.out.println("调用接口失败:" + jsonObject.getString("reason")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * get方式的http请求 + * + * @param httpUrl 请求地址 + * @return 返回结果 + */ + public static String doGet(String httpUrl) { + HttpURLConnection connection = null; + InputStream inputStream = null; + BufferedReader bufferedReader = null; + String result = null;// 返回结果字符串 + try { + // 创建远程url连接对象 + URL url = new URL(httpUrl); + // 通过远程url连接对象打开一个连接,强转成httpURLConnection类 + connection = (HttpURLConnection) url.openConnection(); + // 设置连接方式:get + connection.setRequestMethod("GET"); + // 设置连接主机服务器的超时时间:15000毫秒 + connection.setConnectTimeout(15000); + // 设置读取远程返回的数据时间:60000毫秒 + connection.setReadTimeout(60000); + // 发送请求 + connection.connect(); + // 通过connection连接,获取输入流 + if (connection.getResponseCode() == 200) { + inputStream = connection.getInputStream(); + // 封装输入流,并指定字符集 + bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + // 存放数据 + StringBuilder sbf = new StringBuilder(); + String temp; + while ((temp = bufferedReader.readLine()) != null) { + sbf.append(temp); + sbf.append(System.getProperty("line.separator")); + } + result = sbf.toString(); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭资源 + if (null != bufferedReader) { + try { + bufferedReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != inputStream) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (connection != null) { + connection.disconnect();// 关闭远程连接 + } + } + return result; + } + + + /** + * post方式的http请求 + * + * @param httpUrl 请求地址 + * @param param 请求参数 + * @return 返回结果 + */ + public static String doPost(String httpUrl, String param) { + HttpURLConnection connection = null; + InputStream inputStream = null; + OutputStream outputStream = null; + BufferedReader bufferedReader = null; + String result = null; + try { + URL url = new URL(httpUrl); + // 通过远程url连接对象打开连接 + connection = (HttpURLConnection) url.openConnection(); + // 设置连接请求方式 + connection.setRequestMethod("POST"); + // 设置连接主机服务器超时时间:15000毫秒 + connection.setConnectTimeout(15000); + // 设置读取主机服务器返回数据超时时间:60000毫秒 + connection.setReadTimeout(60000); + // 默认值为:false,当向远程服务器传送数据/写数据时,需要设置为true + connection.setDoOutput(true); + // 设置传入参数的格式:请求参数应该是 name1=value1&name2=value2 的形式。 + connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); + // 通过连接对象获取一个输出流 + outputStream = connection.getOutputStream(); + // 通过输出流对象将参数写出去/传输出去,它是通过字节数组写出的 + outputStream.write(param.getBytes()); + // 通过连接对象获取一个输入流,向远程读取 + if (connection.getResponseCode() == 200) { + inputStream = connection.getInputStream(); + // 对输入流对象进行包装:charset根据工作项目组的要求来设置 + bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)); + StringBuilder sbf = new StringBuilder(); + String temp; + // 循环遍历一行一行读取数据 + while ((temp = bufferedReader.readLine()) != null) { + sbf.append(temp); + sbf.append(System.getProperty("line.separator")); + } + result = sbf.toString(); + } + } catch (IOException e) { + e.printStackTrace(); + } finally { + // 关闭资源 + if (null != bufferedReader) { + try { + bufferedReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != outputStream) { + try { + outputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (null != inputStream) { + try { + inputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + if (connection != null) { + connection.disconnect(); + } + } + return result; + } +} diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java new file mode 100644 index 0000000..d0f85e5 --- /dev/null +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java @@ -0,0 +1,53 @@ +package com.muyu.cloud.mart.config; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.config + * @Project:cloud-mart + * @name:IPLocation + * @Date:2024/8/23 9:48 + * IP查询归属地接口 + */ +public class IPLocation { + public static void main(String[] args) throws Exception { + String apiKey = "e84b7d13a9fb87b4ebcc9813e4518955"; + String apiUrl = "http://apis.juhe.cn/ip/ipNewV3"; + + HashMap map = new HashMap<>(); + map.put("key", apiKey); + map.put("ip", "47.116.182.215"); + + URL url = new URL(String.format(apiUrl + "?" + params(map))); + BufferedReader in = new BufferedReader(new InputStreamReader((url.openConnection()).getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + System.out.println(response); + } + + public static String params(Map map) { + return map.entrySet().stream() + .map(entry -> { + try { + return entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8.toString()); + } catch (Exception e) { + e.printStackTrace(); + return entry.getKey() + "=" + entry.getValue(); + } + }) + .collect(Collectors.joining("&")); + } + +} diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/MobileLocation.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/MobileLocation.java index 9a6d548..5f7cdc2 100644 --- a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/MobileLocation.java +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/MobileLocation.java @@ -14,6 +14,9 @@ import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; +/** + * 手机号查询归属地接口 + */ public class MobileLocation { // 手机归属地查询接口地址 // http://apis.juhe.cn/mobile/get http://127.0.0.1:8369/query?mobile diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java new file mode 100644 index 0000000..b27016b --- /dev/null +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java @@ -0,0 +1,54 @@ +package com.muyu.cloud.mart.config; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.config + * @Project:cloud-mart + * @name:NewsLocation + * @Date:2024/8/23 9:52 + * 新闻头条接口 + */ +public class NewsInterface { + public static void main(String[] args) throws Exception { + String apiKey = "cdbb93769c75054e6beda4c1dc0b6a0b"; + String apiUrl = "http://v.juhe.cn/toutiao/index"; + + HashMap map = new HashMap<>(); + map.put("key", apiKey); + map.put("type", "top"); + map.put("page", "20"); + map.put("page_size", ""); + map.put("is_filter", ""); + + URL url = new URL(String.format(apiUrl + "?" + params(map))); + BufferedReader in = new BufferedReader(new InputStreamReader((url.openConnection()).getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + System.out.println(response); + } + + public static String params(Map map) { + return map.entrySet().stream() + .map(entry -> { + try { + return entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8.toString()); + } catch (Exception e) { + e.printStackTrace(); + return entry.getKey() + "=" + entry.getValue(); + } + }) + .collect(Collectors.joining("&")); + } +} diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java new file mode 100644 index 0000000..ed3f133 --- /dev/null +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java @@ -0,0 +1,50 @@ +package com.muyu.cloud.mart.config; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.config + * @Project:cloud-mart + * @name:WeatherInterface + * @Date:2024/8/23 10:11 + * 气象预警接口 + */ +public class WeatherInterface { + public static void main(String[] args) throws Exception { + String apiKey = "80e78ee9adaded8b1f42ec9cbdf69ac9"; + String apiUrl = "https://apis.juhe.cn/fapig/alarm/citys"; + + HashMap map = new HashMap<>(); + map.put("key", apiKey); + + URL url = new URL(String.format(apiUrl + "?" + params(map))); + BufferedReader in = new BufferedReader(new InputStreamReader((url.openConnection()).getInputStream())); + String inputLine; + StringBuffer response = new StringBuffer(); + while ((inputLine = in.readLine()) != null) { + response.append(inputLine); + } + in.close(); + System.out.println(response); + } + + public static String params(Map map) { + return map.entrySet().stream() + .map(entry -> { + try { + return entry.getKey() + "=" + URLEncoder.encode(entry.getValue(), StandardCharsets.UTF_8.toString()); + } catch (Exception e) { + e.printStackTrace(); + return entry.getKey() + "=" + entry.getValue(); + } + }) + .collect(Collectors.joining("&")); + } +} diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java index b1d9cad..c5d5bf9 100644 --- a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java @@ -1,23 +1,20 @@ package com.muyu.cloud.mart.controller; import com.alibaba.fastjson.JSON; -import com.dtflys.forest.annotation.Post; +import com.muyu.cloud.mart.config.IPLocation; import com.muyu.cloud.mart.service.MarketService; import com.muyu.common.core.domain.Result; import com.muyu.common.core.web.controller.BaseController; import com.muyu.common.core.web.page.TableDataInfo; -import com.muyu.common.security.annotation.RequiresPermissions; import com.muyu.domain.Market; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*; -import java.io.InputStream; -import java.net.URL; -import java.net.URLConnection; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @Author:chaiyapeng @@ -63,9 +60,16 @@ public class MarketController extends BaseController { /** * 手机号查询归属地 */ - - @PostMapping("getPhonePlace") - public Result getPhonePlace(@RequestBody String tel){ - return marketService.getPhonePlace(tel); + @GetMapping("getPhonePlace") + public void getPhonePlace(@RequestParam(name = "tel") String tel){ + marketService.getPhonePlace(tel); } + /** + * IP查询归属地 + */ + @GetMapping("getIpPlace") + public Result getIpPlace(@RequestParam(name = "ip") String ip){ + return marketService.getIpPlace(ip); + } + } diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java index fa9509e..1022d3e 100644 --- a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java @@ -16,5 +16,7 @@ import java.util.List; public interface MarketService extends IService { List findMarketList(); - Result getPhonePlace(String tel); + void getPhonePlace(String tel); + + Result getIpPlace(String ip); } diff --git a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java index 1109b31..4538fe7 100644 --- a/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java +++ b/cloud-mart-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java @@ -14,9 +14,16 @@ import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.HashMap; import java.util.List; import java.util.Locale; +import static com.muyu.cloud.mart.config.IPLocation.params; + /** * @Author:chaiyapeng * @Package:com.muyu.cloud.etl.service.impl @@ -38,10 +45,40 @@ public class MarketServiceImpl extends ServiceImpl impleme } // public static final PhoneNumberOfflineGeocoder GEOCODER = PhoneNumberOfflineGeocoder.getInstance(); - public static final int COUNTRY_CODE = 86; + /** + * 手机号查询归属地 + * @param tel + */ @Override - public Result getPhonePlace(String tel) { + public void getPhonePlace(String tel) { MobileLocation.queryMobileLocation(tel); - return null; + } + + /** + * IP查询归属地 + * @param ip + * @return + */ + @Override + public Result getIpPlace(String ip) { + String apiKey = "e84b7d13a9fb87b4ebcc9813e4518955"; + String apiUrl = "http://apis.juhe.cn/ip/ipNewV3"; + HashMap map = new HashMap<>(); + map.put("key", apiKey); + map.put("ip", ip); + try { + URL url = new URL(String.format(apiUrl + "?" + params(map))); + BufferedReader in = new BufferedReader(new InputStreamReader((url.openConnection()).getInputStream())); + String inputLine; + StringBuffer stringBuffer = new StringBuffer(); + while ((inputLine = in.readLine()) != null){ + stringBuffer.append(inputLine); + } + in.close(); + System.out.println(stringBuffer); + return Result.success(stringBuffer); + } catch (Exception e) { + throw new RuntimeException(e); + } } }