From a0db3b1249b7db5afcaf90d5d44272f05d8f8737 Mon Sep 17 00:00:00 2001 From: WeiRan <2392355487@qq.com> Date: Thu, 29 Aug 2024 19:20:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E6=89=8B?= =?UTF-8?q?=E6=9C=BA=E5=8F=B7=E5=BD=92=E5=B1=9E=E5=9C=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../muyu/cloud/background/domin/Company.java | 6 +- .../muyu/cloud/background/domin/Product.java | 131 +++++++++++++++ .../background/domin/req/ProductAddReq.java | 83 ++++++++++ .../background/domin/req/ProductListReq.java | 82 ++++++++++ .../background/domin/req/ProductUpdReq.java | 82 ++++++++++ .../domin/resp/ProductListResp.java | 100 ++++++++++++ .../domin/resp/ProductTotalListResp.java | 35 ++++ cloud-background-server/pom.xml | 31 +++- .../cloud/background/api/MobileLocation.java | 153 ++++++++++++++++++ .../background/controller/ApiController.java | 37 +++++ 10 files changed, 731 insertions(+), 9 deletions(-) create mode 100644 cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Product.java create mode 100644 cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductAddReq.java create mode 100644 cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductListReq.java create mode 100644 cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductUpdReq.java create mode 100644 cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductListResp.java create mode 100644 cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductTotalListResp.java create mode 100644 cloud-background-server/src/main/java/com/muyu/cloud/background/api/MobileLocation.java create mode 100644 cloud-background-server/src/main/java/com/muyu/cloud/background/controller/ApiController.java diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Company.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Company.java index 8c91915..41c8ea9 100644 --- a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Company.java +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Company.java @@ -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; } diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Product.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Product.java new file mode 100644 index 0000000..1137551 --- /dev/null +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/Product.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.market.domin + * @Project:cloud-market + * @name:Product + * @Date:2024/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 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(); + } + + + +} diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductAddReq.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductAddReq.java new file mode 100644 index 0000000..92fc3a4 --- /dev/null +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductAddReq.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.market.domin.req + * @Project:cloud-market + * @name:ProductAddReq + * @Date:2024/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; +} diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductListReq.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductListReq.java new file mode 100644 index 0000000..de98f0b --- /dev/null +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductListReq.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.market.domin.req + * @Project:cloud-market + * @name:ProductListReq + * @Date:2024/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; + + +} diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductUpdReq.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductUpdReq.java new file mode 100644 index 0000000..2a11fef --- /dev/null +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/req/ProductUpdReq.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.market.domin.req + * @Project:cloud-market + * @name:ProductUpdReq + * @Date:2024/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; +} diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductListResp.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductListResp.java new file mode 100644 index 0000000..545ea2b --- /dev/null +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductListResp.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.market.domin.resp + * @Project:cloud-market + * @name:ProductListResp + * @Date:2024/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(); + } +} diff --git a/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductTotalListResp.java b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductTotalListResp.java new file mode 100644 index 0000000..82e3f47 --- /dev/null +++ b/cloud-background-common/src/main/java/com/muyu/cloud/background/domin/resp/ProductTotalListResp.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.market.domin.resp + * @Project:cloud-market + * @name:ProductTotalListResp + * @Date:2024/8/26 8:32 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +@Tag(name="数据总数列表",description = "数据和总数的响应") +public class ProductTotalListResp { + + private List productListResps; + + private long total; + + public static ProductTotalListResp of(List productList, long total) { + ProductTotalListResp response = new ProductTotalListResp(); + response.setProductListResps(productList); + response.setTotal(total); + return response; + } +} diff --git a/cloud-background-server/pom.xml b/cloud-background-server/pom.xml index 93494b3..40d7117 100644 --- a/cloud-background-server/pom.xml +++ b/cloud-background-server/pom.xml @@ -19,7 +19,29 @@ + + + commons-beanutils + commons-beanutils + 1.9.3 + + + commons-lang + commons-lang + 2.6 + + + commons-logging + commons-logging + 1.2 + + + net.sf.json-lib + json-lib + 2.4 + jdk13 + com.muyu @@ -116,14 +138,7 @@ - - - org.apache.maven.plugins - maven-deploy-plugin - - true - - + org.apache.maven.plugins maven-compiler-plugin diff --git a/cloud-background-server/src/main/java/com/muyu/cloud/background/api/MobileLocation.java b/cloud-background-server/src/main/java/com/muyu/cloud/background/api/MobileLocation.java new file mode 100644 index 0000000..b7c10ab --- /dev/null +++ b/cloud-background-server/src/main/java/com/muyu/cloud/background/api/MobileLocation.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.background.api + * @Project:cloud-background + * @name:MobileLocation + * @Date:2024/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 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; + } + + /** + * 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-background-server/src/main/java/com/muyu/cloud/background/controller/ApiController.java b/cloud-background-server/src/main/java/com/muyu/cloud/background/controller/ApiController.java new file mode 100644 index 0000000..663fc98 --- /dev/null +++ b/cloud-background-server/src/main/java/com/muyu/cloud/background/controller/ApiController.java @@ -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; + +/** + * @Author:weiran + * @Package:com.muyu.cloud.background.controller + * @Project:cloud-background + * @name:ApiController + * @Date:2024/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); + } +}