新增查询手机号归属地代码

master
WeiRan 2024-08-29 19:20:52 +08:00
parent c7b4cf0346
commit a0db3b1249
10 changed files with 731 additions and 9 deletions

View File

@ -11,6 +11,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
import java.util.Date;
/**
@ -73,7 +74,10 @@ public class Company {
*
*/
private Integer reviewStatus;
/**
*
*/
private BigDecimal companyMoney;
}

View File

@ -0,0 +1,131 @@
package com.muyu.cloud.background.domin;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.cloud.background.domin.req.ProductAddReq;
import com.muyu.cloud.background.domin.req.ProductUpdReq;
import com.muyu.common.core.web.domain.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.math.BigDecimal;
import java.util.Date;
import java.util.function.Supplier;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin
* @Projectcloud-market
* @nameProduct
* @Date2024/8/20 15:04
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
@TableName(value = "product",autoResultMap = true)
public class Product extends BaseEntity {
/**
*
*/
@TableId(value = "product_id",type = IdType.AUTO)
private Integer productId;
/**
*
*/
private String productName;
/**
*
*/
private BigDecimal productPrice;
/**
*
*/
private String productContent;
/**
* 0 1
*/
private Integer productState;
/**
*/
*/
private String productSpecification;
/**
*
*/
private Integer productSales;
/**
*
*/
private String productType;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "产品上架日期",defaultValue = "2024-8-9 10:47:57",type = "Date")
private Date productShelvesdate;
/**
*
*/
private String apiRouter;
/**
*
*/
private String apiAddress;
/**
*
*/
private String returnFormat;
/**
*
*/
private String requestMethod;
public static Product addProductList(ProductAddReq productAddReq){
return Product.builder()
.productId(null)
.productName(productAddReq.getProductName())
.productPrice(productAddReq.getProductPrice())
.productContent(productAddReq.getProductContent())
.productState(productAddReq.getProductState())
.productSpecification(productAddReq.getProductSpecification())
.productSales(productAddReq.getProductSales())
.productType(productAddReq.getProductType())
.productShelvesdate(productAddReq.getProductShelvesdate())
.apiAddress(productAddReq.getApiAddress())
.returnFormat(productAddReq.getReturnFormat())
.requestMethod(productAddReq.getRequestMethod())
.apiRouter(productAddReq.getApiRouter())
.build();
}
public static Product updProductList(ProductUpdReq productUpdReq, Supplier<Integer> idSupplier){
return Product.builder()
.productId(productUpdReq.getProductId())
.productName(productUpdReq.getProductName())
.productPrice(productUpdReq.getProductPrice())
.productContent(productUpdReq.getProductContent())
.productState(productUpdReq.getProductState())
.productSpecification(productUpdReq.getProductSpecification())
.productSales(productUpdReq.getProductSales())
.productType(productUpdReq.getProductType())
.productShelvesdate(productUpdReq.getProductShelvesdate())
.apiAddress(productUpdReq.getApiAddress())
.returnFormat(productUpdReq.getReturnFormat())
.requestMethod(productUpdReq.getRequestMethod())
.apiRouter(productUpdReq.getApiRouter())
.build();
}
}

View File

@ -0,0 +1,83 @@
package com.muyu.cloud.background.domin.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin.req
* @Projectcloud-market
* @nameProductAddReq
* @Date2024/8/22 0:55
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name = "添加产品接口请求对象",description = "进行产品接口的添加")
public class ProductAddReq {
/**
*
*/
private Integer productId;
/**
*
*/
private String productName;
/**
*
*/
private BigDecimal productPrice;
/**
*
*/
private String productContent;
/**
* 0 1
*/
private Integer productState;
/**
*/
*/
private String productSpecification;
/**
*
*/
private Integer productSales;
/**
*
*/
private String productType;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "产品上架日期",defaultValue = "2024-8-9 10:47:57",type = "Date")
private Date productShelvesdate;
/**
*
*/
private String apiAddress;
/**
*
*/
private String returnFormat;
/**
*
*/
private String requestMethod;
/**
*
*/
private String apiRouter;
}

View File

@ -0,0 +1,82 @@
package com.muyu.cloud.background.domin.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin.req
* @Projectcloud-market
* @nameProductListReq
* @Date2024/8/21 15:15
*/
@Tag(name = "接口产品列表请求对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ProductListReq {
/**
*
*/
@Schema(description = "产品ID",defaultValue = "1",type = "Integer")
private Integer id;
/**
*
*/
@Schema(description = "产品名称",defaultValue = "根据产品名称查询",type = "String")
private String productName;
/**
*
*/
@Schema(description = "产品类型",defaultValue = "金融科技",type = "String")
private String productType;
/**
*
*/
@Schema(description = "产品状态 同数据字典-系统是否",defaultValue = "1",type = "Integer")
private String productState;
/**
*
*/
private String apiRouter;
/**
*
*/
private String apiAddress;
/**
*
*/
private String returnFormat;
/**
*
*/
private String requestMethod;
/**
* 1
*/
private Integer pageNum=1;
/**
*
*/
private Integer pageSize=9;
@Schema(description = "创建人",defaultValue = "muyu",type = "String")
private String createBy;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@Schema(description = "创建时间",defaultValue = "2024-07-31 14:30:29",type = "Date")
private Date createTime;
}

View File

@ -0,0 +1,82 @@
package com.muyu.cloud.background.domin.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin.req
* @Projectcloud-market
* @nameProductUpdReq
* @Date2024/8/22 8:35
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name = "修改产品接口请求对象",description = "进行产品接口的修改")
public class ProductUpdReq {
/**
*
*/
private Integer productId;
/**
*
*/
private String productName;
/**
*
*/
private BigDecimal productPrice;
/**
*
*/
private String productContent;
/**
* 0 1
*/
private Integer productState;
/**
*/
*/
private String productSpecification;
/**
*
*/
private Integer productSales;
/**
*
*/
private String productType;
/**
*
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Schema(description = "产品上架日期",defaultValue = "2024-8-9 10:47:57",type = "Date")
private Date productShelvesdate;
/**
*
*/
private String apiAddress;
/**
*
*/
private String returnFormat;
/**
*
*/
private String requestMethod;
/**
*
*/
private String apiRouter;
}

View File

@ -0,0 +1,100 @@
package com.muyu.cloud.background.domin.resp;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.muyu.cloud.background.domin.Product;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin.resp
* @Projectcloud-market
* @nameProductListResp
* @Date2024/8/21 15:06
*/
@Data
@Builder
@AllArgsConstructor
@Tag(name="接口产品信息响应对象",description = "接口产品查询的响应结果")
public class ProductListResp {
/**
*
*/
private Integer productId;
/**
*
*/
private String productName;
/**
*
*/
private BigDecimal productPrice;
/**
*
*/
private String productContent;
/**
* 0 1
*/
private Integer productState;
/**
*
*/
private Integer productSales;
/**
*
*/
private String apiAddress;
/**
*
*/
private String returnFormat;
/**
*
*/
private String requestMethod;
/**
*
*/
private String apiRouter;
@Schema(description = "创建人",defaultValue = "muyu",type = "String")
private String createBy;
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss"
)
@Schema(description = "创建时间",defaultValue = "2024-07-31 14:30:29",type = "Date")
private Date createTime;
/**
*
* @param product
* @return
*/
public static ProductListResp productListRespbuild(Product product){
return ProductListResp.builder()
.productId(product.getProductId())
.productName(product.getProductName())
.productPrice(product.getProductPrice())
.productContent(product.getProductContent())
.productState(product.getProductState())
.productSales(product.getProductSales())
.apiAddress(product.getApiAddress())
.returnFormat(product.getReturnFormat())
.requestMethod(product.getRequestMethod())
.apiRouter(product.getApiRouter())
.createBy(product.getCreateBy())
.createTime(product.getCreateTime())
.build();
}
}

View File

@ -0,0 +1,35 @@
package com.muyu.cloud.background.domin.resp;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.market.domin.resp
* @Projectcloud-market
* @nameProductTotalListResp
* @Date2024/8/26 8:32
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name="数据总数列表",description = "数据和总数的响应")
public class ProductTotalListResp {
private List<ProductListResp> productListResps;
private long total;
public static ProductTotalListResp of(List<ProductListResp> productList, long total) {
ProductTotalListResp response = new ProductTotalListResp();
response.setProductListResps(productList);
response.setTotal(total);
return response;
}
}

View File

@ -19,7 +19,29 @@
</properties>
<dependencies>
<!-- api接口 需要用到的依赖 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk13</classifier>
</dependency>
<dependency>
<groupId>com.muyu</groupId>
@ -116,14 +138,7 @@
</execution>
</executions>
</plugin>
<!-- 加入maven deploy插件当在deploy时忽略些model-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>

View File

@ -0,0 +1,153 @@
package com.muyu.cloud.background.api;
import com.muyu.common.core.domain.Result;
import net.sf.json.JSONObject;
import org.springframework.context.annotation.Configuration;
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;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.background.api
* @Projectcloud-background
* @nameMobileLocation
* @Date2024/8/29 14:58
*/
@Configuration
public class MobileLocation {
// 手机归属地查询接口地址
public static String API_URL = "http://apis.juhe.cn/mobile/get";
// 接口请求Key
public static String API_KEY = "2b47a626a51e371b56c82a937271ed38";
public static void main(String[] args) {
String mobile = "18912341234";
queryMobileLocation(mobile);
}
/**
* /7
*
* @param mobile
* @return
*/
public static Result queryMobileLocation(String mobile)
{
Map<String, Object> params = new HashMap<>();//组合参数
params.put("phone", mobile);
params.put("key", API_KEY);
String queryParams = urlencode(params);
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");
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 null;
}
/**
* gethttp
*
* @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<String, ?> data) {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, ?> 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;
}
}

View File

@ -0,0 +1,37 @@
package com.muyu.cloud.background.controller;
import com.muyu.cloud.background.api.MobileLocation;
import com.muyu.common.core.domain.Result;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.log4j.Log4j2;
import org.springframework.validation.annotation.Validated;
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;
/**
* @Authorweiran
* @Packagecom.muyu.cloud.background.controller
* @Projectcloud-background
* @nameApiController
* @Date2024/8/29 15:18
*/
@Log4j2
@RestController
@RequestMapping("/api")
@Tag(name = "接口调用",description = "进行不同接口调用")
public class ApiController {
/**
*
* @param phone
* @return
*/
@GetMapping("/byphone/{phone}")
@Operation(summary = "手机号归属地",description = "查询手机号归属地")
public Result MobileLocation(@Validated @PathVariable String phone){
return MobileLocation.queryMobileLocation(phone);
}
}