Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
C
chinafrica
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
zhengfg
chinafrica
Commits
43275007
提交
43275007
authored
3月 16, 2020
作者:
梁业锦
💬
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- 代码完善
上级
e94a2d49
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
332 行增加
和
260 行删除
+332
-260
TestApi.java
platform-admin/src/main/test/java/test/TestApi.java
+332
-260
没有找到文件。
platform-admin/src/main/test/java/test/TestApi.java
浏览文件 @
43275007
...
...
@@ -10,6 +10,7 @@ import com.platform.utils.OssUtil;
import
com.platform.utils.R
;
import
net.sf.json.JSONArray
;
import
net.sf.json.JSONObject
;
import
org.apiguardian.api.API
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -25,6 +26,7 @@ import java.net.HttpURLConnection;
import
java.net.URL
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author 爱酱油不爱醋
...
...
@@ -55,9 +57,19 @@ public class TestApi {
@Autowired
private
TbCfDescripitonDao
tbCfDescripitonDao
;
/**
* 接口数据版本号
*/
private
final
String
VERSION
=
"2020-01"
;
/**
* 接口路径
*/
private
final
String
API_URL
=
"https://mollykitty.myshopify.com/admin/api/"
+
VERSION
+
"/products.json"
;
@Test
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
);
link
=
HttpRequest
.
get
(
link
)
.
header
(
"Authorization"
,
"Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA="
)
...
...
@@ -68,12 +80,55 @@ public class TestApi {
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
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=戴菊"
;
link
=
HttpRequest
.
get
(
link
)
.
header
(
"Authorization"
,
"Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA="
)
.
execute
().
body
();
JSONObject
json
=
JSONObject
.
fromObject
(
link
);
JSONObject
product
=
json
.
getJSONArray
(
"products"
).
getJSONObject
(
0
);
String
tags
=
product
.
getString
(
"tags"
);
...
...
@@ -86,16 +141,13 @@ public class TestApi {
}
}
@Test
public
void
save
()
{
/**
* 第一遍循环导入
*/
private
String
once
(
String
link
)
{
// 记录页数的
int
pageSize
=
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 复制粘贴即可
String
result
=
HttpRequest
.
get
(
link
)
...
...
@@ -120,10 +172,9 @@ public class TestApi {
try
{
// 查询该商品的 id 是否已保存
if
(
tbCfStationItemDao
.
queryByCode
(
id
)
!=
null
)
{
// 继续循环
continue
;
// 记录失败的产品记录
throw
new
ProductExitException
()
;
}
// 用于记录 option 的属性名
int
optionNum
=
0
;
// 下方商品主体信息需要的商品属性,以"/"隔开
...
...
@@ -213,6 +264,7 @@ public class TestApi {
tbCfStationItem
.
setItemCount
(
quantity
.
longValue
());
tbCfStationItem
.
setItemPrice
(
null
);
// 商品的折扣价
tbCfStationItem
.
setDiscountPrice
(
price
);
}
...
...
@@ -290,7 +342,14 @@ public class TestApi {
tbCfStationItem
.
setItemDescritionId
(
goodsThreeId
);
tbCfStationItem
.
setItemTags
(
product_type
+
","
+
tags
+
","
+
three
);
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
);
tbCfStationItemDao
.
save
(
tbCfStationItem
);
...
...
@@ -299,10 +358,15 @@ public class TestApi {
JSONArray
imagesArr
=
productsObj
.
getJSONArray
(
"images"
);
for
(
int
j
=
0
;
j
<
imagesArr
.
size
();
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
imageBuilder
.
append
(
"<p><img src=\""
)
.
append
(
imageObj
.
getString
(
"src"
)
).
append
(
"\" title=\""
)
.
append
(
url
).
append
(
"\" title=\""
)
.
append
(
IdUtil
.
randomUUID
()).
append
(
"_350x350"
)
.
append
(
IdUtil
.
simpleUUID
()).
append
(
".jpg\"/></p>"
);
}
...
...
@@ -315,6 +379,16 @@ public class TestApi {
itemDescEntity
.
setCreateTime
(
date
);
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
)
{
e
.
printStackTrace
();
// 记录失败的产品记录
...
...
@@ -328,25 +402,23 @@ public class TestApi {
}
}
// 循环翻页
link
=
HttpRequest
.
get
(
link
)
String
headerLink
=
HttpRequest
.
get
(
link
)
.
header
(
"Authorization"
,
"Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA="
)
.
execute
().
header
(
"link"
)
.
split
(
","
)[
1
];
Console
.
error
(
link
);
link
=
link
.
substring
(
2
,
link
.
indexOf
(
">"
));
// 记录页数
pageSize
++;
}
.
execute
().
header
(
"link"
);
headerLink
=
headerLink
.
split
(
";"
)[
0
].
replaceAll
(
"<"
,
""
).
replaceAll
(
">"
,
""
);
return
headerLink
;
}
@Test
public
void
onLoop
()
{
/**
* 无限循环导入
*/
private
void
unlimited
(
String
link
)
{
// 记录页数的
int
pageSize
=
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 复制粘贴即可
String
result
=
HttpRequest
.
get
(
link
)
...
...
@@ -371,9 +443,10 @@ public class TestApi {
try
{
// 查询该商品的 id 是否已保存
if
(
tbCfStationItemDao
.
queryByCode
(
id
)
!=
null
)
{
// 记录失败的产品记录
throw
new
ProductExitException
()
;
// 继续循环
continue
;
}
// 用于记录 option 的属性名
int
optionNum
=
0
;
// 下方商品主体信息需要的商品属性,以"/"隔开
...
...
@@ -565,16 +638,6 @@ public class TestApi {
itemDescEntity
.
setCreateTime
(
date
);
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
)
{
e
.
printStackTrace
();
// 记录失败的产品记录
...
...
@@ -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获取网络图片
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论