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
484fbd3e
Commit
484fbd3e
authored
Aug 20, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
亚马逊报告
parent
31743445
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
76 additions
and
18 deletions
+76
-18
AmazonAdDownloadReportJob.java
...ain/java/com/bailuntec/job/AmazonAdDownloadReportJob.java
+24
-9
AmazonAdGenerateReportIdJob.java
...n/java/com/bailuntec/job/AmazonAdGenerateReportIdJob.java
+52
-9
No files found.
data-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/AmazonAdDownloadReportJob.java
View file @
484fbd3e
package
com
.
bailuntec
.
job
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.
util.IOUtils
;
import
com.alibaba.fastjson.
TypeReference
;
import
com.bailuntec.domain.entity.DcBaseCompanyAccount
;
import
com.bailuntec.domain.entity.DcBaseFinanceAmazonAdProduct
;
import
com.bailuntec.domain.entity.JobAmazonAdLog
;
...
...
@@ -28,19 +28,18 @@ import okhttp3.Response;
import
org.apache.commons.beanutils.BeanUtils
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.io.Reader
;
import
java.lang.reflect.Type
;
import
java.math.BigDecimal
;
import
java.nio.charset.Charset
;
import
java.time.LocalDateTime
;
import
java.util.List
;
import
java.util.zip.GZIPInputStream
;
@Slf4j
public
class
AmazonAdDownloadReportJob
implements
SimpleJob
{
private
final
OkHttpClient
client
=
OkHttpUtil
.
getInstance
();
@Override
public
void
execute
(
ShardingContext
shardingContext
)
{
/**
...
...
@@ -80,11 +79,16 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
if
(
response
.
isSuccessful
())
{
//注意这个接口是必须用gzip
gzin
=
new
GZIPInputStream
(
response
.
body
().
byteStream
());
log
.
warn
(
"开始解析账号Id为"
+
jobAmazonAdLog
.
getAccountId
()
+
"的Report----"
+
jobAmazonAdLog
.
getReportId
()
+
", 文件大小为"
+
response
.
body
().
contentLength
());
log
.
info
(
"开始解析账号Id为 {} 的Report----{}, 文件大小为:{} 报告时间:{}"
,
jobAmazonAdLog
.
getAccountId
(),
jobAmazonAdLog
.
getReportId
(),
response
.
body
().
contentLength
(),
jobAmazonAdLog
.
getReportDate
());
Gson
gson
=
new
Gson
();
Type
type
=
new
TypeToken
<
List
<
AmazonAdProduct
>>()
{
}.
getType
();
List
<
AmazonAdProduct
>
amazonAdProductList
=
gson
.
fromJson
(
new
InputStreamReader
(
gzin
),
type
);
// List<AmazonAdProduct> amazonAdProductList = gson.fromJson(new InputStreamReader(gzin), type);
List
<
AmazonAdProduct
>
amazonAdProductList
=
JSON
.
parseObject
(
gzin
,
new
TypeReference
<
List
<
AmazonAdProduct
>>()
{
}.
getType
());
log
.
warn
(
"账号Id"
+
jobAmazonAdLog
.
getAccountId
()
+
"的Report解析完成"
);
gzin
.
close
();
response
.
close
();
...
...
@@ -102,7 +106,14 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
dcBaseFinanceAmazonAdProduct
.
setExchangeRate
(
CallBailunSystem
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
CNY
.
value
(),
jobAmazonAdLog
.
getReportDate
().
atStartOfDay
()));
dcBaseFinanceAmazonAdProduct
.
setExchangeRateUsd
(
CallBailunSystem
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
USD
.
value
(),
jobAmazonAdLog
.
getReportDate
().
atStartOfDay
()));
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
();
DcBaseFinanceAmazonAdProductExample
example
=
DcBaseFinanceAmazonAdProductExample
.
newAndCreateCriteria
()
.
andCompanyIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getCompanyId
())
.
andAccountIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getAccountId
())
.
andCampaignIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getCampaignId
())
.
andAdGroupIdEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getAdGroupId
())
.
andSkuEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getSku
())
.
andReportDateEqualTo
(
dcBaseFinanceAmazonAdProduct
.
getReportDate
()).
example
();
int
update
=
mapper
.
updateByExampleSelective
(
dcBaseFinanceAmazonAdProduct
,
example
,
shardParam
);
if
(
update
==
0
)
{
mapper
.
insertSelective
(
dcBaseFinanceAmazonAdProduct
,
shardParam
);
...
...
@@ -113,7 +124,11 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
DcBaseFinanceAmazonAdProductMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseFinanceAmazonAdProductMapper
.
class
);
mapper
.
deleteByExample
(
DcBaseFinanceAmazonAdProductExample
.
newAndCreateCriteria
().
andAccountIdEqualTo
(
jobAmazonAdLog
.
getAccountId
()).
andCompanyIdEqualTo
(
jobAmazonAdLog
.
getCompanyId
()).
andReportDateEqualTo
(
jobAmazonAdLog
.
getReportDate
()).
andBjModifyTimeLessThan
(
startTime
.
minusHours
(
1
)).
example
());
jobAmazonAdLog
.
setStatus
(
true
);
jobAmazonAdLogMapper
.
updateByExampleSelective
(
jobAmazonAdLog
,
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andCompanyIdEqualTo
(
jobAmazonAdLog
.
getCompanyId
()).
andAccountIdEqualTo
(
jobAmazonAdLog
.
getAccountId
()).
andReportDateEqualTo
(
jobAmazonAdLog
.
getReportDate
()).
example
());
jobAmazonAdLogMapper
.
updateByExampleSelective
(
jobAmazonAdLog
,
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andCompanyIdEqualTo
(
jobAmazonAdLog
.
getCompanyId
())
.
andAccountIdEqualTo
(
jobAmazonAdLog
.
getAccountId
())
.
andReportDateEqualTo
(
jobAmazonAdLog
.
getReportDate
()).
example
());
break
;
}
else
{
String
s
=
response
.
body
().
string
();
...
...
@@ -161,7 +176,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
.
andStatusEqualTo
(
false
)
.
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
))
.
example
()
.
orderBy
(
"id"
)
.
orderBy
(
"id
desc
"
)
.
limit
(
shardingContext
.
getShardingItem
()
*
pageSize
,
pageSize
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
...
...
data-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/AmazonAdGenerateReportIdJob.java
View file @
484fbd3e
...
...
@@ -48,16 +48,18 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
if
(
listByPage
!=
null
&&
listByPage
.
size
()
>
0
)
{
for
(
JobAccountLog
jobAccountLog
:
listByPage
)
{
if
(
jobAccountLog
.
getId
()
==
null
)
{
//Id为null在任务表无记录
//Id为null在任务表无记录
if
(
jobAccountLog
.
getId
()
==
null
)
{
BeanUtils
.
copyProperties
(
jobAccountLog
,
jobPointLog
);
jobAccountLog
.
setId
(
null
);
}
LocalDateTime
localDateTime
=
jobAccountLog
.
getStartTime
();
for
(
long
i
=
10
;
i
>=
0
;
i
--)
{
jobAccountLog
.
setStartTime
(
localDateTime
.
minusDays
(
i
));
generateReportId
(
jobAccountLog
);
this
.
generateReportId
(
jobAccountLog
);
}
if
(
jobAccountLog
.
getId
()
==
null
)
{
//null在任务表无记录
//null在任务表无记录
if
(
jobAccountLog
.
getId
()
==
null
)
{
jobAccountLogMapper
.
insertSelective
(
jobAccountLog
);
}
else
{
jobAccountLog
.
setBjModified
(
LocalDateTime
.
now
());
...
...
@@ -83,7 +85,7 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
* 避免报告不完整
* 比如 7月26号12:00才允许生成7月25号的报告
*
* @param jobAccountLog
* @param jobAccountLog
x
*/
private
void
generateReportId
(
JobAccountLog
jobAccountLog
)
{
LocalDateTime
startZeroTime
=
LocalDateTime
.
of
(
jobAccountLog
.
getStartTime
().
toLocalDate
(),
LocalTime
.
MIN
);
...
...
@@ -96,7 +98,11 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
* 先查DB里有没有jobAccountLog.getStartTime那天的ReportId
*/
JobAmazonAdLogMapper
jobAmazonAdLogMapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAmazonAdLogMapper
.
class
);
JobAmazonAdLog
jobAmazonAdLog
=
jobAmazonAdLogMapper
.
selectOneByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andCompanyIdEqualTo
(
jobAccountLog
.
getCompanyId
()).
andAccountIdEqualTo
(
jobAccountLog
.
getAccountId
()).
andReportDateEqualTo
(
jobAccountLog
.
getStartTime
().
toLocalDate
()).
example
());
JobAmazonAdLog
jobAmazonAdLog
=
jobAmazonAdLogMapper
.
selectOneByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andCompanyIdEqualTo
(
jobAccountLog
.
getCompanyId
())
.
andAccountIdEqualTo
(
jobAccountLog
.
getAccountId
())
.
andReportDateEqualTo
(
jobAccountLog
.
getStartTime
().
toLocalDate
())
.
example
());
/**
* jobAccountLog.getStartTime那天的ReportId不存在
* 发请求, 存在就更新时间
...
...
@@ -132,14 +138,51 @@ public class AmazonAdGenerateReportIdJob extends PointJob {
.
addHeader
(
"Content-Type"
,
"application/json"
)
.
build
();
response
=
client
.
newCall
(
request
).
execute
();
String
string
=
response
.
body
().
string
();
if
(
response
.
isSuccessful
())
{
AmazonAdSuccessResult
amazonAdSuccessResult
=
JSON
.
parseObject
(
string
,
AmazonAdSuccessResult
.
class
);
JobAmazonAdLog
jobAmazonAdLog
=
new
JobAmazonAdLog
(
null
,
jobAccountLog
.
getAccountId
(),
amazonAdSuccessResult
.
getReportId
(),
jobAccountLog
.
getStartTime
().
toLocalDate
(),
false
,
null
,
LocalDateTime
.
now
(),
siteEn
,
jobAccountLog
.
getCompanyId
());
int
updateInt
=
jobAmazonAdLogMapper
.
updateByExampleSelective
(
jobAmazonAdLog
,
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andAccountIdEqualTo
(
jobAccountLog
.
getAccountId
()).
andReportDateEqualTo
(
jobAccountLog
.
getStartTime
().
toLocalDate
()).
example
());
if
(
updateInt
==
0
)
{
jobAmazonAdLogMapper
.
insertSelective
(
jobAmazonAdLog
);
// JobAmazonAdLog jobAmazonAdLog = new JobAmazonAdLog(null,
// jobAccountLog.getAccountId(),
// amazonAdSuccessResult.getReportId(),
// jobAccountLog.getStartTime().toLocalDate(),
// false,
// null,
// LocalDateTime.now(),
// siteEn,
// jobAccountLog.getCompanyId());
//
// int updateInt = jobAmazonAdLogMapper.updateByExampleSelective(jobAmazonAdLog, JobAmazonAdLogExample
// .newAndCreateCriteria()
// .andAccountIdEqualTo(jobAccountLog.getAccountId())
// .andReportDateEqualTo(jobAccountLog.getStartTime().toLocalDate())
// .example());
//
// if (updateInt == 0) {
// jobAmazonAdLogMapper.insertSelective(jobAmazonAdLog);
// }
JobAmazonAdLog
jobAmazonAdLog
=
jobAmazonAdLogMapper
.
selectOneByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andAccountIdEqualTo
(
jobAccountLog
.
getAccountId
())
.
andReportDateEqualTo
(
jobAccountLog
.
getStartTime
().
toLocalDate
())
.
example
());
if
(
jobAmazonAdLog
==
null
)
{
jobAmazonAdLog
=
new
JobAmazonAdLog
(
null
,
jobAccountLog
.
getAccountId
(),
amazonAdSuccessResult
.
getReportId
(),
jobAccountLog
.
getStartTime
().
toLocalDate
(),
false
,
null
,
LocalDateTime
.
now
(),
siteEn
,
jobAccountLog
.
getCompanyId
());
}
jobAmazonAdLogMapper
.
upsert
(
jobAmazonAdLog
);
jobAccountLogUpdateTime
(
jobAccountLog
);
}
}
catch
(
Exception
e
)
{
...
...
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