gongfuzhu 9 hónapja
szülő
commit
27606e2166

+ 45 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/api/video/YqdServiceImpl.java

@@ -2,6 +2,8 @@ package com.zswl.cloud.springBtach.server.core.api.video;
 
 import cn.hutool.http.HttpStatus;
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.github.microservice.auth.client.content.ResultContent;
 import com.github.microservice.auth.client.content.ResultState;
 import com.github.microservice.core.util.net.apache.HttpClientUtil;
@@ -9,6 +11,8 @@ import com.github.microservice.core.util.net.apache.HttpModel;
 import com.github.microservice.core.util.net.apache.MethodType;
 import com.github.microservice.core.util.net.apache.ResponseModel;
 import com.zswl.cloud.shop.client.dto.yqd.OrderDto;
+import com.zswl.cloud.shop.client.ret.CommentException;
+import com.zswl.cloud.shop.client.vo.yqd.CatalogVo;
 import com.zswl.cloud.springBtach.server.core.dao.ApiLogDao;
 import com.zswl.cloud.springBtach.server.core.domain.ApiLog;
 import lombok.SneakyThrows;
@@ -21,6 +25,7 @@ import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
 
 @Service
@@ -35,6 +40,11 @@ public class YqdServiceImpl {
     private String account;
 
 
+    private static final String GET_CATALOG_LIST = "http://open.yiqida.cn/api/UserCommdity/GetCatalogList?timestamp=%s&userName=%s&sign=%s";
+
+    private static final String GET_COMMODITY_LIST = "http://open.yiqida.cn/api/UserCommdity/GetCommodityList?timestamp=%s&userName=%s&sign=%s";
+
+
     @Value("${yqd.createUrl}")
     private String createUrl;
 
@@ -44,6 +54,41 @@ public class YqdServiceImpl {
     @Autowired
     ApiLogDao apiLogDao;
 
+
+    /**
+     * 获取商品分组
+     *
+     * @return
+     */
+    @SneakyThrows
+    public List<CatalogVo> getCatalog() {
+        long timestamp = System.currentTimeMillis();
+        String url = String.format(GET_CATALOG_LIST, timestamp, account, getSign(timestamp, ""));
+        ResponseModel request = HttpClientUtil.request(HttpModel.builder().url(url).build());
+        JSONObject map = JSONObject.parseObject(JSONObject.toJSONString(request.getBody()));
+        if (HttpStatus.HTTP_OK == (int) map.get("code")) {
+            Object data = map.get("data");
+            List<CatalogVo> catalogVos = JSONArray.parseArray(JSON.toJSONString(data), CatalogVo.class);
+            log.info("GoodsController syncCatalog res:{}", JSON.toJSONString(catalogVos));
+            return catalogVos;
+        } else {
+            throw new CommentException(map.getString("msg"));
+        }
+    }
+
+
+    @SneakyThrows
+    public ResponseModel requestCommodityList(String page, String size, String id) {
+        long timestamp = System.currentTimeMillis();
+        Map<String, Object> body = new HashMap<>();
+        body.put("page", page);
+        body.put("size", size);
+        body.put("catalogId", id);
+        String url = String.format(GET_COMMODITY_LIST, timestamp, account, getSign(timestamp, JSON.toJSONString(body)));
+        return HttpClientUtil.request(HttpModel.builder().method(MethodType.Post).url(url).body(JSON.toJSONString(body)).build());
+    }
+
+
     @SneakyThrows
     public ResultContent create(OrderDto dto) {
         long timestamp = System.currentTimeMillis();

+ 91 - 0
SpringBatchServiceServer/src/main/java/com/zswl/cloud/springBtach/server/core/publish/YqdPublish.java

@@ -0,0 +1,91 @@
+package com.zswl.cloud.springBtach.server.core.publish;
+
+import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.github.microservice.core.util.net.apache.ResponseModel;
+import com.github.microservice.productcenter.client.model.ProductPushModel;
+import com.github.microservice.productcenter.client.model.ProductTriggerTaskModel;
+import com.github.microservice.productcenter.client.publish.ProductPublish;
+import com.github.microservice.productcenter.client.service.ProductPushService;
+import com.github.microservice.productcenter.client.stream.ProductCenterStream;
+import com.github.microservice.productcenter.client.type.ProductType;
+import com.github.microservice.productcenter.client.type.RegionType;
+import com.zswl.cloud.shop.client.vo.yqd.CatalogVo;
+import com.zswl.cloud.shop.client.vo.yqd.CommodityVo;
+import com.zswl.cloud.springBtach.server.core.api.video.YqdServiceImpl;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+@Slf4j
+@Component
+public class YqdPublish implements ProductPublish {
+
+    @Autowired
+    YqdServiceImpl yqdService;
+
+
+    @Autowired
+    private ProductCenterStream productCenterStream;
+
+    @Override
+    public String regionCode() {
+        return null;
+    }
+
+    @Override
+    public Collection<RegionType> regionType() {
+        return Set.of(RegionType.Other);
+    }
+
+    @Override
+    public Collection<ProductType> productTypes() {
+        return Set.of(
+                ProductType.Recharge
+        );
+    }
+
+
+    @Override
+    public void trigger(ProductPushService updateService, ProductTriggerTaskModel productTriggerTask) {
+
+        for (CatalogVo catalogVo : yqdService.getCatalog()) {
+            ResponseModel responseModel = yqdService.requestCommodityList("0", "100", catalogVo.getId());
+            JSONObject entries = JSONUtil.parseObj(responseModel.getBody());
+            JSONArray jsonArray = (JSONArray) entries.get("data");
+            if (!jsonArray.isEmpty()) {
+                List<CommodityVo> commodityVos = com.alibaba.fastjson.JSONArray.parseArray(JSON.toJSONString(jsonArray), CommodityVo.class);
+                commodityVos.forEach(it -> {
+                    BigDecimal price = it.getPrice();
+                    BigDecimal rate = price.multiply(new BigDecimal("0.06"));
+                    BigDecimal withdraw = price.add(rate).multiply(new BigDecimal("0.0028"));
+                    price = price.add(rate).add(withdraw).setScale(2, RoundingMode.UP);
+
+                    productCenterStream.send(List.of(
+                            ProductPushModel.builder()
+//                                    .regionCode(productTriggerTask.getRegion().getCode())
+                                    .pid(it.getMainId().toString())
+                                    .productType(ProductType.Recharge)
+                                    .cover(new String[]{it.getMainImg()})
+                                    .title(it.getName())
+                                    .salePrice(price.multiply(BigDecimal.valueOf(100)).longValue())
+                                    .meta(Map.of("goods", it))
+                                    .build()));
+                });
+                System.out.println(commodityVos);
+            }
+
+        }
+
+
+    }
+}