From f7fbeebafb47798155a008b01e872f062ff729c8 Mon Sep 17 00:00:00 2001
From: yuanye <418471657@qq.com>
Date: Fri, 20 Sep 2024 17:11:53 +0800
Subject: [PATCH] 1
---
cweb/pom.xml | 7 ++
.../com/hfkj/controller/GoodsController.java | 25 ++++--
.../java/com/hfkj/model/GoodsInfoModel.java | 5 ++
.../main/java/com/hfkj/model/GoodsModel.java | 6 ++
.../hfkj/model/PricePromotionInfoModel.java | 4 +
.../hfkj/service/goods/GoodsDataService.java | 8 ++
.../goods/impl/GoodsDataServiceImpl.java | 88 ++++++++++++++-----
.../java/com/hfkj/service/pdd/PddService.java | 32 +++++++
8 files changed, 146 insertions(+), 29 deletions(-)
diff --git a/cweb/pom.xml b/cweb/pom.xml
index 69db753..882d490 100644
--- a/cweb/pom.xml
+++ b/cweb/pom.xml
@@ -40,6 +40,13 @@
src/main/resources/${env}
false
+
+ ${basedir}/lib
+ BOOT-INF/lib/
+
+ **/*.jar
+
+
diff --git a/cweb/src/main/java/com/hfkj/controller/GoodsController.java b/cweb/src/main/java/com/hfkj/controller/GoodsController.java
index 6244512..42c1c21 100644
--- a/cweb/src/main/java/com/hfkj/controller/GoodsController.java
+++ b/cweb/src/main/java/com/hfkj/controller/GoodsController.java
@@ -43,7 +43,7 @@ public class GoodsController {
) {
try {
- List goodsList = new ArrayList<>();
+ List goodsList;
// 1:淘宝 2:拼多多
if (type == 1) {
@@ -55,11 +55,24 @@ public class GoodsController {
goodsList = goodsDataService.goodsModelTaoBaoList(jsonObject);
} else if (type == 2) {
- if (pageSize < 10) {
- throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR , "pageSize的取值范围是10-100!");
+ JSONObject object = PddService.authority();
+ boolean generateAuthorityUrl = object.getJSONObject("authorityQueryResponse").getInteger("bind") == 0;
+ if (!generateAuthorityUrl && title != null) {
+ goodsList = new ArrayList<>();
+ JSONObject jsonObject = PddService.promotion();
+ JSONObject promotion = jsonObject.getJSONObject("rpPromotionUrlGenerateResponse").getJSONArray("urlList").getJSONObject(0);
+ GoodsModel goodsModel = new GoodsModel();
+ goodsModel.setPddUrl(promotion);
+ goodsList.add(goodsModel);
+
+ } else {
+ if (pageSize < 10) {
+ throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR , "pageSize的取值范围是10-100!");
+ }
+ JSONObject jsonObject = PddService.syncInvoke(title , pageNo , pageSize);
+ goodsList = goodsDataService.goodsModelPddList(jsonObject);
}
- JSONObject jsonObject = PddService.syncInvoke(title , pageNo , pageSize);
- return ResponseMsgUtil.success(jsonObject);
+
} else {
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR , "未知类型!");
}
@@ -105,7 +118,7 @@ public class GoodsController {
boolean generateAuthorityUrl = object.getJSONObject("authorityQueryResponse").getInteger("bind") == 0;
JSONObject jsonObject = PddService.promotion(searchId , goodsSign , generateAuthorityUrl);
- return ResponseMsgUtil.success(jsonObject);
+ return ResponseMsgUtil.success(jsonObject.getJSONObject("goodsPromotionUrlGenerateResponse").getJSONArray("goodsPromotionUrlList").getJSONObject(0));
} catch (Exception e) {
log.error("error!",e);
diff --git a/service/src/main/java/com/hfkj/model/GoodsInfoModel.java b/service/src/main/java/com/hfkj/model/GoodsInfoModel.java
index 74065f9..e654e97 100644
--- a/service/src/main/java/com/hfkj/model/GoodsInfoModel.java
+++ b/service/src/main/java/com/hfkj/model/GoodsInfoModel.java
@@ -36,4 +36,9 @@ public class GoodsInfoModel {
* 元宝数量
*/
BigDecimal ingot;
+
+ /**
+ * 库存
+ */
+ String annualVol;
}
diff --git a/service/src/main/java/com/hfkj/model/GoodsModel.java b/service/src/main/java/com/hfkj/model/GoodsModel.java
index 177e4be..e941d72 100644
--- a/service/src/main/java/com/hfkj/model/GoodsModel.java
+++ b/service/src/main/java/com/hfkj/model/GoodsModel.java
@@ -1,5 +1,6 @@
package com.hfkj.model;
+import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@@ -18,4 +19,9 @@ public class GoodsModel {
*/
GoodsInfoModel goodsInfo;
+ /**
+ * 拼多多授权地址
+ */
+ JSONObject pddUrl;
+
}
diff --git a/service/src/main/java/com/hfkj/model/PricePromotionInfoModel.java b/service/src/main/java/com/hfkj/model/PricePromotionInfoModel.java
index 28537a4..5de08b0 100644
--- a/service/src/main/java/com/hfkj/model/PricePromotionInfoModel.java
+++ b/service/src/main/java/com/hfkj/model/PricePromotionInfoModel.java
@@ -18,6 +18,10 @@ public class PricePromotionInfoModel {
* 预估到手价(元)。若属于预售商品,付定金时间内,预估到手价价=定金+尾款的预估到手价
*/
BigDecimal finalPromotionPrice;
+ /**
+ * 优惠券金额
+ */
+ BigDecimal couponPrice;
/**
* 销售价格,无促销时等于一口价,有促销时为促销价。若属于预售商品,付定金时间内,在线售卖价=预售价
*/
diff --git a/service/src/main/java/com/hfkj/service/goods/GoodsDataService.java b/service/src/main/java/com/hfkj/service/goods/GoodsDataService.java
index 0ff8305..328e18e 100644
--- a/service/src/main/java/com/hfkj/service/goods/GoodsDataService.java
+++ b/service/src/main/java/com/hfkj/service/goods/GoodsDataService.java
@@ -23,5 +23,13 @@ public interface GoodsDataService {
*/
List goodsModelTaoBaoList(JSONObject jsonObject);
+ /**
+ * @MethodName goodsModelPddList
+ * @Description: 拼多多数据整理
+ * @param jsonObject
+ * @return: java.util.List
+ * @Author: Sum1Dream
+ * @Date: 2024/9/20 下午2:21
+ */
List goodsModelPddList(JSONObject jsonObject);
}
diff --git a/service/src/main/java/com/hfkj/service/goods/impl/GoodsDataServiceImpl.java b/service/src/main/java/com/hfkj/service/goods/impl/GoodsDataServiceImpl.java
index 0f3b0bf..d240fba 100644
--- a/service/src/main/java/com/hfkj/service/goods/impl/GoodsDataServiceImpl.java
+++ b/service/src/main/java/com/hfkj/service/goods/impl/GoodsDataServiceImpl.java
@@ -10,9 +10,12 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
+import java.util.stream.Collectors;
@Service("goodsDataService")
public class GoodsDataServiceImpl implements GoodsDataService {
@@ -38,7 +41,7 @@ public class GoodsDataServiceImpl implements GoodsDataService {
MorePromotionModel morePromotionModel;
List morePromotionModels;
// 获取元宝的汇率
- SecDictionary dictionary = secDictionaryService.findDictionary("GRADE_EXCHANGE_RATE");
+ SecDictionary dictionary = secDictionaryService.findDictionary("GOLD_COIN_EXCHANGE_RATE");
JSONArray data = jsonObject.getJSONArray("result_list");
@@ -49,7 +52,6 @@ public class GoodsDataServiceImpl implements GoodsDataService {
JSONObject price_promotion_info = object.getJSONObject("price_promotion_info");
JSONObject item_basic_info = object.getJSONObject("item_basic_info");
JSONObject income_info = publish_info.getJSONObject("income_info");
- JSONArray more_promotion_list = price_promotion_info.getJSONArray("more_promotion_list");
JSONArray final_promotion_path_list = price_promotion_info.getJSONArray("final_promotion_path_list");
// 淘客推广信息
@@ -66,15 +68,25 @@ public class GoodsDataServiceImpl implements GoodsDataService {
publishInfoModel.setIncomeInfo(incomeInfoModel);
// 插入淘客推广信息
goodsModel.setPublishInfo(publishInfoModel);
+ String small_images;
// 商品基础信息
goodsInfoModel = new GoodsInfoModel();
goodsInfoModel.setIngot(incomeInfoModel.getCommissionAmount().multiply(new BigDecimal(dictionary.getCodeValue())));
goodsInfoModel.setProvCity(item_basic_info.getString("prov_city"));
goodsInfoModel.setTitle(item_basic_info.getString("title"));
+ goodsInfoModel.setAnnualVol(item_basic_info.getString("annual_vol"));
goodsInfoModel.setPictUrl(item_basic_info.getString("pict_url"));
goodsInfoModel.setShortTitle(item_basic_info.getString("short_title"));
- String small_images = item_basic_info.getJSONArray("small_images").toString();
- goodsInfoModel.setSmallImages(JSONObject.parseArray(small_images,String.class));
+ if (item_basic_info.getJSONArray("small_images") == null) {
+ List arrayList = new ArrayList<>();
+ arrayList.add(item_basic_info.getString("pict_url"));
+ goodsInfoModel.setSmallImages(arrayList);
+ } else {
+ small_images = item_basic_info.getJSONArray("small_images").toString();
+ goodsInfoModel.setSmallImages(JSONObject.parseArray(small_images,String.class));
+ }
+
+
goodsInfoModel.setShopTitle(item_basic_info.getString("shop_title"));
// 插入商品基础信息
goodsModel.setGoodsInfo(goodsInfoModel);
@@ -83,20 +95,10 @@ public class GoodsDataServiceImpl implements GoodsDataService {
pricePromotionInfoModel.setReservePrice(price_promotion_info.getBigDecimal("reserve_price"));
pricePromotionInfoModel.setZkFinalPrice(price_promotion_info.getBigDecimal("zk_final_price"));
pricePromotionInfoModel.setFinalPromotionPrice(price_promotion_info.getBigDecimal("final_promotion_price"));
+ pricePromotionInfoModel.setCouponPrice(pricePromotionInfoModel.getZkFinalPrice().subtract(pricePromotionInfoModel.getFinalPromotionPrice()));
// 更多活动优惠
morePromotionModels = new ArrayList<>();
- if (more_promotion_list != null && !more_promotion_list.isEmpty()) {
- for (Object more_promotion : more_promotion_list) {
- JSONObject morePromotion = (JSONObject) more_promotion;
- morePromotionModel = new MorePromotionModel();
- morePromotionModel.setPromotionDesc(morePromotion.getString("promotion_desc"));
- morePromotionModel.setPromotionTitle(morePromotion.getString("promotion_title"));
- morePromotionModel.setPromotionStartTime(morePromotion.getString("promotion_start_time"));
- morePromotionModel.setPromotionEndTime(morePromotion.getString("promotion_end_time"));
- morePromotionModel.setPromotionId(morePromotion.getString("promotion_id"));
- morePromotionModels.add(morePromotionModel);
- }
- }
+
if (final_promotion_path_list != null && !final_promotion_path_list.isEmpty()) {
for (Object final_promotion : final_promotion_path_list) {
JSONObject morePromotion = (JSONObject) final_promotion;
@@ -111,10 +113,15 @@ public class GoodsDataServiceImpl implements GoodsDataService {
}
}
+
+ morePromotionModels = morePromotionModels.stream().sorted(Comparator.comparing(MorePromotionModel:: getPromotionFee).reversed()).collect(Collectors.toList());
// 插入更多活动优惠
pricePromotionInfoModel.setMorePromotionList(morePromotionModels);
goodsModel.setPricePromotionInfo(pricePromotionInfoModel);
- goodsModelList.add(goodsModel);
+ if (!morePromotionModels.isEmpty()) {
+ goodsModelList.add(goodsModel);
+ }
+
}
return goodsModelList;
@@ -131,25 +138,60 @@ public class GoodsDataServiceImpl implements GoodsDataService {
PricePromotionInfoModel pricePromotionInfoModel;
// 基础信息
GoodsInfoModel goodsInfoModel;
- // 商品佣金信息
- IncomeInfoModel incomeInfoModel;
+
// 更多活动优惠
MorePromotionModel morePromotionModel;
List morePromotionModels;
+ // 获取元宝的汇率
+ SecDictionary dictionary = secDictionaryService.findDictionary("GOLD_COIN_EXCHANGE_RATE");
- JSONArray array = jsonObject.getJSONObject("goodsSearchResponse").getJSONArray("goodsSearchResponse");
+ JSONArray array = jsonObject.getJSONObject("goodsSearchResponse").getJSONArray("goodsList");
for (Object object : array) {
JSONObject goods = (JSONObject) object;
goodsModel = new GoodsModel();
+
+ // 商品基础信息
+ goodsInfoModel = new GoodsInfoModel();
+ goodsInfoModel.setTitle(goods.getString("goodsName"));
+ goodsInfoModel.setAnnualVol(goods.getString("salesTip"));
+ goodsInfoModel.setPictUrl(goods.getString("goodsImageUrl"));
+ goodsInfoModel.setShopTitle(goods.getString("mallName"));
+ goodsInfoModel.setIngot(
+ goods.getBigDecimal("minNormalPrice").
+ multiply(goods.getBigDecimal("promotionRate").
+ multiply(new BigDecimal(dictionary.getCodeValue()))).
+ divide(new BigDecimal(100*1000) , 6 , RoundingMode.DOWN)
+ );
+ // 插入商品基础信息
+ goodsModel.setGoodsInfo(goodsInfoModel);
// 淘客推广信息
- // 商品佣金信息
- incomeInfoModel = new IncomeInfoModel();
publishInfoModel = new PublishInfoModel();
+ publishInfoModel.setGoodsSign(goods.getString("goodsSign"));
+ publishInfoModel.setSearchId(goods.getString("searchId"));
+ // 插入淘客推广信息
+ goodsModel.setPublishInfo(publishInfoModel);
+ // 更多活动优惠
+ morePromotionModels = new ArrayList<>();
+ morePromotionModel = new MorePromotionModel();
+ morePromotionModel.setPromotionFee(goods.getBigDecimal("couponDiscount").divide(new BigDecimal(100) , 2 , RoundingMode.DOWN));
+ morePromotionModel.setPromotionStartTime(goods.getString("couponStartTime"));
+ morePromotionModel.setPromotionEndTime(goods.getString("couponEndTime"));
+ morePromotionModels.add(morePromotionModel);
+
+ // 价格促销信息
+ pricePromotionInfoModel = new PricePromotionInfoModel();
+ pricePromotionInfoModel.setReservePrice(goods.getBigDecimal("minNormalPrice").divide(new BigDecimal(100) , 2 , RoundingMode.DOWN));
+ pricePromotionInfoModel.setZkFinalPrice(goods.getBigDecimal("minGroupPrice").divide(new BigDecimal(100) , 2 , RoundingMode.DOWN));
+ pricePromotionInfoModel.setFinalPromotionPrice(pricePromotionInfoModel.getZkFinalPrice());
+ // 插入更多活动优惠
+ pricePromotionInfoModel.setMorePromotionList(morePromotionModels);
+ goodsModel.setPricePromotionInfo(pricePromotionInfoModel);
+ goodsModelList.add(goodsModel);
}
- return Collections.emptyList();
+ return goodsModelList;
}
}
diff --git a/service/src/main/java/com/hfkj/service/pdd/PddService.java b/service/src/main/java/com/hfkj/service/pdd/PddService.java
index 4a67a5a..0f76da5 100644
--- a/service/src/main/java/com/hfkj/service/pdd/PddService.java
+++ b/service/src/main/java/com/hfkj/service/pdd/PddService.java
@@ -8,10 +8,12 @@ import com.pdd.pop.sdk.http.PopHttpClient;
import com.pdd.pop.sdk.http.api.pop.request.PddDdkGoodsPromotionUrlGenerateRequest;
import com.pdd.pop.sdk.http.api.pop.request.PddDdkGoodsSearchRequest;
import com.pdd.pop.sdk.http.api.pop.request.PddDdkMemberAuthorityQueryRequest;
+import com.pdd.pop.sdk.http.api.pop.request.PddDdkRpPromUrlGenerateRequest;
import com.pdd.pop.sdk.http.api.pop.response.PddDdkGoodsPromotionUrlGenerateResponse;
import com.pdd.pop.sdk.http.api.pop.response.PddDdkGoodsSearchResponse;
import com.pdd.pop.sdk.http.api.pop.response.PddDdkMemberAuthorityQueryResponse;
+import com.pdd.pop.sdk.http.api.pop.response.PddDdkRpPromUrlGenerateResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -81,6 +83,36 @@ public class PddService {
}
+ /**
+ * @MethodName promotion
+ * @Description: 生成授权地址
+ * @param
+ * @return: com.alibaba.fastjson.JSONObject
+ * @Author: Sum1Dream
+ * @Date: 2024/9/20 下午3:57
+ */
+ public static JSONObject promotion() throws Exception {
+
+ log.info("============ 拼多多请求-START =============");
+ String clientId = "71a050c5d93d4169a237539af44c7c33";
+ String clientSecret = "b96def667dd28660d09f19ba2e9e9f23d810d563";
+ PopClient client = new PopHttpClient(clientId, clientSecret);
+
+ PddDdkRpPromUrlGenerateRequest request = new PddDdkRpPromUrlGenerateRequest();
+ List pIdList = new ArrayList<>();
+ pIdList.add("41483885_294044603");
+ request.setPIdList(pIdList);
+ request.setChannelType(10);
+ PddDdkRpPromUrlGenerateResponse response = client.syncInvoke(request);
+
+ log.info("请求接口:" + "promotion");
+ log.info("请求参数:" + JSONObject.toJSONString(request));
+ log.info("响应参数:" + JsonUtil.transferToJson(response));
+ log.info("============ 拼多多请求-END ==============");
+ return JSONObject.parseObject(JSON.toJSONString(response));
+
+ }
+
/**
* @MethodName authority
* @Description: 查询是否绑定备案