Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
bailuntec-datacenter
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
bailuntec-datacenter
Commits
776eb93e
Commit
776eb93e
authored
Dec 01, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fee
parent
dd99f46f
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
586 additions
and
2 deletions
+586
-2
AmazonAdJob.java
...mazon-ad/src/main/java/com/bailuntec/job/AmazonAdJob.java
+2
-2
AmazonJobService.java
...main/java/com/bailuntec/job/service/AmazonJobService.java
+357
-0
pom.xml
datacenter-base/base-sync-ebay/pom.xml
+64
-0
EbayJob.java
...se-sync-ebay/src/main/java/com/bailuntec/job/EbayJob.java
+30
-0
SampleApp.java
...-sync-ebay/src/main/java/com/bailuntec/job/SampleApp.java
+26
-0
EbayService.java
.../src/main/java/com/bailuntec/job/service/EbayService.java
+42
-0
application-prod.yml
...se/base-sync-ebay/src/main/resources/application-prod.yml
+32
-0
application-test.yml
...se/base-sync-ebay/src/main/resources/application-test.yml
+31
-0
SyncFeeService.java
...c/main/java/com/bailuntec/job/service/SyncFeeService.java
+1
-0
pom.xml
datacenter-base/pom.xml
+1
-0
No files found.
datacenter-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/AmazonAdJob.java
View file @
776eb93e
...
...
@@ -35,7 +35,7 @@ public class AmazonAdJob {
* </p>
*/
// @Scheduled(cron = "0 0 13 * * ?")
@Scheduled
(
cron
=
"0/1 * * * * ?"
)
//
@Scheduled(cron = "0/1 * * * * ?")
public
void
generateAmazonAdReport
()
{
log
.
info
(
"每天下午1点生成昨天的亚马逊广告报告 任务开始"
);
amazonJobService
.
generateAmazonAdReport
();
...
...
@@ -47,7 +47,7 @@ public class AmazonAdJob {
* 每小时下载未下载的报告
* </p>
*/
@Scheduled
(
cron
=
"0/1 * * * * ?"
)
//
@Scheduled(cron = "0/1 * * * * ?")
// @Scheduled(cron = "0 1 0/1 * * ?")
public
void
downloadAmazonAdReport
()
{
log
.
info
(
"每小时下载未下载的报告 任务开始"
);
...
...
datacenter-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/service/AmazonJobService.java
0 → 100644
View file @
776eb93e
package
com
.
bailuntec
.
job
.
service
;
import
com.alibaba.fastjson.JSON
;
import
com.bailuntec.api.amazon.AmazonAdApi
;
import
com.bailuntec.api.amazon.request.AmazonDisplayReportReq
;
import
com.bailuntec.api.amazon.request.AmazonProductsReportReq
;
import
com.bailuntec.api.amazon.request.AmazonURI
;
import
com.bailuntec.api.amazon.response.AmazonAdReportResp
;
import
com.bailuntec.application.IDcBaseFinanceAmazonAdProductService
;
import
com.bailuntec.common.BeanUtils
;
import
com.bailuntec.common.JsonUtilByFsJson
;
import
com.bailuntec.common.JsonUtilByJackson
;
import
com.bailuntec.common.StringUtils
;
import
com.bailuntec.domain.DcBaseCompanyAccount
;
import
com.bailuntec.domain.DcBaseFinanceAmazonAdProduct
;
import
com.bailuntec.domain.DcJobConfig
;
import
com.bailuntec.domain.JobAmazonAdLog
;
import
com.bailuntec.infrastructure.mapper.DcBaseCompanyAccountMapper
;
import
com.bailuntec.infrastructure.mapper.DcBaseFinanceAmazonAdProductMapper
;
import
com.bailuntec.infrastructure.mapper.DcJobConfigMapper
;
import
com.bailuntec.infrastructure.mapper.JobAmazonAdLogMapper
;
import
com.bailuntec.infrastructure.util.CallBailunSystemUtil
;
import
com.bailuntec.infrastructure.util.enumerate.CurrencyType
;
import
com.bailuntec.job.AmazonAdProduct
;
import
com.bailuntec.pojo.AmazonAdAuth
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.google.common.reflect.TypeToken
;
import
feign.FeignException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.lang.reflect.Type
;
import
java.math.BigDecimal
;
import
java.net.URI
;
import
java.time.LocalDate
;
import
java.time.LocalDateTime
;
import
java.time.format.DateTimeFormatter
;
import
java.time.temporal.ChronoUnit
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
java.util.zip.GZIPInputStream
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/11/12 3:06 下午
*/
@Slf4j
@Service
public
class
AmazonJobService
{
@Resource
private
DcBaseCompanyAccountMapper
dcBaseCompanyAccountMapper
;
@Resource
private
JobAmazonAdLogMapper
jobAmazonAdLogMapper
;
@Resource
private
AmazonAdApi
amazonAdApi
;
@Resource
DcJobConfigMapper
dcJobConfigMapper
;
private
static
final
String
baseAdAmazonReportGenerate
=
"base-ad-amazon-report-generate"
;
private
static
final
String
baseAdAmazonReportDownload
=
"base-ad-amazon-report-download"
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
generateAmazonAdReport
()
{
DcJobConfig
dcJobConfig
=
dcJobConfigMapper
.
selectByName
(
baseAdAmazonReportGenerate
);
//需要生成的帐号列表
List
<
DcBaseCompanyAccount
>
dcBaseCompanyAccountList
=
dcBaseCompanyAccountMapper
.
selectList
(
new
LambdaQueryWrapper
<
DcBaseCompanyAccount
>()
.
eq
(
DcBaseCompanyAccount:
:
getPlatformId
,
DcBaseCompanyAccount
.
BLT_PLATFORM_ID
)
.
ne
(
DcBaseCompanyAccount:
:
getAmazonAdAuthJson
,
""
))
.
stream
()
.
filter
(
dcBaseCompanyAccount
->
StringUtils
.
isNotEmpty
(
dcBaseCompanyAccount
.
getAmazonAdAuthJson
().
trim
()))
.
collect
(
Collectors
.
toList
());
//需要生成报告时间:昨天
LocalDate
localDate
=
dcJobConfig
.
getStartTime
().
minusHours
(
36
).
toLocalDate
();
this
.
generateAmazonAdReport
(
dcBaseCompanyAccountList
,
localDate
,
localDate
);
dcJobConfigMapper
.
updateById
(
dcJobConfig
.
refresh
());
}
public
void
generateAmazonAdReport
(
List
<
DcBaseCompanyAccount
>
dcBaseCompanyAccountList
,
LocalDate
start
,
LocalDate
end
)
{
//获取时间区间reportDate列表
List
<
LocalDate
>
localDateList
=
Stream
.
iterate
(
start
,
localDate
->
localDate
.
plusDays
(
1
))
.
limit
(
ChronoUnit
.
DAYS
.
between
(
start
,
end
)
+
1
)
.
collect
(
Collectors
.
toList
());
//双重循环生成报告
dcBaseCompanyAccountList
.
forEach
(
dcBaseCompanyAccount
->
localDateList
.
forEach
(
reportDate
->
{
try
{
this
.
generateAmazonAdReport
(
dcBaseCompanyAccount
,
reportDate
);
}
catch
(
Exception
e
)
{
log
.
error
(
"生成报告失败 帐号id:{},日期:{}"
,
dcBaseCompanyAccount
.
getAccountId
(),
reportDate
,
e
);
}
}));
}
/**
* <p>
* 生成指定帐号指定某一天日期的所有类型亚马逊广告报告
* 包括:
* </p>
*
* <li>品牌展示</li>
* <li>商品推广</li>
*
* @param dcBaseCompanyAccount dcBaseCompanyAccount
* @param reportDate reportDate
*/
private
void
generateAmazonAdReport
(
DcBaseCompanyAccount
dcBaseCompanyAccount
,
LocalDate
reportDate
)
{
/*1.商品展示报告生成*/
AmazonAdReportResp
productAdResp
=
this
.
reportAdProduct
(
dcBaseCompanyAccount
,
reportDate
);
//处理商品推广报告结果
this
.
handleAmazonAdReportResp
(
dcBaseCompanyAccount
,
productAdResp
);
/*1.品牌展示报告生成*/
AmazonAdReportResp
displayResp
=
this
.
reportDisplay
(
dcBaseCompanyAccount
,
reportDate
);
//处理品牌展示报告结果
this
.
handleAmazonAdReportResp
(
dcBaseCompanyAccount
,
displayResp
);
}
/**
* <p>
* 获取指定账号和指定日期的商品推广生成报告响应
* 可以看成{@link AmazonAdApi#report(URI, AmazonProductsReportReq, String, String, String, String)} 的代理
* </p>
*
* @param dcBaseCompanyAccount 帐号
* @param reportDate 指定日期
* @return 生成商品推广报告响应
*/
public
AmazonAdReportResp
reportAdProduct
(
DcBaseCompanyAccount
dcBaseCompanyAccount
,
LocalDate
reportDate
)
{
AmazonAdAuth
amazonAdAuth
=
JsonUtilByFsJson
.
jsonToBean
(
dcBaseCompanyAccount
.
getAmazonAdAuthJson
(),
AmazonAdAuth
.
class
);
AmazonProductsReportReq
req
=
new
AmazonProductsReportReq
();
req
.
setReportDate
(
reportDate
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
)));
req
.
setMetrics
(
"campaignName,campaignId,adGroupName,adGroupId,impressions,clicks,cost,currency,asin,sku,attributedConversions1d,attributedConversions7d,attributedConversions14d,attributedConversions30d,attributedConversions1dSameSKU,attributedConversions7dSameSKU,attributedConversions14dSameSKU,attributedConversions30dSameSKU,attributedUnitsOrdered1d,attributedUnitsOrdered7d,attributedUnitsOrdered14d,attributedUnitsOrdered30d,attributedSales1d,attributedSales7d,attributedSales14d,attributedSales30d,attributedSales1dSameSKU,attributedSales7dSameSKU,attributedSales14dSameSKU,attributedSales30dSameSKU,attributedUnitsOrdered1dSameSKU,attributedUnitsOrdered7dSameSKU,attributedUnitsOrdered14dSameSKU,attributedUnitsOrdered30dSameSKU"
);
String
reportResp
=
amazonAdApi
.
report
(
AmazonURI
.
getAmazonAdSiteUri
(
dcBaseCompanyAccount
.
getSiteEn
()),
req
,
"productAds"
,
amazonAdAuth
.
getAccessToken
(),
amazonAdAuth
.
getClientId
(),
amazonAdAuth
.
getProfileId
());
log
.
debug
(
JsonUtilByFsJson
.
beanToJson
(
reportResp
));
//反序列化响应报文
AmazonAdReportResp
resp
=
JsonUtilByFsJson
.
jsonToBean
(
reportResp
,
AmazonAdReportResp
.
class
);
resp
.
setJobAmazonLogType
(
AmazonAdReportResp
.
productAds
);
resp
.
setReportDate
(
reportDate
);
return
resp
;
}
/**
* <p>
* 获取指定账号和指定日期的品牌展示生成报告响应
* 可以看成{@link AmazonAdApi#reportDisPlay(URI, AmazonDisplayReportReq, String, String, String, String)} 的代理
* </p>
*
* @param dcBaseCompanyAccount 帐号
* @param reportDate 指定日期
* @return 生成品牌展示报告响应
*/
public
AmazonAdReportResp
reportDisplay
(
DcBaseCompanyAccount
dcBaseCompanyAccount
,
LocalDate
reportDate
)
{
AmazonAdAuth
amazonAdAuth
=
JsonUtilByFsJson
.
jsonToBean
(
dcBaseCompanyAccount
.
getAmazonAdAuthJson
(),
AmazonAdAuth
.
class
);
AmazonDisplayReportReq
req
=
new
AmazonDisplayReportReq
();
req
.
setReportDate
(
reportDate
.
format
(
DateTimeFormatter
.
ofPattern
(
"yyyyMMdd"
)));
req
.
setMetrics
(
"campaignName,campaignId,impressions,adGroupId,adGroupName,asin,sku,adId,clicks,cost,currency,attributedConversions1d,attributedConversions7d,attributedConversions14d,attributedConversions30d,attributedConversions1dSameSKU,attributedConversions7dSameSKU,attributedConversions14dSameSKU,attributedConversions30dSameSKU,attributedUnitsOrdered1d,attributedUnitsOrdered7d,attributedUnitsOrdered14d,attributedUnitsOrdered30d,attributedSales1d,attributedSales7d,attributedSales14d,attributedSales30d,attributedSales1dSameSKU,attributedSales7dSameSKU,attributedSales14dSameSKU,attributedSales30dSameSKU"
);
req
.
setTactic
(
"T00020"
);
String
reportResp
=
amazonAdApi
.
reportDisPlay
(
AmazonURI
.
getAmazonAdSiteUri
(
dcBaseCompanyAccount
.
getSiteEn
()),
req
,
"productAds"
,
amazonAdAuth
.
getAccessToken
(),
amazonAdAuth
.
getClientId
(),
amazonAdAuth
.
getProfileId
());
log
.
debug
(
JsonUtilByFsJson
.
beanToJson
(
reportResp
));
//反序列化响应报文
AmazonAdReportResp
resp
=
JsonUtilByFsJson
.
jsonToBean
(
reportResp
,
AmazonAdReportResp
.
class
);
resp
.
setJobAmazonLogType
(
AmazonAdReportResp
.
display
);
resp
.
setReportDate
(
reportDate
);
return
resp
;
}
/**
* <p>
* 处理亚马逊生成报告响应报文
* 新增或者更新 {@link JobAmazonAdLog}状态
* </p>
*
* @param resp
*/
private
void
handleAmazonAdReportResp
(
DcBaseCompanyAccount
dcBaseCompanyAccount
,
AmazonAdReportResp
resp
)
{
//新增或者更新报告状态为未下载
JobAmazonAdLog
jobAmazonAdLog
=
jobAmazonAdLogMapper
.
selectOne
(
new
LambdaQueryWrapper
<
JobAmazonAdLog
>()
.
eq
(
JobAmazonAdLog:
:
getAccountId
,
dcBaseCompanyAccount
.
getAccountId
())
.
eq
(
JobAmazonAdLog:
:
getCompanyId
,
dcBaseCompanyAccount
.
getCompanyId
())
.
eq
(
JobAmazonAdLog:
:
getReportDate
,
resp
.
getReportDate
())
.
eq
(
JobAmazonAdLog:
:
getType
,
resp
.
getJobAmazonLogType
()));
if
(
jobAmazonAdLog
==
null
)
{
jobAmazonAdLog
=
new
JobAmazonAdLog
(
null
,
dcBaseCompanyAccount
.
getAccountId
(),
resp
.
getReportId
(),
resp
.
getReportDate
(),
false
,
LocalDateTime
.
now
(),
LocalDateTime
.
now
(),
dcBaseCompanyAccount
.
getSiteEn
(),
dcBaseCompanyAccount
.
getCompanyId
(),
resp
.
getJobAmazonLogType
());
jobAmazonAdLogMapper
.
insert
(
jobAmazonAdLog
);
log
.
info
(
"新增一条亚马逊报告 帐号id:{},报告日期:{}"
,
jobAmazonAdLog
.
getAccountId
(),
jobAmazonAdLog
.
getReportDate
());
}
//如果已经生成了报告 是否设置为需要重新下载?//yes
else
{
jobAmazonAdLog
.
setReportId
(
resp
.
getReportId
());
jobAmazonAdLog
.
setStatus
(
false
);
jobAmazonAdLog
.
setBjModified
(
LocalDateTime
.
now
());
jobAmazonAdLogMapper
.
updateById
(
jobAmazonAdLog
);
log
.
info
(
"更新一条报告 帐号id:{},报告日期:{}"
,
jobAmazonAdLog
.
getAccountId
(),
jobAmazonAdLog
.
getReportDate
());
}
}
@Resource
private
DcBaseFinanceAmazonAdProductMapper
dcBaseFinanceAmazonAdProductMapper
;
public
void
downloadAmazonAdReport
()
{
DcJobConfig
dcJobConfig
=
dcJobConfigMapper
.
selectByName
(
baseAdAmazonReportDownload
);
List
<
JobAmazonAdLog
>
jobAmazonAdLogList
=
jobAmazonAdLogMapper
.
selectList
(
new
LambdaQueryWrapper
<
JobAmazonAdLog
>()
.
eq
(
JobAmazonAdLog:
:
getStatus
,
false
));
jobAmazonAdLogList
.
forEach
(
jobAmazonAdLog
->
{
try
{
this
.
downloadAmazonAdReport
(
jobAmazonAdLog
);
}
catch
(
FeignException
ex
)
{
log
.
error
(
"下载报告失败:{}"
,
ex
.
getMessage
(),
ex
);
}
});
dcJobConfigMapper
.
updateById
(
dcJobConfig
.
refresh
());
}
@Resource
IDcBaseFinanceAmazonAdProductService
dcBaseFinanceAmazonAdProductService
;
/**
* <p>根据生成的报告下载报告 并且生成亚马逊广告费用明细</p>
* <li>根据组合唯一键判断</li>
* <li> 如果费用明细不存在就新增</li>
* <li> 如果费用明细存在就更新</li>
*
* @param jobAmazonAdLog 生成的报告记录
*/
private
void
downloadAmazonAdReport
(
JobAmazonAdLog
jobAmazonAdLog
)
{
DcBaseCompanyAccount
dcBaseCompanyAccount
=
dcBaseCompanyAccountMapper
.
selectOne
(
new
LambdaQueryWrapper
<
DcBaseCompanyAccount
>()
.
eq
(
DcBaseCompanyAccount:
:
getCompanyId
,
jobAmazonAdLog
.
getCompanyId
())
.
eq
(
DcBaseCompanyAccount:
:
getAccountId
,
jobAmazonAdLog
.
getAccountId
()));
AmazonAdAuth
amazonAdAuth
=
JSON
.
parseObject
(
dcBaseCompanyAccount
.
getAmazonAdAuthJson
(),
AmazonAdAuth
.
class
);
dcBaseFinanceAmazonAdProductMapper
.
delete
(
new
LambdaQueryWrapper
<
DcBaseFinanceAmazonAdProduct
>()
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getCompanyId
,
jobAmazonAdLog
.
getCompanyId
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getAccountId
,
jobAmazonAdLog
.
getAccountId
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getReportDate
,
jobAmazonAdLog
.
getReportDate
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getType
,
jobAmazonAdLog
.
getType
()));
byte
[]
response
=
amazonAdApi
.
reportDownload
(
AmazonURI
.
getAmazonAdSiteUri
(
dcBaseCompanyAccount
.
getSiteEn
()),
jobAmazonAdLog
.
getReportId
(),
amazonAdAuth
.
getAccessToken
(),
amazonAdAuth
.
getClientId
(),
amazonAdAuth
.
getProfileId
());
try
(
GZIPInputStream
gzipInputStream
=
new
GZIPInputStream
(
new
ByteArrayInputStream
(
response
)))
{
@SuppressWarnings
(
"all"
)
Type
type
=
new
TypeToken
<
List
<
AmazonAdProduct
>>()
{
}.
getType
();
List
<
AmazonAdProduct
>
reportDownloadRespList
=
JSON
.
parseObject
(
gzipInputStream
,
type
);
log
.
debug
(
JsonUtilByJackson
.
writeValueAsString
(
reportDownloadRespList
));
for
(
AmazonAdProduct
downloadAdProduct
:
reportDownloadRespList
)
{
if
(
downloadAdProduct
.
getCost
()
!=
null
&&
BigDecimal
.
ZERO
.
compareTo
(
downloadAdProduct
.
getCost
())
<
0
)
{
LambdaQueryWrapper
<
DcBaseFinanceAmazonAdProduct
>
wrapper
=
new
LambdaQueryWrapper
<
DcBaseFinanceAmazonAdProduct
>()
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getAccountId
,
jobAmazonAdLog
.
getAccountId
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getCompanyId
,
jobAmazonAdLog
.
getCompanyId
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getType
,
jobAmazonAdLog
.
getType
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getReportDate
,
jobAmazonAdLog
.
getReportDate
())
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getCampaignId
,
downloadAdProduct
.
getCampaignId
());
if
(
StringUtils
.
isNotEmpty
(
downloadAdProduct
.
getAdGroupId
()))
{
wrapper
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getAdGroupId
,
downloadAdProduct
.
getAdGroupId
());
}
if
(
StringUtils
.
isNotEmpty
(
downloadAdProduct
.
getSku
()))
{
wrapper
.
eq
(
DcBaseFinanceAmazonAdProduct:
:
getSku
,
downloadAdProduct
.
getSku
());
}
DcBaseFinanceAmazonAdProduct
dcBaseFinanceAmazonAdProduct
=
dcBaseFinanceAmazonAdProductMapper
.
selectOne
(
wrapper
);
if
(
dcBaseFinanceAmazonAdProduct
==
null
)
{
dcBaseFinanceAmazonAdProduct
=
new
DcBaseFinanceAmazonAdProduct
();
}
BeanUtils
.
copyProperties
(
downloadAdProduct
,
dcBaseFinanceAmazonAdProduct
);
dcBaseFinanceAmazonAdProduct
.
setAccountId
(
jobAmazonAdLog
.
getAccountId
());
dcBaseFinanceAmazonAdProduct
.
setCompanyId
(
jobAmazonAdLog
.
getCompanyId
());
dcBaseFinanceAmazonAdProduct
.
setReportDate
(
jobAmazonAdLog
.
getReportDate
());
dcBaseFinanceAmazonAdProduct
.
setType
(
jobAmazonAdLog
.
getType
());
dcBaseFinanceAmazonAdProduct
.
setExchangeRate
(
CallBailunSystemUtil
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
CNY
.
value
(),
jobAmazonAdLog
.
getReportDate
().
atStartOfDay
()));
dcBaseFinanceAmazonAdProduct
.
setExchangeRateUsd
(
CallBailunSystemUtil
.
getExchangeRate
(
dcBaseFinanceAmazonAdProduct
.
getCurrency
(),
CurrencyType
.
USD
.
value
(),
jobAmazonAdLog
.
getReportDate
().
atStartOfDay
()));
dcBaseFinanceAmazonAdProduct
.
setBjModifyTime
(
LocalDateTime
.
now
());
try
{
dcBaseFinanceAmazonAdProductService
.
saveOrUpdate
(
dcBaseFinanceAmazonAdProduct
,
wrapper
);
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
}
log
.
info
(
"同步亚马逊广告费"
);
}
}
jobAmazonAdLog
.
setStatus
(
true
);
jobAmazonAdLog
.
setBjModified
(
LocalDateTime
.
now
());
jobAmazonAdLogMapper
.
updateById
(
jobAmazonAdLog
);
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
datacenter-base/base-sync-ebay/pom.xml
0 → 100644
View file @
776eb93e
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
datacenter-base
</artifactId>
<groupId>
com.bailuntec
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
base-sync-ebay
</artifactId>
<properties>
<maven.compiler.target>
1.8
</maven.compiler.target>
<maven.compiler.source>
1.8
</maven.compiler.source>
<maven.compiler.encoding>
UTF-8
</maven.compiler.encoding>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<maven-surefire-plugin.version>
2.18.1
</maven-surefire-plugin.version>
<maven.build.timestamp.format>
yyyyMMddHHmm
</maven.build.timestamp.format>
</properties>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
<version>
2.3.3.RELEASE
</version>
<configuration>
<mainClass>
com.bailuntec.job.SampleApp
</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
com.spotify
</groupId>
<artifactId>
docker-maven-plugin
</artifactId>
<version>
1.0.0
</version>
<configuration>
<skipDockerBuild>
false
</skipDockerBuild>
<imageName>
ccr.ccs.tencentyun.com/blt.data.job/base-sync-sample:${maven.build.timestamp}
</imageName>
<dockerDirectory>
src/main/docker
</dockerDirectory>
<resources>
<resource>
<targetPath>
/
</targetPath>
<directory>
${project.build.directory}
</directory>
<include>
${project.build.finalName}.jar
</include>
</resource>
</resources>
<serverId>
bailuntec-docker
</serverId>
</configuration>
</plugin>
</plugins>
</build>
</project>
datacenter-base/base-sync-ebay/src/main/java/com/bailuntec/job/EbayJob.java
0 → 100644
View file @
776eb93e
package
com
.
bailuntec
.
job
;
import
com.bailuntec.job.service.EbayService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.scheduling.annotation.Scheduled
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
@Slf4j
@Component
public
class
EbayJob
{
@Resource
EbayService
ebayService
;
@Scheduled
(
cron
=
"0 0/1 * * * ?"
)
public
void
baseSyncFinanceFee
()
{
try
{
log
.
info
(
"每分钟同步费用单 开始"
);
ebayService
.
sync
();
log
.
info
(
"每分钟同步费用单 结束"
);
}
catch
(
Exception
ex
)
{
log
.
error
(
"每分钟同步费用单 异常:"
,
ex
);
}
}
}
datacenter-base/base-sync-ebay/src/main/java/com/bailuntec/job/SampleApp.java
0 → 100644
View file @
776eb93e
package
com
.
bailuntec
.
job
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
import
org.springframework.cloud.openfeign.EnableFeignClients
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.scheduling.annotation.EnableScheduling
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/28 3:16 下午
*/
@SpringBootApplication
@EnableScheduling
@ComponentScan
(
"com.bailuntec"
)
@EnableFeignClients
(
basePackages
=
{
"com.bailuntec.api"
,
"com.bailuntec.*.api"
})
public
class
SampleApp
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
SampleApp
.
class
,
args
);
}
}
datacenter-base/base-sync-ebay/src/main/java/com/bailuntec/job/service/EbayService.java
0 → 100644
View file @
776eb93e
package
com
.
bailuntec
.
job
.
service
;
import
com.bailuntec.common.BeanUtils
;
import
com.bailuntec.common.ListUtil
;
import
com.bailuntec.cost.api.CostApi
;
import
com.bailuntec.cost.api.dto.CostDto
;
import
com.bailuntec.cost.api.dto.ManageCostDto
;
import
com.bailuntec.cost.api.response.CostResult
;
import
com.bailuntec.domain.DcBaseFinanceFee
;
import
com.bailuntec.domain.DcBaseFinanceLogistics
;
import
com.bailuntec.domain.DcBaseFinanceManagecost
;
import
com.bailuntec.domain.DcJobConfig
;
import
com.bailuntec.infrastructure.mapper.DcBaseFinanceFeeMapper
;
import
com.bailuntec.infrastructure.mapper.DcBaseFinanceLogisticsMapper
;
import
com.bailuntec.infrastructure.mapper.DcBaseFinanceManagecostMapper
;
import
com.bailuntec.infrastructure.mapper.DcJobConfigMapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.github.pagehelper.PageInfo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.annotation.Resource
;
import
java.util.List
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/10/7 11:38 上午
*/
@Slf4j
@Service
public
class
EbayService
{
public
void
sync
()
{
}
}
datacenter-base/base-sync-ebay/src/main/resources/application-prod.yml
0 → 100644
View file @
776eb93e
spring
:
# 服务名称
application
:
name
:
base-sync-sample
# 数据配置
datasource
:
url
:
jdbc:mysql://10.0.8.15:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username
:
root
password
:
'
#7kfnymAM$Y9-Ntf'
driver-class-name
:
com.mysql.jdbc.Driver
main
:
allow-bean-definition-overriding
:
true
#mybatis plus 配置
mybatis-plus
:
mapper-locations
:
-
classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign
:
hystrix
:
enabled
:
false
client
:
config
:
default
:
connectTimeout
:
30000
readTimeout
:
30000
server
:
port
:
8080
datacenter-base/base-sync-ebay/src/main/resources/application-test.yml
0 → 100644
View file @
776eb93e
spring
:
# 服务名称
application
:
name
:
base-sync-sample
# 数据配置
datasource
:
url
:
jdbc:mysql://gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
username
:
root
password
:
'
#7kfnymAM$Y9-Ntf'
driver-class-name
:
com.mysql.jdbc.Driver
main
:
allow-bean-definition-overriding
:
true
#mybatis plus 配置
mybatis-plus
:
mapper-locations
:
-
classpath*:com/bailuntec/mapper/*.xml
# configuration:
# log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
feign
:
hystrix
:
enabled
:
false
client
:
config
:
default
:
connectTimeout
:
30000
readTimeout
:
30000
server
:
port
:
1224
datacenter-base/base-sync-fee/src/main/java/com/bailuntec/job/service/SyncFeeService.java
View file @
776eb93e
...
...
@@ -63,6 +63,7 @@ public class SyncFeeService {
result
.
getData
().
forEach
(
costDto
->
{
DcBaseFinanceFee
dcBaseFinanceFee
=
new
DcBaseFinanceFee
();
BeanUtils
.
copyProperties
(
costDto
,
dcBaseFinanceFee
,
"id"
);
dcBaseFinanceFee
.
setCreateTime
(
LocalDateTime
.
ofInstant
(
costDto
.
getCreateTime
().
toInstant
(),
ZoneId
.
systemDefault
()));
//更新
int
update
=
dcBaseFinanceFeeMapper
.
update
(
dcBaseFinanceFee
,
new
LambdaQueryWrapper
<
DcBaseFinanceFee
>()
.
eq
(
DcBaseFinanceFee:
:
getCostNo
,
dcBaseFinanceFee
.
getCostNo
()));
...
...
datacenter-base/pom.xml
View file @
776eb93e
...
...
@@ -22,6 +22,7 @@
<module>
base-sync-oms-order
</module>
<module>
base-sync-company
</module>
<module>
base-sync-purchase-details
</module>
<module>
base-sync-ebay
</module>
</modules>
</project>
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