Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
C
chinafrica
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
zhengfg
chinafrica
Commits
9e3badc9
提交
9e3badc9
authored
3月 18, 2020
作者:
梁业锦
💬
提交者:
Messenger902
3月 18, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
- 多线程形式改善代码
上级
9481b5d9
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
290 行增加
和
224 行删除
+290
-224
TbCfStationItemDao.xml
...rc/main/resources/com/platform/dao/TbCfStationItemDao.xml
+1
-1
ImpartCode.java
platform-admin/src/main/test/java/test/ImpartCode.java
+245
-219
ImportTask.java
platform-admin/src/main/test/java/test/ImportTask.java
+16
-0
TestApi.java
platform-admin/src/main/test/java/test/TestApi.java
+20
-4
Test.sql
platform-admin/src/main/test/sql/Test.sql
+8
-0
没有找到文件。
platform-admin/src/main/resources/com/platform/dao/TbCfStationItemDao.xml
浏览文件 @
9e3badc9
...
@@ -229,7 +229,7 @@
...
@@ -229,7 +229,7 @@
#{itemUrl},
#{itemUrl},
#{itemImg},
#{itemImg},
#{itemTags},
#{itemTags},
#{itemLabel}
,
#{itemLabel}
,
#{itemNum},
#{itemNum},
#{itemCount},
#{itemCount},
#{itemSku},
#{itemSku},
...
...
platform-admin/src/main/test/java/test/ImpartCode.java
浏览文件 @
9e3badc9
...
@@ -23,6 +23,10 @@ import java.net.URL;
...
@@ -23,6 +23,10 @@ import java.net.URL;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.List
;
import
java.util.concurrent.Executor
;
import
java.util.concurrent.ExecutorService
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ThreadPoolExecutor
;
/**
/**
* 商品导入功能
* 商品导入功能
...
@@ -64,25 +68,32 @@ public class ImpartCode {
...
@@ -64,25 +68,32 @@ public class ImpartCode {
*/
*/
private
final
String
API_URL
=
"https://mollykitty.myshopify.com/admin/api/"
+
VERSION
+
"/products.json"
;
private
final
String
API_URL
=
"https://mollykitty.myshopify.com/admin/api/"
+
VERSION
+
"/products.json"
;
/**
* 任务用线程池
*/
ExecutorService
executorService
=
Executors
.
newCachedThreadPool
();
/**
/**
* 根据分类进行导入
* 根据分类进行导入
*/
*/
@Test
@Test
public
void
goImport
()
{
public
void
goImport
()
{
List
<
String
>
list
=
Arrays
.
asList
(
"Men"
,
"Women"
,
"Children"
,
"Afri Home"
,
"Cosmetics"
,
"Hair"
,
"Sportswear"
,
"Electronics"
);
List
<
String
>
list
=
Arrays
.
asList
(
"Men"
,
"Women"
,
"Children"
,
"Afri Home"
,
"Cosmetics"
,
"Hair"
,
"Sportswear"
,
"Electronics"
);
// 创建线程池
for
(
String
product_type
:
list
)
{
for
(
String
product_type
:
list
)
{
// 记录商品数量
// 记录商品数量
int
productCount
=
0
;
int
productCount
=
0
;
// 记录页数
// 记录页数
int
pageSize
=
1
;
int
pageSize
=
1
;
// 测试数量
// 测试数量
String
link
=
"https://mollykitty.myshopify.com/admin/api/"
+
VERSION
+
"/products/count.json"
+
"?
&
product_type="
+
product_type
;
String
link
=
"https://mollykitty.myshopify.com/admin/api/"
+
VERSION
+
"/products/count.json"
+
"?product_type="
+
product_type
;
String
data
=
HttpRequest
.
get
(
link
)
String
data
=
HttpRequest
.
get
(
link
)
.
header
(
"Authorization"
,
"Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA="
)
.
header
(
"Authorization"
,
"Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA="
)
.
execute
().
body
();
.
execute
().
body
();
System
.
err
.
println
(
product_type
+
":"
+
data
);
System
.
err
.
println
(
product_type
+
":"
+
data
);
// 导入请求
// 导入请求
link
=
API_URL
+
"?&product_type="
+
product_type
;
link
=
"https://mollykitty.myshopify.com/admin/api/"
+
VERSION
+
"/products.json"
+
"?product_type="
+
product_type
+
"&limit=250"
;
// 开始第一次导入商品
// 开始第一次导入商品
importMethod
(
link
,
pageSize
,
productCount
);
importMethod
(
link
,
pageSize
,
productCount
);
// 获取第一次循环的请求头
// 获取第一次循环的请求头
...
@@ -109,7 +120,6 @@ public class ImpartCode {
...
@@ -109,7 +120,6 @@ public class ImpartCode {
// 死循环的终点为获取下一页链接抛出数组越界异常
// 死循环的终点为获取下一页链接抛出数组越界异常
break
;
break
;
}
}
}
}
}
}
...
@@ -118,11 +128,15 @@ public class ImpartCode {
...
@@ -118,11 +128,15 @@ public class ImpartCode {
/**
/**
* 商品导入处理
* 商品导入处理
*
*
* @param
data 接口返回数据
* @param
link 请求链接
* @param pageSize 正在导入的页数
* @param pageSize 正在导入的页数
* @param productCount 正在导入的商品数量
* @param productCount 正在导入的商品数量
*/
*/
private
void
importMethod
(
String
data
,
int
pageSize
,
int
productCount
)
{
private
void
importMethod
(
String
link
,
int
pageSize
,
int
productCount
)
{
// 请求
String
data
=
HttpRequest
.
get
(
link
)
.
header
(
"Authorization"
,
"Basic N2YwZTA0OGFjNDAxNmI5MzU3YmIxZWIyMjE3ZTQyMDE6MWM5N2ExMjIyYzViNDBlMDU5N2M4MTZjNmRmZWNhYzA="
)
.
execute
().
body
();
// 格式化
// 格式化
JSONObject
jsonObject
=
JSONObject
.
fromObject
(
data
);
JSONObject
jsonObject
=
JSONObject
.
fromObject
(
data
);
// 取每个数组中的 products 数组节点
// 取每个数组中的 products 数组节点
...
@@ -141,12 +155,14 @@ public class ImpartCode {
...
@@ -141,12 +155,14 @@ public class ImpartCode {
Date
date
=
new
Date
();
Date
date
=
new
Date
();
// 商品的平台 id
// 商品的平台 id
String
id
=
productsObj
.
getString
(
"id"
);
String
id
=
productsObj
.
getString
(
"id"
);
try
{
// 查询该商品的 id 是否已保存
// 查询该商品的 id 是否已保存
if
(
tbCfStationItemDao
.
queryByCode
(
id
)
!=
null
)
{
if
(
tbCfStationItemDao
.
queryByCode
(
id
)
!=
null
)
{
// 继续
循环
// 跳过
循环
continue
;
continue
;
}
}
// 线程任务
Runnable
runnable
=
()
->
{
try
{
// 用于记录 option 的属性名
// 用于记录 option 的属性名
int
optionNum
=
0
;
int
optionNum
=
0
;
// 下方商品主体信息需要的商品属性,以"/"隔开
// 下方商品主体信息需要的商品属性,以"/"隔开
...
@@ -227,7 +243,7 @@ public class ImpartCode {
...
@@ -227,7 +243,7 @@ public class ImpartCode {
skusEntity
.
setCreateTime
(
date
);
skusEntity
.
setCreateTime
(
date
);
skusEntity
.
setUpdateTime
(
date
);
skusEntity
.
setUpdateTime
(
date
);
skusEntity
.
setSkuDesc
(
variantsObj
.
getString
(
"title"
));
skusEntity
.
setSkuDesc
(
variantsObj
.
getString
(
"title"
));
System
.
out
.
println
(
optionBuilder
.
toString
());
skusEntity
.
setSkuName
(
optionBuilder
.
toString
());
skusEntity
.
setSkuName
(
optionBuilder
.
toString
());
skusEntity
.
setSkuPrice
(
price
);
skusEntity
.
setSkuPrice
(
price
);
skusEntity
.
setSkuCount
(
quantity
);
skusEntity
.
setSkuCount
(
quantity
);
...
@@ -235,7 +251,13 @@ public class ImpartCode {
...
@@ -235,7 +251,13 @@ public class ImpartCode {
tbCfItemSkusDao
.
save
(
skusEntity
);
tbCfItemSkusDao
.
save
(
skusEntity
);
tbCfStationItem
.
setItemCount
(
quantity
.
longValue
());
tbCfStationItem
.
setItemCount
(
quantity
.
longValue
());
// 商品的原价
String
compare_at_price
=
variantsObj
.
getString
(
"compare_at_price"
);
if
(!
"null"
.
equals
(
compare_at_price
))
{
tbCfStationItem
.
setItemPrice
(
new
BigDecimal
(
compare_at_price
));
}
else
{
tbCfStationItem
.
setItemPrice
(
null
);
tbCfStationItem
.
setItemPrice
(
null
);
}
// 商品的折扣价
// 商品的折扣价
tbCfStationItem
.
setDiscountPrice
(
price
);
tbCfStationItem
.
setDiscountPrice
(
price
);
}
}
...
@@ -320,6 +342,7 @@ public class ImpartCode {
...
@@ -320,6 +342,7 @@ public class ImpartCode {
InputStream
inputStream
=
getImageStream
(
src
);
InputStream
inputStream
=
getImageStream
(
src
);
byte
[]
bytes
=
toByteArray
(
inputStream
);
byte
[]
bytes
=
toByteArray
(
inputStream
);
String
url
=
OssUtil
.
upload
(
bytes
,
id
+
"_station.jpg"
,
"zion"
);
String
url
=
OssUtil
.
upload
(
bytes
,
id
+
"_station.jpg"
,
"zion"
);
System
.
err
.
println
(
"主图的链接为: "
+
url
);
tbCfStationItem
.
setItemImg
(
url
);
tbCfStationItem
.
setItemImg
(
url
);
tbCfStationItem
.
setEnableFlag
(
2
);
tbCfStationItem
.
setEnableFlag
(
2
);
...
@@ -362,6 +385,9 @@ public class ImpartCode {
...
@@ -362,6 +385,9 @@ public class ImpartCode {
tbProductMissEntity
.
setCreateTime
(
new
Date
());
tbProductMissEntity
.
setCreateTime
(
new
Date
());
tbProductMissDao
.
save
(
tbProductMissEntity
);
tbProductMissDao
.
save
(
tbProductMissEntity
);
}
}
};
// 提交任务执行
executorService
.
submit
(
runnable
);
}
}
}
}
...
...
platform-admin/src/main/test/java/test/ImportTask.java
0 → 100644
浏览文件 @
9e3badc9
package
test
;
/**
* 商品导入的任务块
*
* @author 爱酱油不爱醋
* @version 1.0
*/
public
class
ImportTask
implements
Runnable
{
@Override
public
void
run
()
{
}
}
platform-admin/src/main/test/java/test/TestApi.java
浏览文件 @
9e3badc9
...
@@ -3,6 +3,7 @@ package test;
...
@@ -3,6 +3,7 @@ package test;
import
cn.hutool.core.lang.Console
;
import
cn.hutool.core.lang.Console
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.core.util.IdUtil
;
import
cn.hutool.http.HttpRequest
;
import
cn.hutool.http.HttpRequest
;
import
com.google.gson.annotations.JsonAdapter
;
import
com.platform.controller.api.ProductExitException
;
import
com.platform.controller.api.ProductExitException
;
import
com.platform.dao.*
;
import
com.platform.dao.*
;
import
com.platform.entity.*
;
import
com.platform.entity.*
;
...
@@ -114,21 +115,36 @@ public class TestApi {
...
@@ -114,21 +115,36 @@ public class TestApi {
*/
*/
@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
00
&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
);
JSONArray
productArr
=
json
.
getJSONArray
(
"products"
);
String
tags
=
product
.
getString
(
"tags"
);
for
(
int
j
=
0
;
j
<
productArr
.
size
();
j
++)
{
JSONObject
product
=
productArr
.
getJSONObject
(
j
);
JSONArray
variantsArr
=
product
.
getJSONArray
(
"variants"
);
for
(
int
i
=
0
;
i
<
variantsArr
.
size
();
i
++)
{
JSONObject
variantsObj
=
variantsArr
.
getJSONObject
(
i
);
String
compare_at_price
=
variantsObj
.
getString
(
"compare_at_price"
);
if
(!
"null"
.
equals
(
compare_at_price
))
{
System
.
out
.
println
(
compare_at_price
);
}
}
}
/*String tags = product.getString("tags");
String[] s = tags.split(",");
String[] s = tags.split(",");
Console.error(Arrays.toString(s));
Console.error(Arrays.toString(s));
for (String i : s) {
for (String i : s) {
if (i.indexOf("#") == 0) {
if (i.indexOf("#") == 0) {
System.out.println(i);
System.out.println(i);
}
}
}
}
*/
}
}
/**
/**
...
...
platform-admin/src/main/test/sql/Test.sql
0 → 100644
浏览文件 @
9e3badc9
truncate
from
tb_category_template
;
DELETE
from
tb_cf_category
;
DELETE
from
tb_cf_goodstwotype
;
DELETE
from
tb_cf_goodstype
;
DELETE
from
tb_cf_item_desc
;
DELETE
from
tb_cf_item_skus
;
DELETE
from
tb_cf_option
;
DELETE
from
tb_cf_station_item
;
\ No newline at end of file
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论