提交 43275007 authored 作者: 梁业锦's avatar 梁业锦 💬

- 代码完善

上级 e94a2d49
...@@ -10,6 +10,7 @@ import com.platform.utils.OssUtil; ...@@ -10,6 +10,7 @@ import com.platform.utils.OssUtil;
import com.platform.utils.R; import com.platform.utils.R;
import net.sf.json.JSONArray; import net.sf.json.JSONArray;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.apiguardian.api.API;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -25,6 +26,7 @@ import java.net.HttpURLConnection; ...@@ -25,6 +26,7 @@ import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* @author 爱酱油不爱醋 * @author 爱酱油不爱醋
...@@ -55,9 +57,19 @@ public class TestApi { ...@@ -55,9 +57,19 @@ public class TestApi {
@Autowired @Autowired
private TbCfDescripitonDao tbCfDescripitonDao; private TbCfDescripitonDao tbCfDescripitonDao;
/**
* 接口数据版本号
*/
private final String VERSION = "2020-01";
/**
* 接口路径
*/
private final String API_URL = "https://mollykitty.myshopify.com/admin/api/" + VERSION + "/products.json";
@Test @Test
public void host() { public void host() {
String link = "https://mollykitty.myshopify.com/admin/api/2019-10/products.json?limit=250&page_info=eyJwcm9kdWN0X3R5cGUiOiJXb21lbiIsImxhc3RfaWQiOjQ0OTc2Nzg5NTg2ODksImxhc3RfdmFsdWUiOiJDYXN1YWwgU2xpbSBTd2VhdGVycyIsImRpcmVjdGlvbiI6Im5leHQifQ"; String link = API_URL + "?limit=250&page_info=eyJwcm9kdWN0X3R5cGUiOiJXb21lbiIsImxhc3RfaWQiOjQ0OTc2Nzg5NTg2ODksImxhc3RfdmFsdWUiOiJDYXN1YWwgU2xpbSBTd2VhdGVycyIsImRpcmVjdGlvbiI6Im5leHQifQ";
Console.error(link); Console.error(link);
link = HttpRequest.get(link) link = HttpRequest.get(link)
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=") .header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
...@@ -68,12 +80,55 @@ public class TestApi { ...@@ -68,12 +80,55 @@ public class TestApi {
Console.log("链接:" + link); Console.log("链接:" + link);
} }
/**
* 测试分类的商品数量
*/
@Test
public void testCount() {
List<String> list = Arrays.asList("Men", "Women", "Children", "Afri Home", "Cosmetics", "Hair", "Sportswear", "Electronics");
for (String product_type : list) {
String link = "https://mollykitty.myshopify.com/admin/api/" + VERSION + "/products/count.json" + "?&product_type=" + product_type;
System.out.println(link);
link = HttpRequest.get(link)
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
.execute().body();
System.err.println(product_type + ":" + link);
}
}
/**
* 测试第一次连接时的返回
*/
@Test
public void getLink() {
String link = API_URL + "?&product_type=" + "Men" + "&limit=250";
String headerLink = HttpRequest.get(link)
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
.execute().header("link");
headerLink = headerLink.split(";")[0].replaceAll("<", "").replaceAll(">", "");
System.err.println(headerLink);
}
/**
* 导入商品
*/
@Test
public void test() {
}
/**
* 连接测试
*/
@Test @Test
public void linkTest() { public void linkTest() {
String link = "https://mollykitty.myshopify.com/admin/api/2020-01/products.json?vendor=%E6%B3%B0%E9%82%A6%E6%9C%8D%E9%A5%B0&limit=1&vendor=戴菊"; String link = "https://mollykitty.myshopify.com/admin/api/2020-01/products.json?vendor=%E6%B3%B0%E9%82%A6%E6%9C%8D%E9%A5%B0&limit=1&vendor=戴菊";
link = HttpRequest.get(link) link = HttpRequest.get(link)
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=") .header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
.execute().body(); .execute().body();
JSONObject json = JSONObject.fromObject(link); JSONObject json = JSONObject.fromObject(link);
JSONObject product = json.getJSONArray("products").getJSONObject(0); JSONObject product = json.getJSONArray("products").getJSONObject(0);
String tags = product.getString("tags"); String tags = product.getString("tags");
...@@ -86,16 +141,13 @@ public class TestApi { ...@@ -86,16 +141,13 @@ public class TestApi {
} }
} }
@Test /**
public void save() { * 第一遍循环导入
*/
private String once(String link) {
// 记录页数的 // 记录页数的
int pageSize = 0; int pageSize = 0;
int productCount = 0; int productCount = 0;
// 初始页
String link = "https://mollykitty.myshopify.com/admin/api/2020-01/products.json?limit=250&page_info=eyJsYXN0X2lkIjo0NDQzNjE1MDAyNzIxLCJsYXN0X3ZhbHVlIjoiQW5kcm9pZCBwaG9uZSBkYXRhIGNhYmxlIiwiZGlyZWN0aW9uIjoibmV4dCJ9";
// 循环翻页
while (true) {
Console.error("当前的页数为:" + pageSize);
// 这个请求需要密钥,可以先拿着账号密码去浏览器请求一遍,F12 获取 token 复制粘贴即可 // 这个请求需要密钥,可以先拿着账号密码去浏览器请求一遍,F12 获取 token 复制粘贴即可
String result = HttpRequest.get(link) String result = HttpRequest.get(link)
...@@ -120,10 +172,9 @@ public class TestApi { ...@@ -120,10 +172,9 @@ public class TestApi {
try { try {
// 查询该商品的 id 是否已保存 // 查询该商品的 id 是否已保存
if (tbCfStationItemDao.queryByCode(id) != null) { if (tbCfStationItemDao.queryByCode(id) != null) {
// 继续循环 // 记录失败的产品记录
continue; throw new ProductExitException();
} }
// 用于记录 option 的属性名 // 用于记录 option 的属性名
int optionNum = 0; int optionNum = 0;
// 下方商品主体信息需要的商品属性,以"/"隔开 // 下方商品主体信息需要的商品属性,以"/"隔开
...@@ -213,6 +264,7 @@ public class TestApi { ...@@ -213,6 +264,7 @@ public class TestApi {
tbCfStationItem.setItemCount(quantity.longValue()); tbCfStationItem.setItemCount(quantity.longValue());
tbCfStationItem.setItemPrice(null); tbCfStationItem.setItemPrice(null);
// 商品的折扣价
tbCfStationItem.setDiscountPrice(price); tbCfStationItem.setDiscountPrice(price);
} }
...@@ -290,7 +342,14 @@ public class TestApi { ...@@ -290,7 +342,14 @@ public class TestApi {
tbCfStationItem.setItemDescritionId(goodsThreeId); tbCfStationItem.setItemDescritionId(goodsThreeId);
tbCfStationItem.setItemTags(product_type + "," + tags + "," + three); tbCfStationItem.setItemTags(product_type + "," + tags + "," + three);
tbCfStationItem.setItemTop("N"); tbCfStationItem.setItemTop("N");
tbCfStationItem.setItemImg(productsObj.getJSONObject("image").getString("src"));
// 上传图片
String stationSrc = productsObj.getJSONObject("image").getString("src");
InputStream inputStream = getImageStream(stationSrc);
byte[] bytes = toByteArray(inputStream);
String url = OssUtil.upload(bytes, id + "_station.jpg", "zion");
tbCfStationItem.setItemImg(url);
tbCfStationItem.setEnableFlag(2); tbCfStationItem.setEnableFlag(2);
tbCfStationItemDao.save(tbCfStationItem); tbCfStationItemDao.save(tbCfStationItem);
...@@ -299,10 +358,15 @@ public class TestApi { ...@@ -299,10 +358,15 @@ public class TestApi {
JSONArray imagesArr = productsObj.getJSONArray("images"); JSONArray imagesArr = productsObj.getJSONArray("images");
for (int j = 0; j < imagesArr.size(); j++) { for (int j = 0; j < imagesArr.size(); j++) {
JSONObject imageObj = imagesArr.getJSONObject(j); JSONObject imageObj = imagesArr.getJSONObject(j);
// 上传图片
String skuSrc = imageObj.getString("src");
inputStream = getImageStream(skuSrc);
bytes = toByteArray(inputStream);
url = OssUtil.upload(bytes, id + "_sku_" + j + ".jpg", "zion");
// 拼接富文本的 HTML // 拼接富文本的 HTML
imageBuilder.append("<p><img src=\"") imageBuilder.append("<p><img src=\"")
.append(imageObj.getString("src")).append("\" title=\"") .append(url).append("\" title=\"")
.append(IdUtil.randomUUID()).append("_350x350") .append(IdUtil.randomUUID()).append("_350x350")
.append(IdUtil.simpleUUID()).append(".jpg\"/></p>"); .append(IdUtil.simpleUUID()).append(".jpg\"/></p>");
} }
...@@ -315,6 +379,16 @@ public class TestApi { ...@@ -315,6 +379,16 @@ public class TestApi {
itemDescEntity.setCreateTime(date); itemDescEntity.setCreateTime(date);
tbCfItemDescDao.save(itemDescEntity); tbCfItemDescDao.save(itemDescEntity);
} }
} catch (ProductExitException e) {
Console.error("该商品已存在");
// 记录已存在的商品
TbProductMissEntity tbProductMissEntity = new TbProductMissEntity();
tbProductMissEntity.setId(IdUtil.simpleUUID());
tbProductMissEntity.setProductId(id);
tbProductMissEntity.setMissType(1);
tbProductMissEntity.setPageSize(pageSize);
tbProductMissEntity.setCreateTime(new Date());
tbProductMissDao.save(tbProductMissEntity);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
// 记录失败的产品记录 // 记录失败的产品记录
...@@ -328,25 +402,23 @@ public class TestApi { ...@@ -328,25 +402,23 @@ public class TestApi {
} }
} }
// 循环翻页 String headerLink = HttpRequest.get(link)
link = HttpRequest.get(link)
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=") .header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
.execute().header("link") .execute().header("link");
.split(",")[1]; headerLink = headerLink.split(";")[0].replaceAll("<", "").replaceAll(">", "");
Console.error(link); return headerLink;
link = link.substring(2, link.indexOf(">"));
// 记录页数
pageSize++;
}
} }
@Test /**
public void onLoop() { * 无限循环导入
*/
private void unlimited(String link) {
// 记录页数的 // 记录页数的
int pageSize = 0; int pageSize = 0;
int productCount = 0; int productCount = 0;
// 初始页 // 循环翻页
String link = "https://mollykitty.myshopify.com/admin/api/2019-10/products.json?limit=150&vendor=戴菊"; while (true) {
Console.error("当前的页数为:" + pageSize);
// 这个请求需要密钥,可以先拿着账号密码去浏览器请求一遍,F12 获取 token 复制粘贴即可 // 这个请求需要密钥,可以先拿着账号密码去浏览器请求一遍,F12 获取 token 复制粘贴即可
String result = HttpRequest.get(link) String result = HttpRequest.get(link)
...@@ -371,9 +443,10 @@ public class TestApi { ...@@ -371,9 +443,10 @@ public class TestApi {
try { try {
// 查询该商品的 id 是否已保存 // 查询该商品的 id 是否已保存
if (tbCfStationItemDao.queryByCode(id) != null) { if (tbCfStationItemDao.queryByCode(id) != null) {
// 记录失败的产品记录 // 继续循环
throw new ProductExitException(); continue;
} }
// 用于记录 option 的属性名 // 用于记录 option 的属性名
int optionNum = 0; int optionNum = 0;
// 下方商品主体信息需要的商品属性,以"/"隔开 // 下方商品主体信息需要的商品属性,以"/"隔开
...@@ -565,16 +638,6 @@ public class TestApi { ...@@ -565,16 +638,6 @@ public class TestApi {
itemDescEntity.setCreateTime(date); itemDescEntity.setCreateTime(date);
tbCfItemDescDao.save(itemDescEntity); tbCfItemDescDao.save(itemDescEntity);
} }
} catch (ProductExitException e) {
Console.error("该商品已存在");
// 记录已存在的商品
TbProductMissEntity tbProductMissEntity = new TbProductMissEntity();
tbProductMissEntity.setId(IdUtil.simpleUUID());
tbProductMissEntity.setProductId(id);
tbProductMissEntity.setMissType(1);
tbProductMissEntity.setPageSize(pageSize);
tbProductMissEntity.setCreateTime(new Date());
tbProductMissDao.save(tbProductMissEntity);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
// 记录失败的产品记录 // 记录失败的产品记录
...@@ -588,8 +651,17 @@ public class TestApi { ...@@ -588,8 +651,17 @@ public class TestApi {
} }
} }
// 循环翻页
link = HttpRequest.get(link)
.header("Authorization", "Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA=")
.execute().header("link")
.split(",")[1];
Console.error(link);
link = link.substring(2, link.indexOf(">"));
// 记录页数
pageSize++;
}
} }
/** /**
* 通过URL获取网络图片 * 通过URL获取网络图片
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论