Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
dc-java
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
huluobin
dc-java
Commits
8866309e
Commit
8866309e
authored
Jul 24, 2019
by
wutong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修复流未及时关闭和亚马逊时间参数问题
parent
d4dcf7f4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
27 deletions
+45
-27
AmazonAdProductJob.java
...d/src/main/java/com/bailuntec/job/AmazonAdProductJob.java
+40
-24
AmazonAdProductTest.java
...ase-sync-amazon-ad/src/test/java/AmazonAdProductTest.java
+5
-3
No files found.
data-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/AmazonAdProductJob.java
View file @
8866309e
...
...
@@ -32,8 +32,11 @@ import org.apache.commons.lang3.StringUtils;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.lang.reflect.InvocationTargetException
;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.List
;
import
java.util.zip.GZIPInputStream
;
...
...
@@ -175,35 +178,48 @@ public class AmazonAdProductJob extends PointJob {
GZIPInputStream
gzin
=
new
GZIPInputStream
(
response
.
body
().
byteStream
());
InputStreamReader
isr
=
new
InputStreamReader
(
gzin
,
"utf8"
);
BufferedReader
bufferedReader
=
new
BufferedReader
(
isr
);
String
str
=
null
;
StringBuffer
sb
=
new
StringBuffer
();
while
((
str
=
bufferedReader
.
readLine
())
!=
null
)
{
sb
.
append
(
str
);
}
List
<
AmazonAdProduct
>
amazonAdProductList
=
JSON
.
parseArray
(
sb
.
toString
(),
AmazonAdProduct
.
class
);
if
(
amazonAdProductList
!=
null
&&
amazonAdProductList
.
size
()
>
0
)
{
DcBaseFinanceAmazonAdProduct
dcBaseFinanceAmazonAdProduct
=
new
DcBaseFinanceAmazonAdProduct
();
DcBaseFinanceAmazonAdProductMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseFinanceAmazonAdProductMapper
.
class
);
for
(
AmazonAdProduct
amazonAdvert
:
amazonAdProductList
)
{
if
(
BigDecimal
.
ZERO
.
compareTo
(
amazonAdvert
.
getCost
())
!=
0
)
{
BeanUtils
.
copyProperties
(
dcBaseFinanceAmazonAdProduct
,
amazonAdvert
);
dcBaseFinanceAmazonAdProduct
.
setAccountId
(
jobAccountLog
.
getAccountId
());
dcBaseFinanceAmazonAdProduct
.
setCompanyId
(
jobAccountLog
.
getCompanyId
());
dcBaseFinanceAmazonAdProduct
.
setReportDate
(
jobAccountLog
.
getStartTime
().
toLocalDate
());
dcBaseFinanceAmazonAdProduct
.
setExchangeRate
(
CallBailunSystem
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
CNY
.
value
(),
jobAccountLog
.
getStartTime
()));
dcBaseFinanceAmazonAdProduct
.
setExchangeRateUsd
(
CallBailunSystem
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
USD
.
value
(),
jobAccountLog
.
getStartTime
()));
dcBaseFinanceAmazonAdProduct
.
setBjModifyTime
(
LocalDateTime
.
now
());
DcBaseFinanceAmazonAdProductExample
example
=
DcBaseFinanceAmazonAdProductExample
.
newAndCreateCriteria
().
andCompanyIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getCompanyId
()).
andAccountIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getAccountId
()).
andCampaignIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getCampaignId
()).
andAdGroupIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getAdGroupId
()).
andSkuEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getSku
()).
andReportDateEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getReportDate
()).
example
();
int
i
=
mapper
.
updateByExampleSelective
(
dcBaseFinanceAmazonAdProduct
,
example
);
if
(
i
==
0
)
{
mapper
.
insertSelective
(
dcBaseFinanceAmazonAdProduct
);
String
str
=
null
;
try
{
while
((
str
=
bufferedReader
.
readLine
())
!=
null
)
{
sb
.
append
(
str
);
}
List
<
AmazonAdProduct
>
amazonAdProductList
=
JSON
.
parseArray
(
sb
.
toString
(),
AmazonAdProduct
.
class
);
if
(
amazonAdProductList
!=
null
&&
amazonAdProductList
.
size
()
>
0
)
{
DcBaseFinanceAmazonAdProduct
dcBaseFinanceAmazonAdProduct
=
new
DcBaseFinanceAmazonAdProduct
();
DcBaseFinanceAmazonAdProductMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseFinanceAmazonAdProductMapper
.
class
);
for
(
AmazonAdProduct
amazonAdvert
:
amazonAdProductList
)
{
if
(
BigDecimal
.
ZERO
.
compareTo
(
amazonAdvert
.
getCost
())
!=
0
)
{
BeanUtils
.
copyProperties
(
dcBaseFinanceAmazonAdProduct
,
amazonAdvert
);
dcBaseFinanceAmazonAdProduct
.
setAccountId
(
jobAccountLog
.
getAccountId
());
dcBaseFinanceAmazonAdProduct
.
setCompanyId
(
jobAccountLog
.
getCompanyId
());
dcBaseFinanceAmazonAdProduct
.
setReportDate
(
jobAccountLog
.
getStartTime
().
toLocalDate
());
dcBaseFinanceAmazonAdProduct
.
setExchangeRate
(
CallBailunSystem
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
CNY
.
value
(),
jobAccountLog
.
getStartTime
()));
dcBaseFinanceAmazonAdProduct
.
setExchangeRateUsd
(
CallBailunSystem
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
USD
.
value
(),
jobAccountLog
.
getStartTime
()));
dcBaseFinanceAmazonAdProduct
.
setBjModifyTime
(
LocalDateTime
.
now
());
DcBaseFinanceAmazonAdProductExample
example
=
DcBaseFinanceAmazonAdProductExample
.
newAndCreateCriteria
().
andCompanyIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getCompanyId
()).
andAccountIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getAccountId
()).
andCampaignIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getCampaignId
()).
andAdGroupIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getAdGroupId
()).
andSkuEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getSku
()).
andReportDateEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getReportDate
()).
example
();
int
i
=
mapper
.
updateByExampleSelective
(
dcBaseFinanceAmazonAdProduct
,
example
);
if
(
i
==
0
)
{
mapper
.
insertSelective
(
dcBaseFinanceAmazonAdProduct
);
}
}
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
jobAccountLog
.
setMessage
(
"解析Gzip格式的Report错误:"
+
ExceptionUtil
.
transform
(
e
));
}
finally
{
bufferedReader
.
close
();
isr
.
close
();
gzin
.
close
();
}
gzin
.
close
();
isr
.
close
();
jobAccountLog
.
setStartTime
(
jobAccountLog
.
getEndTime
());
/*
* 今天只能拿到昨天的广告费, 不然不完整
* 如果开始时间比今天0点晚, 就设为22点(或者你随便减几个小时都可以)
*/
LocalDateTime
zeroTime
=
LocalDateTime
.
of
(
LocalDate
.
now
(),
LocalTime
.
MIN
);
LocalDateTime
overStartTime
=
jobAccountLog
.
getEndTime
().
isAfter
(
zeroTime
)
?
zeroTime
.
minusHours
(
8
)
:
jobAccountLog
.
getEndTime
();
jobAccountLog
.
setStartTime
(
overStartTime
);
jobAccountLog
.
setEndTime
(
jobAccountLog
.
getStartTime
().
plusDays
(
jobAccountLog
.
getIntervalTime
()).
isAfter
(
LocalDateTime
.
now
())
?
LocalDateTime
.
now
()
:
jobAccountLog
.
getEndTime
().
plusDays
(
jobAccountLog
.
getIntervalTime
()));
jobAccountLog
.
setMessage
(
"执行成功"
);
}
else
{
...
...
data-base/base-sync-amazon-ad/src/test/java/AmazonAdProductTest.java
View file @
8866309e
...
...
@@ -12,7 +12,9 @@ import com.dangdang.ddframe.job.executor.ShardingContexts;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.jupiter.api.Test
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.LocalTime
;
import
java.time.format.DateTimeFormatter
;
import
java.util.HashMap
;
...
...
@@ -42,9 +44,9 @@ public class AmazonAdProductTest {
public
void
test2
()
{
AmazonAdProductJob
amazonAdProductJob
=
new
AmazonAdProductJob
();
JobAccountLogMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAccountLogMapper
.
class
);
JobAccountLog
dcBaseCompanyAccount
=
mapper
.
selectOneByExample
(
JobAccountLogExample
.
newAndCreateCriteria
().
andAccountIdEqualTo
(
572
).
example
());
dcBaseCompanyAccount
.
setStartTime
(
LocalDateTime
.
of
(
2019
,
5
,
21
,
0
,
0
));
dcBaseCompanyAccount
.
setEndTime
(
LocalDateTime
.
of
(
2019
,
5
,
22
,
0
,
0
));
JobAccountLog
dcBaseCompanyAccount
=
mapper
.
selectOneByExample
(
JobAccountLogExample
.
newAndCreateCriteria
().
andAccountIdEqualTo
(
785
).
example
());
dcBaseCompanyAccount
.
setStartTime
(
LocalDateTime
.
of
(
2019
,
7
,
24
,
1
0
,
0
));
dcBaseCompanyAccount
.
setEndTime
(
LocalDateTime
.
of
(
2019
,
7
,
24
,
11
,
0
));
while
(
dcBaseCompanyAccount
.
getStartTime
().
isBefore
(
LocalDateTime
.
now
().
plusDays
(
1L
)))
{
try
{
Thread
.
sleep
(
10000
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment