提交 9d17852f authored 作者: zgy's avatar zgy

完成shopify商品分页

上级 830bc294
...@@ -45,19 +45,20 @@ public class ShopifyController { ...@@ -45,19 +45,20 @@ public class ShopifyController {
/** /**
* 查询分类商品 * 查询分类商品
* *
* @param product_type 商品分类 * @param product_type
* @param product_id 商品ID * @param page_info
* @return * @return
*/ */
@ApiOperation(value = "查询分类商品") @ApiOperation(value = "查询分类商品")
@GetMapping("/queryproductsbytype") @GetMapping("/queryproductsbytype")
public Result queryProductsByType(@ApiParam("商品分类") @RequestParam("product_type") String product_type, public Result queryProductsByType(@ApiParam("商品分类") @RequestParam(value = "product_type", required = false) String product_type,
@ApiParam("商品ID") @RequestParam(value = "product_id", required = false) String product_id @ApiParam("商品ID") @RequestParam(value = "page_info", required = false) String page_info
) { ) {
return shopifyService.queryProductsByType(product_type, product_id); return shopifyService.queryProductsByType(product_type, page_info);
} }
/** /**
* 查看商品详情 * 查看商品详情
* *
......
package com.diaoyun.zion.chinafrica.entity;
import java.util.List;
/**
* @Auther: wudepeng
* @Date: 2019/12/03
* @Description:
*/
public class ProductPageInfo {
private String next;
private String previous;
private List productInfo;
public String getNext() {
return next;
}
public void setNext(String next) {
this.next = next;
}
public String getPrevious() {
return previous;
}
public void setPrevious(String previous) {
this.previous = previous;
}
public List getProductInfo() {
return productInfo;
}
public void setProductInfo(List productInfo) {
this.productInfo = productInfo;
}
}
...@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam; ...@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestParam;
public interface ShopifyService { public interface ShopifyService {
Result queryShopifyProducts(); Result queryShopifyProducts();
Result queryProductsByType(String product_type, String product_id); Result queryProductsByType(String product_type, String page_info);
Result queryProductsDetails(String product_id); Result queryProductsDetails(String product_id);
......
package com.diaoyun.zion.chinafrica.service.impl; package com.diaoyun.zion.chinafrica.service.impl;
import com.alibaba.fastjson.JSON;
import com.diaoyun.zion.chinafrica.constant.KeyConstant; import com.diaoyun.zion.chinafrica.constant.KeyConstant;
import com.diaoyun.zion.chinafrica.entity.ProductPageInfo;
import com.diaoyun.zion.chinafrica.service.ShopifyService; import com.diaoyun.zion.chinafrica.service.ShopifyService;
import com.diaoyun.zion.chinafrica.vo.ShopifyConstant; import com.diaoyun.zion.chinafrica.vo.ShopifyConstant;
import com.diaoyun.zion.master.base.Result; import com.diaoyun.zion.master.base.Result;
...@@ -9,8 +9,12 @@ import com.diaoyun.zion.master.common.RedisCache; ...@@ -9,8 +9,12 @@ import com.diaoyun.zion.master.common.RedisCache;
import com.diaoyun.zion.master.enums.ResultCodeEnum; import com.diaoyun.zion.master.enums.ResultCodeEnum;
import com.diaoyun.zion.master.util.HttpClientUtil; import com.diaoyun.zion.master.util.HttpClientUtil;
import com.diaoyun.zion.master.util.ListUtil; import com.diaoyun.zion.master.util.ListUtil;
import com.github.pagehelper.PageInfo;
import com.google.gson.JsonObject;
import net.sf.json.JSON;
import net.sf.json.JSONArray; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -81,16 +85,39 @@ public class ShopifyServiceImpl implements ShopifyService { ...@@ -81,16 +85,39 @@ public class ShopifyServiceImpl implements ShopifyService {
* @return * @return
*/ */
@Override @Override
public Result queryProductsByType(String product_type, String product_id) { public Result queryProductsByType(String product_type, String page_info) {
Result result = new Result(); Result result = new Result();
String url = ShopifyConstant.productTypeUrl() + "?limit=" + ShopifyConstant.SHOPIFY_PAGE_SIZE;
Map<String, Object> params = new HashMap<>(); Map<String, Object> params = new HashMap<>();
params.put("product_type", product_type); if (StringUtils.isNotBlank(product_type)) {
params.put("product_type", product_type);
url = url + "&product_type=" + product_type;
}
params.put("limit", ShopifyConstant.SHOPIFY_PAGE_SIZE); params.put("limit", ShopifyConstant.SHOPIFY_PAGE_SIZE);
try { try {
if (StringUtils.isNotBlank(page_info)) {
params.remove("product_type");
params.put("page_info", page_info);
url = url.substring(0, url.lastIndexOf("&")) + "&page_info=" + page_info;
}
List<String> headers = HttpClientUtil.getHeaders(url);
ProductPageInfo pageInfo = new ProductPageInfo();
String flag = headers.get(headers.size() - 1);
if ("first".equals(flag)) {
pageInfo.setNext(headers.get(0));
} else if ("middle".equals(flag)) {
pageInfo.setPrevious(headers.get(0));
pageInfo.setNext(headers.get(1));
} else {
pageInfo.setPrevious(headers.get(0));
}
String data = HttpClientUtil.createConnection(ShopifyConstant.productTypeUrl(), params, "UTF-8"); String data = HttpClientUtil.createConnection(ShopifyConstant.productTypeUrl(), params, "UTF-8");
JSONObject jsonObject = JSONObject.fromObject(data); List<String> list = new ArrayList<>();
result.setData(jsonObject); list.add(data);
} catch (IOException e) { pageInfo.setProductInfo(list);
JSONObject jsonObject = JSONObject.fromObject(pageInfo);
result.setData(jsonObject).setMessage(ResultCodeEnum.SUCCESS.getDesc());
} catch (Exception e) {
result.setCode(ResultCodeEnum.QUERY_ERROR.getCode()).setMessage(e.getMessage()); result.setCode(ResultCodeEnum.QUERY_ERROR.getCode()).setMessage(e.getMessage());
logger.error(e.getMessage(), e); logger.error(e.getMessage(), e);
return result; return result;
......
...@@ -2,6 +2,7 @@ package com.diaoyun.zion.master.util; ...@@ -2,6 +2,7 @@ package com.diaoyun.zion.master.util;
import com.diaoyun.zion.chinafrica.enums.PlatformEnum; import com.diaoyun.zion.chinafrica.enums.PlatformEnum;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.mashape.unirest.http.Unirest;
import org.apache.http.*; import org.apache.http.*;
import org.apache.http.client.CookieStore; import org.apache.http.client.CookieStore;
import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpGet;
...@@ -306,4 +307,39 @@ public class HttpClientUtil { ...@@ -306,4 +307,39 @@ public class HttpClientUtil {
Header header = sibResult.getContentEncoding(); Header header = sibResult.getContentEncoding();
return EntityUtils.toString(sibResult) + "#" + header; return EntityUtils.toString(sibResult) + "#" + header;
} }
/**
* 获取shopify接口 headers里的参数【Link】
*
* @param url
* @return
* @throws Exception
*/
public static List<String> getHeaders(String url) throws Exception {
List<String> list = new ArrayList();
com.mashape.unirest.http.HttpResponse<String> response = Unirest.get(url)
.headers(new HashMap<>())
.asString();
List<String> link = response.getHeaders().get("Link");
String linkString = link.toString();
boolean next = linkString.contains("next");
boolean previous = linkString.contains("previous");
String str = link.get(0);
String[] split = str.split(",");
for (int i = 0; i < split.length; i++) {
String s = split[i];
String sub = s.substring(s.indexOf("page_info="), s.lastIndexOf(">;"));
String substring = sub.substring(10);
list.add(substring);
}
if (next) {
list.add("first");
if (previous) {
list.add("middle");
}
} else {
list.add("last");
}
return list;
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论