Gogs 2 tahun lalu
induk
melakukan
e44cafa698

+ 0 - 12
huijie-center/src/main/java/com/ruoyi/api/constant/yz/ApiConstant.java

@@ -1,12 +0,0 @@
-package com.ruoyi.api.constant.yz;
-
-public class ApiConstant {
-    // 获取TOKEN
-    public static final String GET_TOKEN = "/app/application/getToken";
-    // 推送商品至中台
-    public static final String PUSH_PRODUCT = "/app/product/cloud/pushProduct";
-    // 更新商品至中台
-    public static final String UPDATE_CLOUD_PRODUCT = "/app/product/cloud/updateCloudProduct";
-    // 更新sku到中台
-    public static final String UPDATE_CLOUD_SKU = "/app/product/cloud/updateCloudSku";
-}

+ 45 - 0
huijie-center/src/main/java/com/ruoyi/api/constant/yz/ApiEnum.java

@@ -0,0 +1,45 @@
+package com.ruoyi.api.constant.yz;
+
+import org.springframework.http.HttpMethod;
+
+public enum ApiEnum {
+    // 获取TOKEN
+    GET_TOKEN(HttpMethod.POST, "/app/application/getToken"),
+    // 推送商品至中台
+    PUSH_PRODUCT(HttpMethod.POST, "/app/product/cloud/pushProduct"),
+    // 更新商品至中台
+    UPDATE_CLOUD_PRODUCT(HttpMethod.POST, "/app/product/cloud/updateCloudProduct"),
+    // 更新sku到中台
+    UPDATE_CLOUD_SKU(HttpMethod.POST, "/app/product/cloud/updateCloudSku"),
+    // 批量上下架商品
+    DISPLAY_PRODUCT_BY_IDS(HttpMethod.POST, "/app/product/cloud/displayProductByIds"),
+    // 通过id获取中台的商品详情
+    FIND_PRODUCT(HttpMethod.POST, "/app/product/cloud/findProduct"),
+    // 删除中台系统商品
+    DELETE_PRODUCT(HttpMethod.DELETE, "/app/product/cloud/deleteProduct"),
+    ;
+
+    private HttpMethod method;
+    private String url;
+
+    ApiEnum(HttpMethod method, String url) {
+        this.method = method;
+        this.url = url;
+    }
+
+    public HttpMethod getMethod() {
+        return method;
+    }
+
+    public void setMethod(HttpMethod method) {
+        this.method = method;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+}

+ 21 - 1
huijie-center/src/main/java/com/ruoyi/api/fake/PushProductFake.java

@@ -2,10 +2,12 @@ package com.ruoyi.api.fake;
 
 import cn.hutool.json.JSONArray;
 import cn.hutool.json.JSONUtil;
+import com.ruoyi.api.pojo.bo.ProductByIdsBO;
 import com.ruoyi.api.pojo.bo.ProductsBO;
 import com.ruoyi.api.pojo.bo.ProductsSkusBO;
 import com.ruoyi.common.utils.uuid.IdUtils;
 
+import java.lang.reflect.Array;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -15,6 +17,7 @@ public class PushProductFake {
 
     /**
      * 推送商品Fake数据
+     *
      * @return
      */
     public static ProductsBO pushProduct() {
@@ -84,6 +87,7 @@ public class PushProductFake {
 
     /**
      * 更新商品Fake数据
+     *
      * @return
      */
     public static ProductsBO updateCloudProduct() {
@@ -94,7 +98,7 @@ public class PushProductFake {
         List<ProductsBO.ProductsAttrsBO> attrList = new ArrayList<>();
         String jsonStr = "[{\"name\":\"颜色\", \"value\":\"粉\"},{\"name\":\"颜色\", \"value\":\"紫色\"}]";
         JSONArray jsonArray = JSONUtil.parseArray(jsonStr);
-        for (Object o: jsonArray) {
+        for (Object o : jsonArray) {
             ProductsBO.ProductsAttrsBO productsAttrsBO = productsBO.new ProductsAttrsBO();
             Map<String, String> map = (Map<String, String>) o;
             productsAttrsBO.setName(map.get("name"));
@@ -107,6 +111,7 @@ public class PushProductFake {
 
     /**
      * 更新sku到中台Fake数据
+     *
      * @return
      */
     public static ProductsSkusBO updateCloudSku() {
@@ -126,4 +131,19 @@ public class PushProductFake {
         productsSkusBO.setDescribe("sku描述");
         return productsSkusBO;
     }
+
+    /**
+     * 批量上下架商品
+     *
+     * @return
+     */
+        public static ProductByIdsBO displayProductByIds() {
+        ProductByIdsBO productByIdsBO = new ProductByIdsBO();
+        productByIdsBO.setValue(1);
+        List<Integer> ids = new ArrayList<>();
+        ids.add(397);
+        ids.add(398);
+        productByIdsBO.setIds(ids);
+        return productByIdsBO;
+    }
 }

+ 22 - 0
huijie-center/src/main/java/com/ruoyi/api/pojo/bo/ProductByIdsBO.java

@@ -0,0 +1,22 @@
+package com.ruoyi.api.pojo.bo;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class ProductByIdsBO {
+    /**
+     * 0下架1上架
+     */
+    private int value;
+
+    /**
+     *  商品ID
+     */
+    private List<Integer> ids;
+}

+ 15 - 0
huijie-center/src/main/java/com/ruoyi/api/service/IProductService.java

@@ -24,4 +24,19 @@ public interface IProductService {
      * 更新sku到中台
      */
     YzResult updateCloudSku() throws JsonProcessingException;
+
+    /**
+     * 批量上下架商品
+     */
+    YzResult displayProductByIds() throws JsonProcessingException;
+
+    /**
+     * 通过id获取中台的商品详情
+     */
+    YzResult findProduct() throws JsonProcessingException;
+
+    /**
+     * 删除中台系统商品
+     */
+    YzResult deleteProduct() throws JsonProcessingException;
 }

+ 29 - 25
huijie-center/src/main/java/com/ruoyi/api/service/impl/ProductServiceImpl.java

@@ -1,60 +1,64 @@
 package com.ruoyi.api.service.impl;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.ruoyi.api.constant.yz.ApiConstant;
+import com.ruoyi.api.constant.yz.ApiEnum;
 import com.ruoyi.api.downstream.YzResult;
 import com.ruoyi.api.fake.PushProductFake;
+import com.ruoyi.api.pojo.bo.ProductByIdsBO;
 import com.ruoyi.api.pojo.bo.ProductsBO;
 import com.ruoyi.api.pojo.bo.ProductsSkusBO;
 import com.ruoyi.api.service.IProductService;
-import com.ruoyi.api.utils.HttpUtils;
-import org.apache.poi.ss.formula.functions.T;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.http.ResponseEntity;
+import com.ruoyi.api.utils.YzResultProcessingUtil;
 import org.springframework.stereotype.Service;
 
+import java.util.HashMap;
+import java.util.Map;
+
 @Service
 public class ProductServiceImpl implements IProductService {
-    @Value("${downstream.url}")
-    private String url;
-
-    private final ObjectMapper objectMapper = new ObjectMapper();
 
     @Override
     public YzResult pushProduct() throws JsonProcessingException {
-        String realUrl = url + ApiConstant.PUSH_PRODUCT;
-
         // TODO:没有第三方供应链,伪造测试数据
         ProductsBO productsBO = PushProductFake.pushProduct();
-        return getYzResult(realUrl, productsBO);
+        return YzResultProcessingUtil.getYzResult(ApiEnum.PUSH_PRODUCT, productsBO);
     }
 
     @Override
     public YzResult updateCloudProduct() throws JsonProcessingException {
-        String realUrl = url + ApiConstant.UPDATE_CLOUD_PRODUCT;
-
         // TODO:没有第三方供应链,伪造测试数据
         ProductsBO productsBO = PushProductFake.updateCloudProduct();
-        return getYzResult(realUrl, productsBO);
+        return YzResultProcessingUtil.getYzResult(ApiEnum.UPDATE_CLOUD_PRODUCT, productsBO);
     }
 
     @Override
     public YzResult updateCloudSku() throws JsonProcessingException {
-        String realUrl = url + ApiConstant.UPDATE_CLOUD_SKU;
-
         // TODO:没有第三方供应链,伪造测试数据
         ProductsSkusBO productsSkusBO = PushProductFake.updateCloudSku();
-        return getYzResult(realUrl, productsSkusBO);
+        return YzResultProcessingUtil.getYzResult(ApiEnum.UPDATE_CLOUD_SKU, productsSkusBO);
     }
 
-    private YzResult getYzResult(String realUrl, Object bo) throws JsonProcessingException {
-        objectMapper.setPropertyNamingStrategy(com.fasterxml.jackson.databind.PropertyNamingStrategy.SNAKE_CASE);
+    @Override
+    public YzResult displayProductByIds() throws JsonProcessingException {
+        // TODO:没有第三方供应链,伪造测试数据
+        ProductByIdsBO productByIdsBO = PushProductFake.displayProductByIds();
+        return YzResultProcessingUtil.getYzResult(ApiEnum.DISPLAY_PRODUCT_BY_IDS, productByIdsBO);
+    }
 
-        String data = objectMapper.writeValueAsString(bo);
-        System.out.println("data: " + data);
+    @Override
+    public YzResult findProduct() throws JsonProcessingException {
+        // TODO:没有第三方供应链,伪造测试数据
+        Map<String, Integer> map = new HashMap<>();
+        map.put("id", 398);
+        return YzResultProcessingUtil.getYzResult(ApiEnum.FIND_PRODUCT, map);
+    }
 
-        ResponseEntity<String> responseEntity = HttpUtils.sendPostWithHeaders(realUrl, data);
-        return objectMapper.readValue(responseEntity.getBody(), YzResult.class);
+    @Override
+    public YzResult deleteProduct() throws JsonProcessingException {
+        // TODO:没有第三方供应链,伪造测试数据
+        Map<String, Integer> map = new HashMap<>();
+        map.put("id", 398);
+        return YzResultProcessingUtil.getYzResult(ApiEnum.DELETE_PRODUCT, map);
     }
+
 }

+ 3 - 8
huijie-center/src/main/java/com/ruoyi/api/service/impl/TokenServiceImpl.java

@@ -3,23 +3,21 @@ package com.ruoyi.api.service.impl;
 import com.alibaba.fastjson2.JSONObject;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.json.JsonMapper;
+import com.ruoyi.api.constant.yz.ApiEnum;
 import com.ruoyi.api.constant.yz.CacheConstant;
 import com.ruoyi.api.constant.yz.HttpConstant;
 import com.ruoyi.api.downstream.YzResult;
-import com.ruoyi.api.constant.yz.ApiConstant;
 import com.ruoyi.api.exception.BusinessException;
 import com.ruoyi.api.result.ResponseEnum;
 import com.ruoyi.api.service.ITokenService;
 import com.ruoyi.api.utils.RedisUtil;
-import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.api.utils.YzResultProcessingUtil;
 import com.ruoyi.common.utils.http.HttpUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.ObjectUtils;
 
-import javax.annotation.Resource;
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
@@ -37,8 +35,6 @@ public class TokenServiceImpl implements ITokenService {
     @Autowired
     private RedisUtil redisUtil;
 
-    private ObjectMapper objectWrapper = new ObjectMapper();
-
     @Override
     public String getToken() throws JsonProcessingException {
         String cacheKey = CacheConstant.DOWNSTREAM_CACHE_KEY;
@@ -49,8 +45,7 @@ public class TokenServiceImpl implements ITokenService {
             jsonObject.put("app_secret", appSecret);
 
             String data = jsonObject.toString();
-            String s = HttpUtils.sendPost(url + ApiConstant.GET_TOKEN, data);
-            YzResult yzResult = objectWrapper.readValue(s, YzResult.class);
+            YzResult yzResult = YzResultProcessingUtil.getYzResult(ApiEnum.GET_TOKEN, data);
 
             // 检验是否为空
             if (ObjectUtils.isEmpty(yzResult)) {

+ 18 - 3
huijie-center/src/main/java/com/ruoyi/api/utils/HttpUtils.java → huijie-center/src/main/java/com/ruoyi/api/utils/HttpUtil.java

@@ -6,6 +6,7 @@ import com.ruoyi.api.service.ITokenService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
 import org.springframework.web.client.RestTemplate;
@@ -14,18 +15,18 @@ import org.springframework.web.client.RestTemplate;
  * Http工具包
  */
 @Component
-public final class HttpUtils {
+public final class HttpUtil {
     private static RestTemplate restTemplate;
     private static ITokenService tokenService;
 
     @Autowired
     public void setRestTemplate(RestTemplate restTemplate) {
-        HttpUtils.restTemplate = restTemplate;
+        HttpUtil.restTemplate = restTemplate;
     }
 
     @Autowired
     public void setTokenService(ITokenService tokenService) {
-        HttpUtils.tokenService = tokenService;
+        HttpUtil.tokenService = tokenService;
     }
 
     /**
@@ -42,6 +43,20 @@ public final class HttpUtils {
         return restTemplate.postForEntity(url, httpEntity, String.class);
     }
 
+    /**
+     * 发送delete请求:带请求头
+     *
+     * @param data
+     * @param url
+     * @return
+     */
+    public static ResponseEntity<String> sendDeleteWithHeaders(String url, String data) {
+        HttpHeaders headers = getDefaultHeaders();
+        JSONObject jsonObject = JSONObject.parseObject(data);
+        HttpEntity<JSONObject> httpEntity = new HttpEntity<>(jsonObject, headers);
+        return restTemplate.exchange(url, HttpMethod.DELETE, httpEntity, String.class);
+    }
+
     /**
      * 获取默认请求头
      *

+ 45 - 0
huijie-center/src/main/java/com/ruoyi/api/utils/YzResultProcessingUtil.java

@@ -0,0 +1,45 @@
+package com.ruoyi.api.utils;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.api.constant.yz.ApiEnum;
+import com.ruoyi.api.downstream.YzResult;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Component;
+
+import java.util.Objects;
+
+@Component
+public class YzResultProcessingUtil {
+    @Value("${downstream.url}")
+    private static String url;
+
+    private static ObjectMapper objectMapper = new ObjectMapper();
+
+    public static YzResult getYzResult(ApiEnum apiEnum, Object bo) throws JsonProcessingException {
+        objectMapper.setPropertyNamingStrategy(com.fasterxml.jackson.databind.PropertyNamingStrategy.SNAKE_CASE);
+
+        String data = objectMapper.writeValueAsString(bo);
+        System.out.println("data: " + data);
+
+        String realUrl = url + apiEnum.getUrl();
+        String method = apiEnum.getMethod().toString();
+        ResponseEntity<String> responseEntity = null;
+
+        switch (method) {
+            case "GET":
+
+                break;
+            case "POST":
+                responseEntity = HttpUtil.sendPostWithHeaders(realUrl, data);
+                break;
+            case "DELETE":
+                responseEntity = HttpUtil.sendDeleteWithHeaders(realUrl, data);
+                break;
+        }
+
+        assert responseEntity != null;
+        return objectMapper.readValue(Objects.requireNonNull(responseEntity.getBody()), YzResult.class);
+    }
+}

+ 18 - 0
ruoyi-admin/src/test/java/com/ruoyi/api/ProductsTests.java

@@ -33,4 +33,22 @@ public class ProductsTests {
         YzResult yzResult = productService.updateCloudSku();
         System.out.println(yzResult);
     }
+
+    @Test
+    public void testDisplayProductByIds() throws JsonProcessingException {
+        YzResult yzResult = productService.displayProductByIds();
+        System.out.println(yzResult);
+    }
+
+    @Test
+    public void testFindProduct() throws JsonProcessingException {
+        YzResult yzResult = productService.findProduct();
+        System.out.println(yzResult);
+    }
+
+    @Test
+    public void testDeleteProduct() throws JsonProcessingException {
+        YzResult yzResult = productService.deleteProduct();
+        System.out.println(yzResult);
+    }
 }