From 6023a120ce22f9e74025cc37230e5fdd9a7cd77e Mon Sep 17 00:00:00 2001 From: chaiyapeng <3535863041@qq.com> Date: Tue, 27 Aug 2024 14:15:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/muyu/domain/Birthday.java | 22 ++ .../main/java/com/muyu/domain/Connector.java | 64 +++++ .../src/main/java/com/muyu/domain/Market.java | 51 ++++ .../main/java/com/muyu/domain/PhonePlace.java | 25 ++ .../main/java/com/muyu/domain/Postcode.java | 22 ++ .../main/java/com/muyu/domain/UserSearch.java | 60 +++++ .../muyu/cloud/mart/MarketApplication.java | 27 ++ .../com/muyu/cloud/mart/config/Demo65.java | 249 ++++++++++++++++++ .../muyu/cloud/mart/config/IPLocation.java | 53 ++++ .../com/muyu/cloud/mart/config/JuheDemo.java | 124 +++++++++ .../muyu/cloud/mart/config/NewsInterface.java | 54 ++++ .../cloud/mart/config/WeatherInterface.java | 50 ++++ .../mart/controller/MarketController.java | 92 +++++++ .../muyu/cloud/mart/mapper/MarketMapper.java | 19 ++ .../cloud/mart/service/MarketService.java | 32 +++ .../mart/service/impl/MarketServiceImpl.java | 118 +++++++++ .../muyu/cloud/mart/utils/BirthdayHelper.java | 67 +++++ .../com/muyu/cloud/mart/utils/Headlines.java | 47 ++++ .../com/muyu/cloud/mart/utils/IPLocation.java | 56 ++++ .../muyu/cloud/mart/utils/MobileLocation.java | 154 +++++++++++ .../cloud/mart/utils/PostcodeInquire.java | 62 +++++ .../com/muyu/cloud/mart/utils/Weather.java | 56 ++++ .../src/main/resources/banner.txt | 2 + .../src/main/resources/bootstrap.yml | 73 +++++ .../src/main/resources/logback/dev.xml | 74 ++++++ .../src/main/resources/logback/prod.xml | 81 ++++++ .../src/main/resources/logback/test.xml | 81 ++++++ .../resources/mapper/ConnectorMappers.xml | 7 + .../main/resources/mapper/MarketMappers.xml | 7 + 29 files changed, 1829 insertions(+) create mode 100644 cloud-port-common/src/main/java/com/muyu/domain/Birthday.java create mode 100644 cloud-port-common/src/main/java/com/muyu/domain/Connector.java create mode 100644 cloud-port-common/src/main/java/com/muyu/domain/Market.java create mode 100644 cloud-port-common/src/main/java/com/muyu/domain/PhonePlace.java create mode 100644 cloud-port-common/src/main/java/com/muyu/domain/Postcode.java create mode 100644 cloud-port-common/src/main/java/com/muyu/domain/UserSearch.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/MarketApplication.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/config/JuheDemo.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/mapper/MarketMapper.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/BirthdayHelper.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/Headlines.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/IPLocation.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/MobileLocation.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/PostcodeInquire.java create mode 100644 cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/Weather.java create mode 100644 cloud-port-server/src/main/resources/banner.txt create mode 100644 cloud-port-server/src/main/resources/bootstrap.yml create mode 100644 cloud-port-server/src/main/resources/logback/dev.xml create mode 100644 cloud-port-server/src/main/resources/logback/prod.xml create mode 100644 cloud-port-server/src/main/resources/logback/test.xml create mode 100644 cloud-port-server/src/main/resources/mapper/ConnectorMappers.xml create mode 100644 cloud-port-server/src/main/resources/mapper/MarketMappers.xml diff --git a/cloud-port-common/src/main/java/com/muyu/domain/Birthday.java b/cloud-port-common/src/main/java/com/muyu/domain/Birthday.java new file mode 100644 index 0000000..64d99c5 --- /dev/null +++ b/cloud-port-common/src/main/java/com/muyu/domain/Birthday.java @@ -0,0 +1,22 @@ +package com.muyu.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.domain + * @Project:cloud-mart + * @name:BirthdayHelper + * @Date:2024/8/24 19:37 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Birthday { + private String year; + private String month; + private String day; + private String hour; +} diff --git a/cloud-port-common/src/main/java/com/muyu/domain/Connector.java b/cloud-port-common/src/main/java/com/muyu/domain/Connector.java new file mode 100644 index 0000000..6674634 --- /dev/null +++ b/cloud-port-common/src/main/java/com/muyu/domain/Connector.java @@ -0,0 +1,64 @@ +package com.muyu.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.util.Date; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.domain + * @Project:cloud-mart + * @name:Connector + * @Date:2024/8/26 10:03 + */ +@Data +public class Connector { + /** + * id + */ + private Long connectorId; + /** + * 接口名称 + */ + private String connectorName; + /** + * 接口分类 + */ + private String connectorSort; + /** + * 接口描述 + */ + private String connectorDescribe; + /** + * 接口图片 + */ + private String connectorPicture; + /** + * 公司 + */ + private String connectorCompany; + /** + * 更新时间 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private Date connectorTime; + /** + * 剩余次数 + */ + private Integer connectorResidueDegree; + /** + * 购买次数 + */ + private Integer connectorFrequency; + /** + * 测试地址 + */ + private String connectorAddress; + /** + * 状态 + */ + private Integer connectorStatus; +} diff --git a/cloud-port-common/src/main/java/com/muyu/domain/Market.java b/cloud-port-common/src/main/java/com/muyu/domain/Market.java new file mode 100644 index 0000000..a6404bf --- /dev/null +++ b/cloud-port-common/src/main/java/com/muyu/domain/Market.java @@ -0,0 +1,51 @@ +package com.muyu.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.domain + * @Project:cloud-mart + * @name:Market + * @Date:2024/8/21 21:00 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Market { + private String name; + private String cardno; + private String descriot; + private String ctftp; + private String ctfid; + private String gender; + private String birthday; + private String address; + private String zip; + private String dirty; + private String district1; + private String district2; + private String district3; + private String district4; + private String district5; + private String district6; + private String firstnm; + private String lastnm; + private String duty; + private String mobile; + private String tel; + private String fax; + private String email; + private String nation; + private String taste; + private String education; + private String company; + private String ctel; + private String caddress; + private String czip; + private String family; + private String version; + private String id; +} diff --git a/cloud-port-common/src/main/java/com/muyu/domain/PhonePlace.java b/cloud-port-common/src/main/java/com/muyu/domain/PhonePlace.java new file mode 100644 index 0000000..7a6bb32 --- /dev/null +++ b/cloud-port-common/src/main/java/com/muyu/domain/PhonePlace.java @@ -0,0 +1,25 @@ +package com.muyu.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.domain + * @Project:cloud-mart + * @name:PhonePlace + * @Date:2024/8/23 20:34 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class PhonePlace { + private String province; + private String city; + private String areacode; + private String zip; + private String company; + private String reason; + private String tel; +} diff --git a/cloud-port-common/src/main/java/com/muyu/domain/Postcode.java b/cloud-port-common/src/main/java/com/muyu/domain/Postcode.java new file mode 100644 index 0000000..2efd05c --- /dev/null +++ b/cloud-port-common/src/main/java/com/muyu/domain/Postcode.java @@ -0,0 +1,22 @@ +package com.muyu.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.domain + * @Project:cloud-mart + * @name:Postcode + * @Date:2024/8/25 11:04 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class Postcode { + private String postcode; + private Integer page; + private Integer pagesize; + private String dtype; +} diff --git a/cloud-port-common/src/main/java/com/muyu/domain/UserSearch.java b/cloud-port-common/src/main/java/com/muyu/domain/UserSearch.java new file mode 100644 index 0000000..5f769bf --- /dev/null +++ b/cloud-port-common/src/main/java/com/muyu/domain/UserSearch.java @@ -0,0 +1,60 @@ +package com.muyu.domain; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.domain + * @Project:cloud-mart + * @name:UserSearch + * @Date:2024/8/22 16:55 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserSearch { + /** + * id + */ + private Integer userId; + /** + * 用户名 + */ + private String userName; + /** + * 密码 + */ + private String userPwd; + /** + * 手机号 + */ + private String userPhone; + /** + * 身份证 + */ + private String userIdentityCard; + /** + * 邮箱 + */ + private String userMailbox; + /** + * 余额 + */ + private BigDecimal userBalance; + /** + * 用户名查询 + */ + private String blur; + /** + * 当前页 + */ + private Integer pageSum; + /** + *每页显示的条数 + */ + private Integer pageSize; +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/MarketApplication.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/MarketApplication.java new file mode 100644 index 0000000..448ce50 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/MarketApplication.java @@ -0,0 +1,27 @@ +package com.muyu.cloud.mart; + +import com.github.tobato.fastdfs.FdfsClientConfig; +import com.muyu.common.security.annotation.EnableCustomConfig; +import com.muyu.common.security.annotation.EnableMyFeignClients; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Import; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart + * @Project:cloud-mart + * @name:MarketApplication + * @Date:2024/8/21 22:14 + */ +@EnableCustomConfig +@EnableMyFeignClients +@SpringBootApplication +//@Import(FdfsClientConfig.class) +//@EnableFeignClients +public class MarketApplication { + public static void main(String[] args) { + SpringApplication.run(MarketApplication.class,args); + } +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/Demo65.java new file mode 100644 index 0000000..3c898d0 --- /dev/null +++ b/cloud-port-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-port-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/IPLocation.java new file mode 100644 index 0000000..d0f85e5 --- /dev/null +++ b/cloud-port-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-port-server/src/main/java/com/muyu/cloud/mart/config/JuheDemo.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/JuheDemo.java new file mode 100644 index 0000000..4f5df39 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/JuheDemo.java @@ -0,0 +1,124 @@ +package com.muyu.cloud.mart.config; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; + +import com.muyu.domain.Market; +import net.sf.json.JSONObject; +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.config + * @Project:cloud-mart + * @name:JuheDemo + * @Date:2024/8/22 22:03 + */ +public class JuheDemo { + public static final String DEF_CHATSET = "UTF-8"; + public static final int DEF_CONN_TIMEOUT = 30000; + public static final int DEF_READ_TIMEOUT = 30000; + public static String userAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36"; + + public static void mobileQuery(Market market){ + String result =null; + String url ="http://apis.juhe.cn/mobile/get";//请求接口地址 + Map params = new HashMap();//请求参数 + params.put("phone",market.getTel());//需要查询的手机号码 + params.put("key","8e5493da8edee8e42831574b9a2c3492");//应用APPKEY(应用详细页查询) + try { + result = net(url, params, "GET"); + JSONObject object = JSONObject.fromObject(result); + if(object.getInt("error_code")==0){ + System.out.println(object.get("result")); + }else{ + System.out.println(object.get("error_code")+":"+object.get("reason")); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + public static void main(String[] args) { + + } + + /** + * + * @param strUrl 请求地址 + * @param params 请求参数 + * @param method 请求方法 + * @return 网络请求字符串 + * @throws Exception + */ + public static String net(String strUrl, Map params,String method) throws Exception { + HttpURLConnection conn = null; + BufferedReader reader = null; + String rs = null; + try { + StringBuffer sb = new StringBuffer(); + if(method==null || method.equals("GET")){ + strUrl = strUrl+"?"+urlencode(params); + } + URL url = new URL(strUrl); + conn = (HttpURLConnection) url.openConnection(); + if(method==null || method.equals("GET")){ + conn.setRequestMethod("GET"); + }else{ + conn.setRequestMethod("POST"); + conn.setDoOutput(true); + } + conn.setRequestProperty("User-agent", userAgent); + conn.setUseCaches(false); + conn.setConnectTimeout(DEF_CONN_TIMEOUT); + conn.setReadTimeout(DEF_READ_TIMEOUT); + conn.setInstanceFollowRedirects(false); + conn.connect(); + if (params!= null && method.equals("POST")) { + try { + DataOutputStream out = new DataOutputStream(conn.getOutputStream()); + out.writeBytes(urlencode(params)); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + } + InputStream is = conn.getInputStream(); + reader = new BufferedReader(new InputStreamReader(is, DEF_CHATSET)); + String strRead = null; + while ((strRead = reader.readLine()) != null) { + sb.append(strRead); + } + rs = sb.toString(); + } catch (IOException e) { + e.printStackTrace(); + } finally { + if (reader != null) { + reader.close(); + } + if (conn != null) { + conn.disconnect(); + } + } + return rs; + } + + //将map型转为请求参数型 + public static String urlencode(Map data) { + StringBuilder sb = new StringBuilder(); + for (Map.Entry i : data.entrySet()) { + try { + sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue()+"","UTF-8")).append("&"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + return sb.toString(); + } +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/NewsInterface.java new file mode 100644 index 0000000..b27016b --- /dev/null +++ b/cloud-port-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-port-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/config/WeatherInterface.java new file mode 100644 index 0000000..ed3f133 --- /dev/null +++ b/cloud-port-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-port-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java new file mode 100644 index 0000000..eba03ba --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/controller/MarketController.java @@ -0,0 +1,92 @@ +package com.muyu.cloud.mart.controller; + +import com.alibaba.fastjson.JSON; + +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.domain.Birthday; +import com.muyu.domain.Market; +import com.muyu.domain.Postcode; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.etl.controller + * @Project:cloud-mart + * @name:MarketController + * @Date:2024/8/21 21:53 + */ +@RestController +@RequestMapping("list") +public class MarketController extends BaseController { + + @Autowired + private MarketService marketService; + @Autowired + private RedisTemplateredisTemplate; + +// @RequiresPermissions("mart:info:list") + + /** + * 两千万条数据查询 + * @return + */ + @GetMapping("findMarketList") + public Result> findMarketList(){ + List list = marketService.findMarketList(); + return getDataTable(list); + } + + /** + * 手机号查询归属地 + */ + @GetMapping("getPhonePlace") + public Result getPhonePlace(@RequestParam(name = "tel") String tel){ + return marketService.getPhonePlace(tel); + } + /** + * IP查询归属地 + */ + @GetMapping("getIpPlace") + public Result getIpPlace(@RequestParam(name = "ip") String ip){ + return marketService.getIpPlace(ip); + } + /** + * 新闻头条 + */ + @GetMapping("getHeadlines") + public Result getHeadlines(){ + return marketService.getHeadlines(); + } + /** + * 气象预警 + */ + @GetMapping("getWeather") + public Result getWeather(){ + return marketService.getWeather(); + } + /** + * 生辰助手 + */ + @PostMapping("getBirthday") + public Result getBirthday(@RequestBody Birthday birthday){ + return marketService.getBirthday(birthday); + } + /** + * 邮编查询 + */ + @PostMapping("getPostcode") + public Result getPostcode(@RequestBody Postcode postcode){ + return marketService.getPostcode(postcode); + } + +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/mapper/MarketMapper.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/mapper/MarketMapper.java new file mode 100644 index 0000000..0e4a2c5 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/mapper/MarketMapper.java @@ -0,0 +1,19 @@ +package com.muyu.cloud.mart.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.muyu.domain.Market; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.etl.mapper + * @Project:cloud-mart + * @name:MarketMapper + * @Date:2024/8/21 21:54 + */ +@Mapper +public interface MarketMapper extends BaseMapper { + +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java new file mode 100644 index 0000000..9146906 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/service/MarketService.java @@ -0,0 +1,32 @@ +package com.muyu.cloud.mart.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.core.domain.Result; +import com.muyu.domain.Birthday; +import com.muyu.domain.Market; +import com.muyu.domain.Postcode; + +import java.util.List; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.etl.service + * @Project:cloud-mart + * @name:MarketService + * @Date:2024/8/21 21:54 + */ +public interface MarketService extends IService { + List findMarketList(); + + Result getPhonePlace(String tel); + + Result getIpPlace(String ip); + + Result getHeadlines(); + + Result getWeather(); + + Result getBirthday(Birthday birthday); + + Result getPostcode(Postcode postcode); +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java new file mode 100644 index 0000000..89769e0 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/service/impl/MarketServiceImpl.java @@ -0,0 +1,118 @@ +package com.muyu.cloud.mart.service.impl; + +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import com.muyu.cloud.mart.utils.*; +import com.muyu.cloud.mart.mapper.MarketMapper; +import com.muyu.cloud.mart.service.MarketService; +import com.muyu.common.core.domain.Result; +import com.muyu.domain.Birthday; +import com.muyu.domain.Market; +import com.muyu.domain.PhonePlace; +import com.muyu.domain.Postcode; +import lombok.extern.log4j.Log4j2; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +import static com.muyu.cloud.mart.config.IPLocation.params; +import static com.muyu.common.core.utils.PageUtils.startPage; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.etl.service.impl + * @Project:cloud-mart + * @name:MarketServiceImpl + * @Date:2024/8/21 21:54 + */ +@Service +@Log4j2 +public class MarketServiceImpl extends ServiceImpl implements MarketService { + + @Autowired + private MarketMapper marketMapper; + @Autowired + private RedisTemplateredisTemplate; + + @Override + public List findMarketList() { + if (redisTemplate.hasKey("list")){ + List list = redisTemplate.opsForList().range("list", 0, -1); + ArrayList markets = new ArrayList<>(); + for (String s : list) { + markets.add(JSON.parseObject(s, Market.class)); + } + return markets; + } + startPage(); +// List list = marketService.findMarketList(); + List list = marketMapper.selectList(null); + for (Market market1 : list) { + redisTemplate.opsForList().rightPush("list", JSON.toJSONString(market1)); + } + return list; + } +// public static final PhoneNumberOfflineGeocoder GEOCODER = PhoneNumberOfflineGeocoder.getInstance(); + + /** + * 手机号查询归属地 + * @param tel + */ + @Override + public Result getPhonePlace(String tel) { + PhonePlace phonePlace = MobileLocation.queryMobileLocation(tel); + return Result.success(phonePlace); + } + + /** + * IP查询归属地 + * @param ip + * @return + */ + @Override + public Result getIpPlace(String ip) { + StringBuffer stringBuffer = IPLocation.queryIPLocation(ip); + return Result.success(stringBuffer); + } + /** + * 新闻头条 + * @return + */ + @Override + public Result getHeadlines() { + StringBuffer stringBuffer = Headlines.queryHeadlines(); + return Result.success(stringBuffer); + } + /** + * 气象预警 + */ + @Override + public Result getWeather() { + StringBuffer stringBuffer = Weather.queryWeather(); + return Result.success(stringBuffer); + } + /** + * 生辰助手 + */ + @Override + public Result getBirthday(Birthday birthday) { + StringBuffer stringBuffer = BirthdayHelper.queryBirthday(birthday); + return Result.success(stringBuffer); + } + /** + * 邮编查询 + */ + @Override + public Result getPostcode(Postcode postcode) { + StringBuffer stringBuffer = PostcodeInquire.queryPostcode(postcode); + return Result.success(stringBuffer); + } +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/BirthdayHelper.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/BirthdayHelper.java new file mode 100644 index 0000000..f8aaacd --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/BirthdayHelper.java @@ -0,0 +1,67 @@ +package com.muyu.cloud.mart.utils; + +import com.muyu.domain.Birthday; + +import java.nio.charset.StandardCharsets; +import java.util.HashMap; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.utils + * @Project:cloud-mart + * @name:BirthdayHelper + * @Date:2024/8/24 19:36 + * 生辰助手 + */ +public class BirthdayHelper { + + public static StringBuffer queryBirthday(Birthday birthday){ + String apiKey = "9bbfc46233d4931c39207b090ed4b27c"; + String apiUrl = "http://apis.juhe.cn/birthEight/query"; + HashMap map = new HashMap<>(); + + map.put("key", apiKey); + map.put("year", birthday.getYear()); + birthday.setYear(map.put("year", birthday.getYear())); + map.put("month", birthday.getMonth()); + birthday.setMonth(map.put("month", birthday.getMonth())); + map.put("day", birthday.getDay()); + birthday.setDay(map.put("day", birthday.getDay())); + map.put("hour", birthday.getHour()); + birthday.setHour(map.put("hour", birthday.getHour())); + try { + 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); + return response; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + + 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-port-server/src/main/java/com/muyu/cloud/mart/utils/Headlines.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/Headlines.java new file mode 100644 index 0000000..51379b7 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/Headlines.java @@ -0,0 +1,47 @@ +package com.muyu.cloud.mart.utils; + +import com.muyu.common.core.domain.Result; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; +import java.util.HashMap; + +import static com.muyu.cloud.mart.config.IPLocation.params; + +/** + * @Author:chaiyapeng + * @Package:com.muyu.cloud.mart.utils + * @Project:cloud-mart + * @name:Headlines + * @Date:2024/8/24 18:39 + * 新闻头条 + */ +public class Headlines { + + public static StringBuffer queryHeadlines(){ + 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", ""); + try { + 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); + return response; + } catch (Exception e) { + throw new RuntimeException(e); + } + } +} diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/IPLocation.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/IPLocation.java new file mode 100644 index 0000000..2cbfe4e --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/IPLocation.java @@ -0,0 +1,56 @@ +package com.muyu.cloud.mart.utils; + +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.utils + * @Project:cloud-mart + * @name:IPLocation + * @Date:2024/8/23 20:54 + * IP查询归属地 + */ +public class IPLocation { + public static StringBuffer queryIPLocation(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 stringBuffer; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + + 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-port-server/src/main/java/com/muyu/cloud/mart/utils/MobileLocation.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/MobileLocation.java new file mode 100644 index 0000000..166a87a --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/MobileLocation.java @@ -0,0 +1,154 @@ +package com.muyu.cloud.mart.utils; + + + + + +import com.muyu.domain.PhonePlace; +import net.sf.json.JSONObject; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLEncoder; +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 + public static String API_URL = "http://apis.juhe.cn/mobile/get"; + // 接口请求Key + public static String API_KEY = "8e5493da8edee8e42831574b9a2c3492"; + + + /** + * 根据手机号码/手机号码前7位查询号码归属地 + * @param tel + */ + public static PhonePlace queryMobileLocation(String tel) + { + Map params = new HashMap<>();//组合参数 + params.put("phone", tel); + params.put("key", API_KEY); + String queryParams = urlencode(params); + PhonePlace phonePlace = new PhonePlace(); + + String response = doGet(API_URL, queryParams); + 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"); + + phonePlace.setProvince(result.getString("province")); + phonePlace.setCity(result.getString("city")); + phonePlace.setAreacode(result.getString("areacode")); + phonePlace.setZip(result.getString("zip")); + phonePlace.setCompany(result.getString("company")); + + System.out.printf("省份:%s%n", result.getString("province")); + System.out.printf("城市:%s%n", result.getString("city")); + System.out.printf("区号:%s%n", result.getString("areacode")); + System.out.printf("邮编:%s%n", result.getString("zip")); + System.out.printf("运营商:%s%n", result.getString("company")); + + } else { + System.out.println("调用接口失败:" + jsonObject.getString("reason")); + } + } catch (Exception e) { + e.printStackTrace(); + } + return phonePlace; + } + + /** + * get方式的http请求 + * + * @param httpUrl 请求地址 + * @return 返回结果 + */ + public static String doGet(String httpUrl, String queryParams) { + HttpURLConnection connection = null; + InputStream inputStream = null; + BufferedReader bufferedReader = null; + String result = null;// 返回结果字符串 + try { + // 创建远程url连接对象 + URL url = new URL(new StringBuffer(httpUrl).append("?").append(queryParams).toString()); + // 通过远程url连接对象打开一个连接,强转成httpURLConnection类 + connection = (HttpURLConnection) url.openConnection(); + // 设置连接方式:get + connection.setRequestMethod("GET"); + // 设置连接主机服务器的超时时间:15000毫秒 + connection.setConnectTimeout(5000); + // 设置读取远程返回的数据时间:60000毫秒 + connection.setReadTimeout(6000); + // 发送请求 + 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; + } + + /** + * 将map型转为请求参数型 + * + * @param data + * @return + */ + public static String urlencode(Map data) { + StringBuilder sb = new StringBuilder(); + for (Map.Entry i : data.entrySet()) { + try { + sb.append(i.getKey()).append("=").append(URLEncoder.encode(i.getValue() + "", "UTF-8")).append("&"); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } + String result = sb.toString(); + result = result.substring(0, result.lastIndexOf("&")); + return result; + } +} + diff --git a/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/PostcodeInquire.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/PostcodeInquire.java new file mode 100644 index 0000000..9518e09 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/PostcodeInquire.java @@ -0,0 +1,62 @@ +package com.muyu.cloud.mart.utils; + +import com.muyu.domain.Postcode; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.MalformedURLException; +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.utils + * @Project:cloud-mart + * @name:Postcode + * @Date:2024/8/24 20:50 + */ +public class PostcodeInquire { + + public static StringBuffer queryPostcode(Postcode postcode){ + String apiKey = "0cabcd31c150369d8afb2c8b7e41a2c0"; + String apiUrl = "http://v.juhe.cn/postcode/query"; + + HashMap map = new HashMap<>(); + map.put("key", apiKey); + map.put("postcode", postcode.getPostcode());//邮编,如:215001 + postcode.setPostcode(map.put("postcode", postcode.getPostcode())); + map.put("page", String.valueOf(postcode.getPage()));//页数,默认1 + map.put("pagesize", "");//每页返回,默认:20,最大不超过50 + map.put("dtype", "json");//返回数据的格式,xml或json,默认json + try { + 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); + return response; + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + 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-port-server/src/main/java/com/muyu/cloud/mart/utils/Weather.java b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/Weather.java new file mode 100644 index 0000000..4efd595 --- /dev/null +++ b/cloud-port-server/src/main/java/com/muyu/cloud/mart/utils/Weather.java @@ -0,0 +1,56 @@ +package com.muyu.cloud.mart.utils; + +import java.io.BufferedReader; +import java.io.IOException; +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.utils + * @Project:cloud-mart + * @name:Weather + * @Date:2024/8/24 18:51 + * 气象预警 + */ +public class Weather { + public static StringBuffer queryWeather() { + String apiKey = "80e78ee9adaded8b1f42ec9cbdf69ac9"; + String apiUrl = "https://apis.juhe.cn/fapig/alarm/citys"; + + HashMap map = new HashMap<>(); + map.put("key", apiKey); + try { + 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); + return response; + } catch (Exception e) { + throw new RuntimeException(e); + } + + } + 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-port-server/src/main/resources/banner.txt b/cloud-port-server/src/main/resources/banner.txt new file mode 100644 index 0000000..0dd5eee --- /dev/null +++ b/cloud-port-server/src/main/resources/banner.txt @@ -0,0 +1,2 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} diff --git a/cloud-port-server/src/main/resources/bootstrap.yml b/cloud-port-server/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..2c45c66 --- /dev/null +++ b/cloud-port-server/src/main/resources/bootstrap.yml @@ -0,0 +1,73 @@ +# Tomcat +server: + port: 10005 + +# nacos线上地址 +nacos: + addr: 47.116.184.54:8848 + user-name: nacos + password: nacos + namespace: cloud-2112 +# Spring +spring: + + application: + # 应用名称 + name: cloud-mart + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + config: + # 服务注册地址 + server-addr: ${nacos.addr} + # nacos用户名 + username: ${nacos.user-name} + # nacos密码 + password: ${nacos.password} + # 命名空间 + namespace: ${nacos.namespace} + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + # 系统共享配置 + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # 系统环境Config共享配置 + - application-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + + - application-xxl-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + # rabbit 配置文件 + - application-rabbit-config-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} +mybatis-plus: + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 配置 MyBatis 的日志输出实现类,这里是输出到控制台 + mapper-locations: classpath:/mapper/*.xml # MyBatis Mapper 文件的位置,这里假设是 XML 形式的 Mapper + global-config: + db-config: + id-type: auto # 主键生成策略,这里设置为自动增长 + logic-delete-value: 1 # 逻辑删除标记值,例如设置为 1 表示已删除 + logic-not-delete-value: 0 # 逻辑未删除标记值,例如设置为 0 表示未删除 + banner: false # 关闭控制台打印的 MyBatis-Plus Banne +#fdfs: +# so-timeout: 1500 # socket 连接时长 +# connect-timeout: 600 # 连接 tracker 服务器超时时长 +# # 这两个是你服务器的 IP 地址,注意 23000 端口也要打开,阿里云服务器记得配置安全组。tracker 要和 stroage 服务进行交流 +# tracker-list: 49.235.108.160:22122 +# web-server-url: 49.235.108.160:8888 +# pool: +# jmx-enabled: false +# # 生成缩略图 +# thumb-image: +# height: 500 +# width: 500 diff --git a/cloud-port-server/src/main/resources/logback/dev.xml b/cloud-port-server/src/main/resources/logback/dev.xml new file mode 100644 index 0000000..100deef --- /dev/null +++ b/cloud-port-server/src/main/resources/logback/dev.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + diff --git a/cloud-port-server/src/main/resources/logback/prod.xml b/cloud-port-server/src/main/resources/logback/prod.xml new file mode 100644 index 0000000..bcab75a --- /dev/null +++ b/cloud-port-server/src/main/resources/logback/prod.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-port-server/src/main/resources/logback/test.xml b/cloud-port-server/src/main/resources/logback/test.xml new file mode 100644 index 0000000..6ca2751 --- /dev/null +++ b/cloud-port-server/src/main/resources/logback/test.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + ${log.sky.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + + + ERROR + + ACCEPT + + DENY + + + + + + + + ${log.sky.pattern} + + + + + + + + + + + + + + + + + + + + diff --git a/cloud-port-server/src/main/resources/mapper/ConnectorMappers.xml b/cloud-port-server/src/main/resources/mapper/ConnectorMappers.xml new file mode 100644 index 0000000..9a70ad1 --- /dev/null +++ b/cloud-port-server/src/main/resources/mapper/ConnectorMappers.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cloud-port-server/src/main/resources/mapper/MarketMappers.xml b/cloud-port-server/src/main/resources/mapper/MarketMappers.xml new file mode 100644 index 0000000..09d560a --- /dev/null +++ b/cloud-port-server/src/main/resources/mapper/MarketMappers.xml @@ -0,0 +1,7 @@ + + + + +