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
bltdc
dc-java
Commits
bfa9e6b7
Commit
bfa9e6b7
authored
Aug 19, 2020
by
huluobin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
亚马逊广告
parent
ce253bdd
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
282 additions
and
98 deletions
+282
-98
README.md
README.md
+2
-3
Application.java
...nc-amazon-ad/src/main/java/com/bailuntec/Application.java
+14
-6
AmazonAdDownloadReportJob.java
...ain/java/com/bailuntec/job/AmazonAdDownloadReportJob.java
+18
-7
AmazonAdGenerateReportIdJob.java
...n/java/com/bailuntec/job/AmazonAdGenerateReportIdJob.java
+29
-22
job.properties
...ase/base-sync-amazon-ad/src/main/resources/job.properties
+5
-2
AmazonAdProductTest.java
...ase-sync-amazon-ad/src/test/java/AmazonAdProductTest.java
+61
-5
AmazonAdDownloadReportJobTest.java
...java/com/bailuntec/job/AmazonAdDownloadReportJobTest.java
+56
-0
CompanyAccountSyncJob.java
...rc/main/java/com/bailuntec/job/CompanyAccountSyncJob.java
+3
-1
CompanyAccountSyncJobTest.java
...est/java/com/bailuntec/job/CompanyAccountSyncJobTest.java
+20
-0
const.properties
...e/base-sync-stock-wms/src/main/resources/const.properties
+5
-6
FbaStockJobTest.java
...-wms/src/test/java/com/bailuntec/job/FbaStockJobTest.java
+31
-0
DcMidTransitMapper.java
...rc/main/java/com/bailuntec/mapper/DcMidTransitMapper.java
+2
-2
DcMidTransitMapper.xml
...src/main/java/com/bailuntec/mapper/DcMidTransitMapper.xml
+0
-0
logback.xml
data-common/src/main/resources/logback.xml
+2
-0
CalculateCostFirstJob.java
...rc/main/java/com/bailuntec/job/CalculateCostFirstJob.java
+11
-2
job.properties
...id-calculate-cost-first/src/main/resources/job.properties
+10
-10
CostFirstTest.java
...mid-calculate-cost-first/src/test/java/CostFirstTest.java
+13
-32
No files found.
README.md
View file @
bfa9e6b7
...
...
@@ -46,7 +46,7 @@
[
Ebay费用开发文档
](
https://developer.ebay.com/api-docs/developer/analytics/overview.html
)
[
Amazon广告费用接口文档
](
https://advertising.amazon.com/API/docs/v2/reference/reports
)
[
Amazon广告费用接口文档
](
https://advertising.amazon.com
**
/API/docs/v2/reference/reports
)
### 解释说明
...
...
@@ -107,4 +107,4 @@
|-finance-balance-sheet 资产负债表
|-data-show show-数据价值展现
|-show-auto-turnover 自动周转逻辑
```
\ No newline at end of file
```
data-base/base-sync-amazon-ad/src/main/java/com/bailuntec/Application.java
View file @
bfa9e6b7
...
...
@@ -37,17 +37,25 @@ public class Application {
}
private
static
LiteJobConfiguration
createJobConfiguration1
()
{
JobCoreConfiguration
simpleCoreConfig
=
JobCoreConfiguration
.
newBuilder
(
propertiesUtil
.
getPropertyAsString
(
"JOB_NAME_AD_PRODUCT_GENERATE"
),
propertiesUtil
.
getPropertyAsString
(
"JOB_CRON_AD_PRODUCT_GENERATE"
),
propertiesUtil
.
getPropertyAsInt
(
"SHARDING_TOTAL_COUNT"
)).
build
();
JobCoreConfiguration
simpleCoreConfig
=
JobCoreConfiguration
.
newBuilder
(
propertiesUtil
.
getPropertyAsString
(
"JOB_NAME_AD_PRODUCT_GENERATE"
)
,
propertiesUtil
.
getPropertyAsString
(
"JOB_CRON_AD_PRODUCT_GENERATE"
)
,
propertiesUtil
.
getPropertyAsInt
(
"SHARDING_TOTAL_COUNT"
))
.
build
();
SimpleJobConfiguration
simpleJobConfig
=
new
SimpleJobConfiguration
(
simpleCoreConfig
,
AmazonAdGenerateReportIdJob
.
class
.
getCanonicalName
());
LiteJobConfiguration
simpleJobRootConfig
=
LiteJobConfiguration
.
newBuilder
(
simpleJobConfig
).
build
();
return
simpleJobRootConfig
;
return
LiteJobConfiguration
.
newBuilder
(
simpleJobConfig
).
build
();
}
private
static
LiteJobConfiguration
createJobConfiguration2
()
{
JobCoreConfiguration
simpleCoreConfig
=
JobCoreConfiguration
.
newBuilder
(
propertiesUtil
.
getPropertyAsString
(
"JOB_NAME_AD_PRODUCT_DOWNLOAD"
),
propertiesUtil
.
getPropertyAsString
(
"JOB_CRON_AD_PRODUCT_DOWNLOAD"
),
propertiesUtil
.
getPropertyAsInt
(
"SHARDING_TOTAL_COUNT"
)).
build
();
JobCoreConfiguration
simpleCoreConfig
=
JobCoreConfiguration
.
newBuilder
(
propertiesUtil
.
getPropertyAsString
(
"JOB_NAME_AD_PRODUCT_DOWNLOAD"
),
propertiesUtil
.
getPropertyAsString
(
"JOB_CRON_AD_PRODUCT_DOWNLOAD"
),
propertiesUtil
.
getPropertyAsInt
(
"SHARDING_TOTAL_COUNT"
))
.
build
();
SimpleJobConfiguration
simpleJobConfig
=
new
SimpleJobConfiguration
(
simpleCoreConfig
,
AmazonAdDownloadReportJob
.
class
.
getCanonicalName
());
LiteJobConfiguration
simpleJobRootConfig
=
LiteJobConfiguration
.
newBuilder
(
simpleJobConfig
).
build
();
return
simpleJobRootConfig
;
return
LiteJobConfiguration
.
newBuilder
(
simpleJobConfig
).
build
();
}
private
static
JobEventConfiguration
createJobEventConfiguration
()
{
...
...
data-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/AmazonAdDownloadReportJob.java
View file @
bfa9e6b7
package
com
.
bailuntec
.
job
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.util.IOUtils
;
import
com.bailuntec.domain.entity.DcBaseCompanyAccount
;
import
com.bailuntec.domain.entity.DcBaseFinanceAmazonAdProduct
;
import
com.bailuntec.domain.entity.JobAmazonAdLog
;
...
...
@@ -31,6 +32,7 @@ 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
;
...
...
@@ -61,7 +63,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
}
}
p
rivate
void
handleReport
(
JobAmazonAdLog
jobAmazonAdLog
,
AmazonAdAuth
amazonAdAuth
,
String
shardParam
)
{
p
ublic
void
handleReport
(
JobAmazonAdLog
jobAmazonAdLog
,
AmazonAdAuth
amazonAdAuth
,
String
shardParam
)
{
Response
response
=
null
;
GZIPInputStream
gzin
=
null
;
Request
request
=
new
Request
.
Builder
()
...
...
@@ -76,13 +78,13 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
try
{
response
=
client
.
newCall
(
request
).
execute
();
if
(
response
.
isSuccessful
())
{
//注意这个接口是必须用gzip
gzin
=
new
GZIPInputStream
(
response
.
body
().
byteStream
());
log
.
warn
(
"开始解析账号Id为"
+
jobAmazonAdLog
.
getAccountId
()
+
"的Report----"
+
jobAmazonAdLog
.
getReportId
()
+
", 文件大小为"
+
response
.
body
().
contentLength
());
Gson
gson
=
new
Gson
();
Reader
reader
=
new
InputStreamReader
(
response
.
body
().
byteStream
());
Type
type
=
new
TypeToken
<
List
<
AmazonAdProduct
>>()
{
}.
getType
();
List
<
AmazonAdProduct
>
amazonAdProductList
=
gson
.
fromJson
(
new
InputStreamReader
(
response
.
body
().
byteStream
()
),
type
);
List
<
AmazonAdProduct
>
amazonAdProductList
=
gson
.
fromJson
(
new
InputStreamReader
(
gzin
),
type
);
log
.
warn
(
"账号Id"
+
jobAmazonAdLog
.
getAccountId
()
+
"的Report解析完成"
);
gzin
.
close
();
response
.
close
();
...
...
@@ -137,7 +139,7 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
}
}
p
rivate
void
downloadReport
(
JobAmazonAdLog
jobAmazonAdLog
,
String
shardParam
)
{
p
ublic
void
downloadReport
(
JobAmazonAdLog
jobAmazonAdLog
,
String
shardParam
)
{
DcBaseCompanyAccount
dcBaseCompanyAccount
=
getToken
(
jobAmazonAdLog
);
AmazonAdAuth
amazonAdAuth
=
JSON
.
parseObject
(
dcBaseCompanyAccount
.
getAmazonAdAuthJson
(),
AmazonAdAuth
.
class
);
handleReport
(
jobAmazonAdLog
,
amazonAdAuth
,
shardParam
);
...
...
@@ -145,14 +147,22 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
private
DcBaseCompanyAccount
getToken
(
JobAmazonAdLog
jobAmazonAdLog
)
{
DcBaseCompanyAccountMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseCompanyAccountMapper
.
class
);
return
mapper
.
selectOneByExample
(
DcBaseCompanyAccountExample
.
newAndCreateCriteria
().
andCompanyIdEqualTo
(
jobAmazonAdLog
.
getCompanyId
()).
andAccountIdEqualTo
(
jobAmazonAdLog
.
getAccountId
()).
example
());
return
mapper
.
selectOneByExample
(
DcBaseCompanyAccountExample
.
newAndCreateCriteria
()
.
andCompanyIdEqualTo
(
jobAmazonAdLog
.
getCompanyId
())
.
andAccountIdEqualTo
(
jobAmazonAdLog
.
getAccountId
())
.
example
());
}
private
List
<
JobAmazonAdLog
>
findJobAmazonAdLogList
(
ShardingContext
shardingContext
,
int
pageSize
)
{
try
{
JobAmazonAdLogMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAmazonAdLogMapper
.
class
);
return
mapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andStatusEqualTo
(
false
).
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
)).
example
().
orderBy
(
"id"
).
limit
(
shardingContext
.
getShardingItem
()
*
pageSize
,
pageSize
));
return
mapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andStatusEqualTo
(
false
)
.
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
))
.
example
()
.
orderBy
(
"id"
)
.
limit
(
shardingContext
.
getShardingItem
()
*
pageSize
,
pageSize
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
...
...
@@ -164,7 +174,8 @@ public class AmazonAdDownloadReportJob implements SimpleJob {
private
int
countJobAmazonAdLog
()
{
try
{
JobAmazonAdLogMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAmazonAdLogMapper
.
class
);
return
(
int
)
mapper
.
countByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andStatusEqualTo
(
false
).
example
());
return
(
int
)
mapper
.
countByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andStatusEqualTo
(
false
).
example
());
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
...
...
data-base/base-sync-amazon-ad/src/main/java/com/bailuntec/job/AmazonAdGenerateReportIdJob.java
View file @
bfa9e6b7
This diff is collapsed.
Click to expand it.
data-base/base-sync-amazon-ad/src/main/resources/job.properties
View file @
bfa9e6b7
...
...
@@ -9,8 +9,11 @@ EVENT_RDB_STORAGE_USERNAME=root
EVENT_RDB_STORAGE_PASSWORD
=
#7kfnymAM$Y9-Ntf
ZOOKEEPER_SERVER=172.31.255.120:2181
NAME_SPACE
=
data-center
JOB_NAME_AD_PRODUCT
=
base-sync-finance-amazon-ad-product
JOB_CRON_AD_PRODUCT
=
0 1 0/5 * * ? *
#SHARDING_TOTAL_COUNT=3
JOB_NAME_AD_PRODUCT_GENERATE
=
base-amazon-ad-product-generate
JOB_CRON_AD_PRODUCT_GENERATE
=
0 1
0
/1 * * ? *
JOB_CRON_AD_PRODUCT_GENERATE
=
0 1
12
/1 * * ? *
JOB_NAME_AD_PRODUCT_DOWNLOAD
=
base-amazon-ad-product-download
JOB_CRON_AD_PRODUCT_DOWNLOAD
=
0
2
0/1 * * ? *
JOB_CRON_AD_PRODUCT_DOWNLOAD
=
0
1
0/1 * * ? *
SHARDING_TOTAL_COUNT
=
2
data-base/base-sync-amazon-ad/src/test/java/AmazonAdProductTest.java
View file @
bfa9e6b7
import
com.bailuntec.domain.entity.JobAccountLog
;
import
com.bailuntec.domain.entity.JobAmazonAdLog
;
import
com.bailuntec.domain.entity.JobPointLog
;
import
com.bailuntec.domain.example.JobAmazonAdLogExample
;
import
com.bailuntec.job.AmazonAdDownloadReportJob
;
import
com.bailuntec.job.AmazonAdGenerateReportIdJob
;
import
com.bailuntec.mapper.JobAmazonAdLogMapper
;
import
com.bailuntec.utils.SessionUtil
;
import
com.dangdang.ddframe.job.api.ShardingContext
;
import
com.dangdang.ddframe.job.executor.ShardingContexts
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.jupiter.api.Test
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
import
java.time.LocalDateTime
;
import
java.util.HashMap
;
import
java.util.List
;
@Slf4j
...
...
@@ -20,10 +26,10 @@ public class AmazonAdProductTest {
Method
generateReportId
=
clazz
.
getDeclaredMethod
(
"generateReportId"
,
JobAccountLog
.
class
);
generateReportId
.
setAccessible
(
true
);
JobAccountLog
jobAccountLog
=
new
JobAccountLog
();
jobAccountLog
.
setStartTime
(
LocalDateTime
.
of
(
20
19
,
5
,
31
,
0
,
0
));
jobAccountLog
.
setEndTime
(
LocalDateTime
.
of
(
20
19
,
6
,
1
,
0
,
0
));
jobAccountLog
.
setStartTime
(
LocalDateTime
.
of
(
20
20
,
8
,
17
,
0
,
0
));
jobAccountLog
.
setEndTime
(
LocalDateTime
.
of
(
20
20
,
8
,
18
,
0
,
0
));
jobAccountLog
.
setCompanyId
(
1
);
jobAccountLog
.
setAccountId
(
572
);
jobAccountLog
.
setAccountId
(
1779
);
jobAccountLog
.
setIntervalTime
(
1
);
jobAccountLog
.
setJobName
(
"base-amazon-ad-product-generate"
);
generateReportId
.
invoke
(
clazz
.
newInstance
(),
jobAccountLog
);
...
...
@@ -37,7 +43,13 @@ public class AmazonAdProductTest {
generateReportId
.
setAccessible
(
true
);
try
{
JobAmazonAdLogMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAmazonAdLogMapper
.
class
);
List
<
JobAmazonAdLog
>
jobAmazonAdLogList
=
mapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andStatusEqualTo
(
false
).
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
)).
example
().
orderBy
(
"id"
).
limit
(
0
*
pageSize
,
pageSize
));
List
<
JobAmazonAdLog
>
jobAmazonAdLogList
=
mapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andStatusEqualTo
(
false
)
.
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
))
.
example
()
.
orderBy
(
"id"
)
.
limit
(
0
,
pageSize
));
if
(
jobAmazonAdLogList
!=
null
&&
!
jobAmazonAdLogList
.
isEmpty
())
{
for
(
JobAmazonAdLog
jobAmazonAdLog
:
jobAmazonAdLogList
)
{
generateReportId
.
invoke
(
clazz
.
newInstance
(),
jobAmazonAdLog
);
...
...
@@ -58,7 +70,15 @@ public class AmazonAdProductTest {
generateReportId
.
setAccessible
(
true
);
try
{
JobAmazonAdLogMapper
mapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAmazonAdLogMapper
.
class
);
List
<
JobAmazonAdLog
>
jobAmazonAdLogList
=
mapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
().
andStatusEqualTo
(
false
).
andIdEqualTo
(
1969
).
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
)).
example
().
orderBy
(
"id"
).
limit
(
0
*
pageSize
,
pageSize
));
List
<
JobAmazonAdLog
>
jobAmazonAdLogList
=
mapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andStatusEqualTo
(
false
)
.
andIdEqualTo
(
1969
)
.
andBjModifiedLessThan
(
LocalDateTime
.
now
().
minusMinutes
(
15
))
.
example
()
.
orderBy
(
"id"
)
.
limit
(
0
,
pageSize
));
if
(
jobAmazonAdLogList
!=
null
&&
!
jobAmazonAdLogList
.
isEmpty
())
{
for
(
JobAmazonAdLog
jobAmazonAdLog
:
jobAmazonAdLogList
)
{
generateReportId
.
invoke
(
clazz
.
newInstance
(),
jobAmazonAdLog
);
...
...
@@ -71,4 +91,40 @@ public class AmazonAdProductTest {
}
}
@Test
public
void
unDownload
()
{
JobAmazonAdLogMapper
jobAmazonAdLogMapper
=
SessionUtil
.
getSession
().
getMapper
(
JobAmazonAdLogMapper
.
class
);
AmazonAdDownloadReportJob
amazonAdDownloadReportJob
=
new
AmazonAdDownloadReportJob
();
jobAmazonAdLogMapper
.
selectByExample
(
JobAmazonAdLogExample
.
newAndCreateCriteria
()
.
andStatusEqualTo
(
false
)
.
example
())
.
forEach
(
jobAmazonAdLog
->
{
amazonAdDownloadReportJob
.
downloadReport
(
jobAmazonAdLog
,
null
);
});
}
@Test
public
void
testReport
()
{
AmazonAdGenerateReportIdJob
amazonAdGenerateReportIdJob
=
new
AmazonAdGenerateReportIdJob
();
AmazonAdDownloadReportJob
amazonAdDownloadReportJob
=
new
AmazonAdDownloadReportJob
();
amazonAdGenerateReportIdJob
.
executeJob
(
new
ShardingContext
(
new
ShardingContexts
(
null
,
"amazonAdGenerateReportIdJob"
,
1
,
null
,
new
HashMap
<>()),
0
),
new
JobPointLog
(
"amazonAdGenerateReportIdJob"
,
1
,
100
,
null
,
1
,
LocalDateTime
.
of
(
2020
,
4
,
1
,
0
,
0
),
LocalDateTime
.
of
(
2020
,
4
,
2
,
0
,
0
)));
amazonAdDownloadReportJob
.
execute
(
new
ShardingContext
(
new
ShardingContexts
(
null
,
"amazonAdDownloadReportJob"
,
1
,
null
,
new
HashMap
<>()),
0
));
}
}
data-base/base-sync-amazon-ad/src/test/java/com/bailuntec/job/AmazonAdDownloadReportJobTest.java
0 → 100644
View file @
bfa9e6b7
package
com
.
bailuntec
.
job
;
import
com.bailuntec.domain.pojo.AmazonAdProduct
;
import
com.dangdang.ddframe.job.api.ShardingContext
;
import
com.dangdang.ddframe.job.executor.ShardingContexts
;
import
com.google.gson.Gson
;
import
com.google.gson.reflect.TypeToken
;
import
lombok.extern.slf4j.Slf4j
;
import
okhttp3.OkHttpClient
;
import
okhttp3.Request
;
import
okhttp3.Response
;
import
org.junit.jupiter.api.Test
;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
java.lang.reflect.Type
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.zip.GZIPInputStream
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/19 11:39 上午
*/
@Slf4j
class
AmazonAdDownloadReportJobTest
{
@Test
void
execute
()
{
AmazonAdDownloadReportJob
amazonAdDownloadReportJob
=
new
AmazonAdDownloadReportJob
();
amazonAdDownloadReportJob
.
execute
(
new
ShardingContext
(
new
ShardingContexts
(
"x"
,
null
,
1
,
null
,
new
HashMap
<>()),
0
));
}
@Test
public
void
downloadReport
()
throws
IOException
{
Request
request
=
new
Request
.
Builder
()
.
url
(
"https://advertising-api-eu.amazon.com/v1/reports/amzn1.clicksAPI.v1.p35691.5F3CB79F.8b7bf3b1-49f4-42f5-aee3-948215758208/download/"
)
.
get
()
.
addHeader
(
"Authorization"
,
"Atza|IwEBIECxu5mURTbJo6LfkoB9et_xNpwUemnh7Nav426JfaTwoBQYhhXzn7SzrQDLBYTz0HEYlaCQeJp4okJbRvESaovFWbzP8Hg3poV4x9_YfteilpM0WHvtYoJbZj6BGK2WcAZyncZ1qgSoTHnTPzZuMyniev8BmcEO9UZTfOULeXN86Z7Anyq6Ta_XwA8m4sPUPftUg2Fz-9O6Hm618Z9TDxDdImf4TKyRSr9PXc75XIS_ACrKlK-MjU4ILI1qYgeckI1xpns69MmPJ5G2SvXqQBKSt1CJYq-ZfAqf4-e659SYkieyODjo3qXCyDQ7B9B4LGYxzut0L-WN9SQZO9keBwPtLFPK2StaYpk85F-QIAog6LR3RIdMhzl2Wh-H_JvY4MBEVD3z7HLUfTlFeQVCVuHONgCaBnMurNj6F5VtJ49oQ8J3qxzZx8Il1Jnli5D7cQU99h1MOqmIVk5Q_P-4hqiWVnCwydA9c0G-zho_bR_-bQ"
)
.
addHeader
(
"Amazon-Advertising-API-ClientId"
,
"amzn1.application-oa2-client.a68a22f3f5e44a5691e5780f1b31014c"
)
.
addHeader
(
"Amazon-Advertising-API-Scope"
,
"596170210050198"
)
.
addHeader
(
"Content-Type"
,
"application/json"
)
.
build
();
Response
response
=
new
OkHttpClient
().
newCall
(
request
).
execute
();
GZIPInputStream
inputStream
=
new
GZIPInputStream
(
response
.
body
().
byteStream
());
Type
type
=
new
TypeToken
<
List
<
AmazonAdProduct
>>()
{
}.
getType
();
List
<
AmazonAdProduct
>
amazonAdProductList
=
new
Gson
().
fromJson
(
new
InputStreamReader
(
inputStream
),
type
);
log
.
warn
(
"的Report解析完成"
);
}
}
data-base/base-sync-company/src/main/java/com/bailuntec/job/CompanyAccountSyncJob.java
View file @
bfa9e6b7
...
...
@@ -63,7 +63,9 @@ public class CompanyAccountSyncJob extends PointJob {
for
(
CompanyAccountInfo
companyAccountInfo
:
result
)
{
BeanUtils
.
copyProperties
(
dcBaseCompanyAccount
,
companyAccountInfo
);
dcBaseCompanyAccount
.
setBjModified
(
LocalDateTime
.
now
());
int
i
=
mapper
.
updateByExampleSelective
(
dcBaseCompanyAccount
,
DcBaseCompanyAccountExample
.
newAndCreateCriteria
().
andCompanyIdEqualTo
(
companyAccountInfo
.
getCompanyId
()).
andAccountIdEqualTo
(
companyAccountInfo
.
getAccountId
()).
example
());
int
i
=
mapper
.
updateByExampleSelective
(
dcBaseCompanyAccount
,
DcBaseCompanyAccountExample
.
newAndCreateCriteria
()
.
andCompanyIdEqualTo
(
companyAccountInfo
.
getCompanyId
())
.
andAccountIdEqualTo
(
companyAccountInfo
.
getAccountId
()).
example
());
if
(
i
==
0
)
{
mapper
.
insertSelective
(
dcBaseCompanyAccount
);
}
...
...
data-base/base-sync-company/src/test/java/com/bailuntec/job/CompanyAccountSyncJobTest.java
0 → 100644
View file @
bfa9e6b7
package
com
.
bailuntec
.
job
;
import
org.junit.jupiter.api.Test
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/19 11:32 上午
*/
class
CompanyAccountSyncJobTest
{
@Test
void
executeJob
()
{
CompanyAccountSyncJob
companyAccountSyncJob
=
new
CompanyAccountSyncJob
();
companyAccountSyncJob
.
executeJob
(
null
,
null
);
}
}
data-base/base-sync-stock-wms/src/main/resources/const.properties
View file @
bfa9e6b7
STOCK_FBA_URL
=
http://172.31.255.247/api/services/app/ThirdStockFbaService/GetFbaStocks
STOCK_WMS_URL
=
http://172.31.255.247/api/services/app/WMSStockService/SearchAllProductStockByPage
#
STOCK_FBA_URL=http://api.wms.bailuntec.com/api/services/app/ThirdStockFbaService/GetFbaStocks
#
STOCK_WMS_URL=http://api.wms.bailuntec.com/api/services/app/WMSStockService/SearchAllProductStockByPage
#
STOCK_FBA_URL=http://172.31.255.247/api/services/app/ThirdStockFbaService/GetFbaStocks
#
STOCK_WMS_URL=http://172.31.255.247/api/services/app/WMSStockService/SearchAllProductStockByPage
STOCK_FBA_URL
=
http://api.wms.bailuntec.com/api/services/app/ThirdStockFbaService/GetFbaStocks
STOCK_WMS_URL
=
http://api.wms.bailuntec.com/api/services/app/WMSStockService/SearchAllProductStockByPage
LOGISTICS_WMS_URL
=
http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetNormalDataQuery
LOGISTICS_WMS_RECONCILIATION_URL
=
http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetBaseDataQuery
\ No newline at end of file
LOGISTICS_WMS_RECONCILIATION_URL
=
http://wms.bailuntec.com/api/services/app/LogisticsReconciliationService/GetBaseDataQuery
data-base/base-sync-stock-wms/src/test/java/com/bailuntec/job/FbaStockJobTest.java
0 → 100644
View file @
bfa9e6b7
package
com
.
bailuntec
.
job
;
import
com.bailuntec.domain.entity.JobPointLog
;
import
com.dangdang.ddframe.job.api.ShardingContext
;
import
com.dangdang.ddframe.job.executor.ShardingContexts
;
import
org.junit.jupiter.api.Test
;
import
java.util.HashMap
;
/**
* <p>
*
* </p>
*
* @author robbendev
* @since 2020/8/18 4:49 下午
*/
class
FbaStockJobTest
{
@Test
void
executeJob
()
{
FbaStockJob
fbaStockJob
=
new
FbaStockJob
();
ShardingContext
shardingContext
=
new
ShardingContext
(
new
ShardingContexts
(
"1"
,
"fba-stock-job"
,
1
,
""
,
new
HashMap
<>()),
0
);
JobPointLog
jobPointLog
=
new
JobPointLog
();
jobPointLog
.
setPageIndex
(
1
);
jobPointLog
.
setPageSize
(
100
);
fbaStockJob
.
executeJob
(
shardingContext
,
jobPointLog
);
}
}
data-common/src/main/java/com/bailuntec/mapper/DcMidTransitMapper.java
View file @
bfa9e6b7
...
...
@@ -136,6 +136,7 @@ public interface DcMidTransitMapper {
List
<
OutStockQuantity
>
selectQuantityOutStock
();
List
<
PurchaseTransitQuantity
>
selectQuantityPurchaseTransit
();
List
<
TransferTransitQuantity
>
selectQuantityTransferTransit
();
void
calculateOutStock
(
@Param
(
"list"
)
List
<
OutStockQuantity
>
list
,
@Param
(
"localDateTime"
)
LocalDateTime
localDateTime
);
...
...
@@ -157,4 +158,4 @@ public interface DcMidTransitMapper {
void
calculateUnshipped
();
void
updateSkuUnitPrice
();
}
\ No newline at end of file
}
data-common/src/main/java/com/bailuntec/mapper/DcMidTransitMapper.xml
View file @
bfa9e6b7
This diff is collapsed.
Click to expand it.
data-common/src/main/resources/logback.xml
View file @
bfa9e6b7
...
...
@@ -34,3 +34,5 @@
</root>
</configuration>
data-mid/mid-calculate-cost-first/src/main/java/com/bailuntec/job/CalculateCostFirstJob.java
View file @
bfa9e6b7
...
...
@@ -51,7 +51,14 @@ public class CalculateCostFirstJob extends PointJob {
if
(
channelOrderIdList
!=
null
&&
channelOrderIdList
.
size
()
>
0
)
{
for
(
CostFirstOrder
costFirstOrder
:
channelOrderIdList
)
{
DcBaseCostFirstMapper
dcBaseCostFirstMapperFor
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseCostFirstMapper
.
class
);
List
<
DcBaseCostFirst
>
dcBaseCostFirsts
=
dcBaseCostFirstMapperFor
.
selectByExample
(
DcBaseCostFirstExample
.
newAndCreateCriteria
().
andChannelOrderIdEqualTo
(
costFirstOrder
.
getChannelOrderId
()).
andTransferOrderIdEqualTo
(
costFirstOrder
.
getTransferOrderId
()).
andBoxIdEqualTo
(
costFirstOrder
.
getBoxId
()).
andWarehouseCodeEqualTo
(
costFirstOrder
.
getWarehouseCode
()).
andHasCalculationEqualTo
(
false
).
example
());
List
<
DcBaseCostFirst
>
dcBaseCostFirsts
=
dcBaseCostFirstMapperFor
.
selectByExample
(
DcBaseCostFirstExample
.
newAndCreateCriteria
()
.
andChannelOrderIdEqualTo
(
costFirstOrder
.
getChannelOrderId
())
.
andTransferOrderIdEqualTo
(
costFirstOrder
.
getTransferOrderId
())
.
andBoxIdEqualTo
(
costFirstOrder
.
getBoxId
())
.
andWarehouseCodeEqualTo
(
costFirstOrder
.
getWarehouseCode
())
.
andHasCalculationEqualTo
(
false
)
.
example
());
handleChannelOrderSku
(
dcBaseCostFirsts
);
dcBaseCostFirstMapperFor
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseCostFirstMapper
.
class
);
dcBaseCostFirstMapperFor
.
updateHasCalculation
(
costFirstOrder
);
...
...
@@ -95,7 +102,9 @@ public class CalculateCostFirstJob extends PointJob {
// 头程费 = (调拨计算头程费+配置头程费)/2 平均值
dcMidCostFirst.setCostFirst((costFirst.add(dcMidCostFirstConfig.getCostFirstConfig())).divide(BigDecimal.valueOf(2), 3, RoundingMode.HALF_EVEN));
}*/
int
i
=
dcMidCostFirsMapper
.
updateByExampleSelective
(
dcMidCostFirst
,
DcMidCostFirstExample
.
newAndCreateCriteria
().
andBailunSkuEqualTo
(
dcMidCostFirst
.
getBailunSku
()).
andWarehouseCodeEqualTo
(
dcMidCostFirst
.
getWarehouseCode
()).
example
());
int
i
=
dcMidCostFirsMapper
.
updateByExampleSelective
(
dcMidCostFirst
,
DcMidCostFirstExample
.
newAndCreateCriteria
()
.
andBailunSkuEqualTo
(
dcMidCostFirst
.
getBailunSku
())
.
andWarehouseCodeEqualTo
(
dcMidCostFirst
.
getWarehouseCode
()).
example
());
if
(
i
==
0
)
{
dcMidCostFirsMapper
.
insertSelective
(
dcMidCostFirst
);
}
...
...
data-mid/mid-calculate-cost-first/src/main/resources/job.properties
View file @
bfa9e6b7
#EVENT_RDB_STORAGE_DRIVER=com.mysql.jdbc.Driver
#EVENT_RDB_STORAGE_URL=jdbc:mysql://192.168.6.140:3306/bailun_datacenter?serverTimezone=GMT%2B8&characterEncoding=utf-8
#EVENT_RDB_STORAGE_USERNAME=root
#EVENT_RDB_STORAGE_PASSWORD=123456
#ZOOKEEPER_SERVER=127.0.0.1:2181
EVENT_RDB_STORAGE_DRIVER
=
com.mysql.jdbc.Driver
EVENT_RDB_STORAGE_URL
=
jdbc:mysql://
10.0.8.15:3306/bailun_datacenter?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
EVENT_RDB_STORAGE_URL
=
jdbc:mysql://
gz-cdb-kp7s5i79.sql.tencentcdb.com:61691/bailun_datacenter?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
EVENT_RDB_STORAGE_USERNAME
=
root
EVENT_RDB_STORAGE_PASSWORD
=
#7kfnymAM$Y9-Ntf
ZOOKEEPER_SERVER=172.31.255.120:2181
EVENT_RDB_STORAGE_PASSWORD
=
123456
ZOOKEEPER_SERVER
=
127.0.0.1:2181
#EVENT_RDB_STORAGE_DRIVER=com.mysql.jdbc.Driver
#EVENT_RDB_STORAGE_URL=jdbc:mysql://10.0.8.15:3306/bailun_datacenter?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#EVENT_RDB_STORAGE_USERNAME=root
#EVENT_RDB_STORAGE_PASSWORD=#7kfnymAM$Y9-Ntf
#ZOOKEEPER_SERVER=172.31.255.120:2181
NAME_SPACE
=
data-center
JOB_NAME
=
mid-calculate-cost-first
JOB_CRON
=
0 33 7,12,20 * * ? *
SHARDING_TOTAL_COUNT
=
1
\ No newline at end of file
SHARDING_TOTAL_COUNT
=
1
data-mid/mid-calculate-cost-first/src/test/java/CostFirstTest.java
View file @
bfa9e6b7
import
com.bailuntec.domain.constant.Constant
;
import
com.bailuntec.domain.entity.DcBaseCostFirst
;
import
com.bailuntec.domain.entity.DcBaseSku
;
import
com.bailuntec.domain.entity.DcMidCostFirst
;
import
com.bailuntec.domain.entity.DcMidCostFirstConfig
;
import
com.bailuntec.domain.e
xample.DcBaseCostFirstExample
;
import
com.bailuntec.domain.e
ntity.JobPointLog
;
import
com.bailuntec.domain.example.DcBaseSkuExample
;
import
com.bailuntec.domain.example.DcMidCostFirstExample
;
import
com.bailuntec.domain.pojo.CostFirstOrder
;
import
com.bailuntec.domain.pojo.MidCostFirst
;
import
com.bailuntec.job.CalculateCostFirstJob
;
import
com.bailuntec.listener.CalculateCostFirstListener
;
import
com.bailuntec.mapper.*
;
import
com.bailuntec.mapper.DcBaseSkuMapper
;
import
com.bailuntec.mapper.DcMidCostFirstConfigMapper
;
import
com.bailuntec.mapper.DcMidCostFirstMapper
;
import
com.bailuntec.mapper.DcMidCostFirstOrderMapper
;
import
com.bailuntec.utils.SessionUtil
;
import
org.junit.jupiter.api.Test
;
...
...
@@ -22,8 +22,7 @@ public class CostFirstTest {
@Test
public
void
test11
()
{
public
void
test11
()
{
try
{
DcBaseSkuMapper
dcBaseSkuMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseSkuMapper
.
class
);
DcBaseSku
dcBaseSku
=
dcBaseSkuMapper
.
selectOneByExample
(
DcBaseSkuExample
.
newAndCreateCriteria
().
andBailunSkuEqualTo
(
"S31"
).
example
());
...
...
@@ -38,30 +37,11 @@ public class CostFirstTest {
@Test
public
void
test
()
{
CalculateCostFirstJob
costFirstJob
=
new
CalculateCostFirstJob
();
try
{
DcBaseCostFirstMapper
dcBaseCostFirstMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseCostFirstMapper
.
class
);
//拿到物流单号, 将物流单中每个SKU的费用算出来
List
<
CostFirstOrder
>
channelOrderIdList
=
dcBaseCostFirstMapper
.
listChannelOrderId
(
0
,
1
);
if
(
channelOrderIdList
!=
null
&&
channelOrderIdList
.
size
()
>
0
)
{
for
(
CostFirstOrder
costFirstOrder
:
channelOrderIdList
)
{
costFirstOrder
.
setChannelOrderId
(
"GZQY20190412 "
);
costFirstOrder
.
setTransferOrderId
(
"DB190412112032208"
);
DcBaseCostFirstMapper
dcBaseCostFirstMapperFor
=
SessionUtil
.
getSession
().
getMapper
(
DcBaseCostFirstMapper
.
class
);
List
<
DcBaseCostFirst
>
dcBaseCostFirsts
=
dcBaseCostFirstMapperFor
.
selectByExample
(
DcBaseCostFirstExample
.
newAndCreateCriteria
().
andChannelOrderIdEqualTo
(
costFirstOrder
.
getChannelOrderId
()).
andTransferOrderIdEqualTo
(
costFirstOrder
.
getTransferOrderId
()).
example
());
costFirstJob
.
handleChannelOrderSku
(
dcBaseCostFirsts
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
RuntimeException
(
"MYBATIS操作DB失败"
,
e
);
}
finally
{
SessionUtil
.
closeSession
();
}
CalculateCostFirstListener
calculateCostFirstListener
=
new
CalculateCostFirstListener
();
calculateCostFirstListener
.
afterJobExecuted
(
null
);
costFirstJob
.
executeJob
(
null
,
new
JobPointLog
(
"dc-mid-calculate-cost-first"
,
1
,
100
,
null
,
null
,
null
,
null
));
}
@Test
public
void
test1
()
{
public
void
test1
()
{
try
{
DcMidCostFirstOrderMapper
dcMidCostFirstOrderMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcMidCostFirstOrderMapper
.
class
);
DcMidCostFirstConfigMapper
dcMidCostFirstConfigMapper
=
SessionUtil
.
getSession
().
getMapper
(
DcMidCostFirstConfigMapper
.
class
);
...
...
@@ -70,14 +50,14 @@ public class CostFirstTest {
int
skuWarehouseTotalPage
=
getSkuWarehouseTotalPage
(
countSkuWarehouse
);
int
index
=
0
;
do
{
List
<
MidCostFirst
>
midCostFirstList
=
dcMidCostFirstOrderMapper
.
listSkuWarehouse
(
index
*
Constant
.
PAGE_SIZE
,
Constant
.
PAGE_SIZE
);
List
<
MidCostFirst
>
midCostFirstList
=
dcMidCostFirstOrderMapper
.
listSkuWarehouse
(
index
*
Constant
.
PAGE_SIZE
,
Constant
.
PAGE_SIZE
);
if
(
midCostFirstList
!=
null
&&
midCostFirstList
.
size
()
>
0
)
{
DcMidCostFirst
dcMidCostFirst
=
new
DcMidCostFirst
();
for
(
MidCostFirst
midCostFirst
:
midCostFirstList
)
{
dcMidCostFirst
.
setBailunSku
(
midCostFirst
.
getBailunSku
());
dcMidCostFirst
.
setWarehouseCode
(
midCostFirst
.
getWarehouseCode
());
BigDecimal
costFirst
=
midCostFirst
.
getTotalCostFirst
().
divide
(
BigDecimal
.
valueOf
(
midCostFirst
.
getTotalCount
()),
3
,
RoundingMode
.
HALF_EVEN
);
DcMidCostFirstConfig
dcMidCostFirstConfig
=
dcMidCostFirstConfigMapper
.
getConfig
(
dcMidCostFirst
.
getBailunSku
(),
dcMidCostFirst
.
getWarehouseCode
());
BigDecimal
costFirst
=
midCostFirst
.
getTotalCostFirst
().
divide
(
BigDecimal
.
valueOf
(
midCostFirst
.
getTotalCount
()),
3
,
RoundingMode
.
HALF_EVEN
);
DcMidCostFirstConfig
dcMidCostFirstConfig
=
dcMidCostFirstConfigMapper
.
getConfig
(
dcMidCostFirst
.
getBailunSku
(),
dcMidCostFirst
.
getWarehouseCode
());
dcMidCostFirst
.
setCostFirst
(
costFirst
);
if
(
dcMidCostFirstConfig
!=
null
)
{
dcMidCostFirst
.
setCostFirst
((
costFirst
.
add
(
dcMidCostFirstConfig
.
getCostFirstConfig
())).
divide
(
BigDecimal
.
valueOf
(
2
),
3
,
RoundingMode
.
HALF_EVEN
));
...
...
@@ -96,6 +76,7 @@ public class CostFirstTest {
SessionUtil
.
closeSession
();
}
}
private
int
getSkuWarehouseTotalPage
(
int
countSkuWarehouse
)
{
if
(
countSkuWarehouse
%
Constant
.
PAGE_SIZE
==
0
)
{
return
countSkuWarehouse
/
Constant
.
PAGE_SIZE
;
...
...
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