Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-module-job
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-module-job
Commits
87dac465
提交
87dac465
authored
8月 14, 2025
作者:
吕本才
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加旺店通奇门采集订单定时任务和接口
上级
62a311f0
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
26 个修改的文件
包含
728 行增加
和
15 行删除
+728
-15
pom.xml
pom.xml
+5
-0
WdtQimenConfig.java
src/main/java/com/sfa/job/config/WdtQimenConfig.java
+18
-0
WdtQimenOrderController.java
...com/sfa/job/controller/order/WdtQimenOrderController.java
+37
-0
WdtQimenOrderDao.java
...n/java/com/sfa/job/domain/order/dao/WdtQimenOrderDao.java
+11
-0
WdtQimenOrderDetailDao.java
.../com/sfa/job/domain/order/dao/WdtQimenOrderDetailDao.java
+11
-0
WdtQimenOrderDaoImpl.java
...m/sfa/job/domain/order/dao/impl/WdtQimenOrderDaoImpl.java
+28
-0
WdtQimenOrderDetailDaoImpl.java
...job/domain/order/dao/impl/WdtQimenOrderDetailDaoImpl.java
+30
-0
CollectOrderLog.java
...java/com/sfa/job/domain/order/entity/CollectOrderLog.java
+4
-0
WdtQimenOrder.java
...n/java/com/sfa/job/domain/order/entity/WdtQimenOrder.java
+0
-0
WdtQimenOrderDetail.java
.../com/sfa/job/domain/order/entity/WdtQimenOrderDetail.java
+0
-0
WdtQimenOrderDetailMapper.java
...fa/job/domain/order/mapper/WdtQimenOrderDetailMapper.java
+15
-0
WdtQimenOrderMapper.java
.../com/sfa/job/domain/order/mapper/WdtQimenOrderMapper.java
+13
-0
WdtSalesTradeQueryQueryWithDetailVo.java
...jo/order/request/WdtSalesTradeQueryQueryWithDetailVo.java
+236
-0
WdtQimenBodyDto.java
...java/com/sfa/job/pojo/order/response/WdtQimenBodyDto.java
+12
-0
WdtQimenDataDto.java
...java/com/sfa/job/pojo/order/response/WdtQimenDataDto.java
+15
-0
WdtQimenResponseDto.java
.../com/sfa/job/pojo/order/response/WdtQimenResponseDto.java
+11
-0
WdtSalesTradeQueryQueryWithDetailDto.java
.../order/response/WdtSalesTradeQueryQueryWithDetailDto.java
+44
-0
SyncOrderDetailDto.java
...in/java/com/sfa/job/pojo/response/SyncOrderDetailDto.java
+46
-2
WdtQimenOrderSyncService.java
...a/com/sfa/job/service/order/WdtQimenOrderSyncService.java
+10
-0
FinanceOrderSyncServiceImpl.java
...a/job/service/order/impl/FinanceOrderSyncServiceImpl.java
+2
-2
WdtQimenOrderSyncServiceImpl.java
.../job/service/order/impl/WdtQimenOrderSyncServiceImpl.java
+0
-0
WangdiantongUtil.java
src/main/java/com/sfa/job/util/WangdiantongUtil.java
+0
-11
WdtQimenUtil.java
src/main/java/com/sfa/job/util/WdtQimenUtil.java
+111
-0
WdtQimenOrderTask.java
...main/java/com/sfa/job/xxljob/order/WdtQimenOrderTask.java
+69
-0
WdtQimenOrderDetailMapper.xml
...main/resources/mapper/order/WdtQimenOrderDetailMapper.xml
+0
-0
WdtQimenOrderMapper.xml
src/main/resources/mapper/order/WdtQimenOrderMapper.xml
+0
-0
没有找到文件。
pom.xml
浏览文件 @
87dac465
...
@@ -135,6 +135,11 @@
...
@@ -135,6 +135,11 @@
<groupId>
com.aliyun.oss
</groupId>
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
aliyun-sdk-oss
</artifactId>
<artifactId>
aliyun-sdk-oss
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.taobao
</groupId>
<artifactId>
taobao-sdk-java
</artifactId>
</dependency>
</dependencies>
</dependencies>
<build>
<build>
...
...
src/main/java/com/sfa/job/config/WdtQimenConfig.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
config
;
import
lombok.Data
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
@Data
@Component
@ConfigurationProperties
(
prefix
=
"wangdiantong.qimen"
)
public
class
WdtQimenConfig
{
private
String
serverUrl
;
private
String
appKey
;
private
String
appSecret
;
private
String
wdtSid
;
private
String
wdtAppKey
;
private
String
wdtAppSecret
;
private
String
targetAppSecret
;
}
src/main/java/com/sfa/job/controller/order/WdtQimenOrderController.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
controller
.
order
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
com.sfa.job.service.order.WdtQimenOrderSyncService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.format.annotation.DateTimeFormat
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.Date
;
/**
* @author : liqiulin
* @date : 2025-07-08 13
* @describe : 订单 - 发货单物流查询
*/
@RestController
@RequestMapping
(
"/order/qimen"
)
public
class
WdtQimenOrderController
{
@Autowired
private
WdtQimenOrderSyncService
orderQimenSyncService
;
@GetMapping
(
"/sync"
)
public
Object
sync
(
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
Date
startTime
,
@DateTimeFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
Date
endTime
,
@RequestParam
(
value
=
"pageSize"
,
required
=
false
,
defaultValue
=
"200"
)
Long
pageSize
)
{
SyncOrderDetailDto
syncOrderDetailDto
=
orderQimenSyncService
.
syncWdtQimenOrder
(
startTime
,
endTime
,
1
,
pageSize
);
return
syncOrderDetailDto
;
}
}
src/main/java/com/sfa/job/domain/order/dao/WdtQimenOrderDao.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.FinanceOrder
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
java.util.List
;
public
interface
WdtQimenOrderDao
{
void
saveOrUpdateBatch
(
List
<
WdtQimenOrder
>
mergeList
);
}
src/main/java/com/sfa/job/domain/order/dao/WdtQimenOrderDetailDao.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
domain
.
order
.
dao
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetail
;
import
java.util.List
;
public
interface
WdtQimenOrderDetailDao
{
void
saveOrUpdateBatch
(
List
<
WdtQimenOrderDetail
>
mergeList
);
}
src/main/java/com/sfa/job/domain/order/dao/impl/WdtQimenOrderDaoImpl.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.sfa.job.domain.order.dao.WdtQimenOrderDao
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
com.sfa.job.domain.order.mapper.WdtQimenOrderMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@DS
(
"bi"
)
@Repository
public
class
WdtQimenOrderDaoImpl
implements
WdtQimenOrderDao
{
private
static
final
int
BATCH_SIZE
=
1000
;
@Autowired
private
WdtQimenOrderMapper
wdtQimenOrderMapper
;
@Override
public
void
saveOrUpdateBatch
(
List
<
WdtQimenOrder
>
mergeList
)
{
for
(
int
i
=
0
;
i
<
mergeList
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
mergeList
.
size
());
List
<
WdtQimenOrder
>
batchLists
=
mergeList
.
subList
(
i
,
toIndex
);
wdtQimenOrderMapper
.
saveOrUpdateBatch
(
batchLists
);
}
}
}
src/main/java/com/sfa/job/domain/order/dao/impl/WdtQimenOrderDetailDaoImpl.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
domain
.
order
.
dao
.
impl
;
import
com.baomidou.dynamic.datasource.annotation.DS
;
import
com.sfa.job.domain.order.dao.WdtQimenOrderDetailDao
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetail
;
import
com.sfa.job.domain.order.mapper.WdtQimenOrderDetailMapper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Repository
;
import
java.util.List
;
@DS
(
"bi"
)
@Repository
public
class
WdtQimenOrderDetailDaoImpl
implements
WdtQimenOrderDetailDao
{
private
static
final
int
BATCH_SIZE
=
1000
;
@Autowired
private
WdtQimenOrderDetailMapper
wdtQimenOrderDetailMapper
;
@Override
public
void
saveOrUpdateBatch
(
List
<
WdtQimenOrderDetail
>
mergeList
)
{
for
(
int
i
=
0
;
i
<
mergeList
.
size
();
i
+=
BATCH_SIZE
)
{
int
toIndex
=
Math
.
min
(
i
+
BATCH_SIZE
,
mergeList
.
size
());
List
<
WdtQimenOrderDetail
>
batchLists
=
mergeList
.
subList
(
i
,
toIndex
);
wdtQimenOrderDetailMapper
.
saveOrUpdateBatch
(
batchLists
);
}
}
}
src/main/java/com/sfa/job/domain/order/entity/CollectOrderLog.java
浏览文件 @
87dac465
...
@@ -95,6 +95,10 @@ public class CollectOrderLog implements Serializable {
...
@@ -95,6 +95,10 @@ public class CollectOrderLog implements Serializable {
*/
*/
private
Date
updateTime
;
private
Date
updateTime
;
/**
* 同步类型,
* 接口为1手动同步,0 xxljob自动同步
*/
private
Integer
syncType
;
private
Integer
syncType
;
...
...
src/main/java/com/sfa/job/domain/order/entity/WdtQimenOrder.java
0 → 100644
浏览文件 @
87dac465
差异被折叠。
点击展开。
src/main/java/com/sfa/job/domain/order/entity/WdtQimenOrderDetail.java
0 → 100644
浏览文件 @
87dac465
差异被折叠。
点击展开。
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenOrderDetailMapper.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenOrderDetail
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
@Mapper
public
interface
WdtQimenOrderDetailMapper
extends
BaseMapper
<
WdtQimenOrderDetail
>
{
void
saveOrUpdateBatch
(
@Param
(
value
=
"list"
)
List
<
WdtQimenOrderDetail
>
mergeList
);
}
src/main/java/com/sfa/job/domain/order/mapper/WdtQimenOrderMapper.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
domain
.
order
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
@Mapper
public
interface
WdtQimenOrderMapper
extends
BaseMapper
<
WdtQimenOrder
>
{
void
saveOrUpdateBatch
(
List
<
WdtQimenOrder
>
batchLists
);
}
src/main/java/com/sfa/job/pojo/order/request/WdtSalesTradeQueryQueryWithDetailVo.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
pojo
.
order
.
request
;
import
com.sfa.job.pojo.order.response.WdtSalesTradeQueryQueryWithDetailDto
;
import
com.taobao.api.ApiRuleException
;
import
com.taobao.api.BaseTaobaoRequest
;
import
com.taobao.api.internal.mapping.ApiField
;
import
com.taobao.api.internal.util.TaobaoHashMap
;
import
com.taobao.api.internal.util.json.JSONWriter
;
import
java.util.Map
;
public
class
WdtSalesTradeQueryQueryWithDetailVo
extends
BaseTaobaoRequest
<
WdtSalesTradeQueryQueryWithDetailDto
>
{
private
String
datetime
;
private
String
pager
;
private
String
params
;
private
String
wdtAppkey
;
private
String
wdtSalt
;
private
String
wdtSign
;
private
String
topContentType
;
private
String
topResponseType
=
"qimen1"
;
private
String
topApiVersion
=
"1.0"
;
private
String
topApiFormat
;
public
WdtSalesTradeQueryQueryWithDetailVo
()
{
}
public
void
setDatetime
(
String
datetime
)
{
this
.
datetime
=
datetime
;
}
public
String
getDatetime
()
{
return
this
.
datetime
;
}
public
void
setPager
(
String
pager
)
{
this
.
pager
=
pager
;
}
public
void
setPager
(
WdtSalesTradeQueryQueryWithDetailVo
.
Pager
pager
)
{
this
.
pager
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
pager
);
}
public
String
getPager
()
{
return
this
.
pager
;
}
public
void
setParams
(
String
params
)
{
this
.
params
=
params
;
}
public
void
setParams
(
WdtSalesTradeQueryQueryWithDetailVo
.
Params
params
)
{
this
.
params
=
(
new
JSONWriter
(
false
,
false
,
true
)).
write
(
params
);
}
public
String
getParams
()
{
return
this
.
params
;
}
public
void
setWdtAppkey
(
String
wdtAppkey
)
{
this
.
wdtAppkey
=
wdtAppkey
;
}
public
String
getWdtAppkey
()
{
return
this
.
wdtAppkey
;
}
public
void
setWdtSalt
(
String
wdtSalt
)
{
this
.
wdtSalt
=
wdtSalt
;
}
public
String
getWdtSalt
()
{
return
this
.
wdtSalt
;
}
public
void
setWdtSign
(
String
wdtSign
)
{
this
.
wdtSign
=
wdtSign
;
}
public
String
getWdtSign
()
{
return
this
.
wdtSign
;
}
public
String
getApiMethodName
()
{
return
"wdt.sales.tradequery.querywithdetail"
;
}
public
String
getTopContentType
()
{
return
this
.
topContentType
;
}
public
void
setTopContentType
(
String
topContentType
)
{
this
.
topContentType
=
topContentType
;
}
public
String
getTopResponseType
()
{
return
this
.
topResponseType
;
}
public
void
setTopResponseType
(
String
topResponseType
)
{
this
.
topResponseType
=
topResponseType
;
}
public
String
getTopApiVersion
()
{
return
this
.
topApiVersion
;
}
public
void
setTopApiVersion
(
String
topApiVersion
)
{
this
.
topApiVersion
=
topApiVersion
;
}
public
String
getTopApiFormat
()
{
return
this
.
topApiFormat
;
}
public
void
setTopApiFormat
(
String
topApiFormat
)
{
this
.
topApiFormat
=
topApiFormat
;
}
public
Map
<
String
,
String
>
getTextParams
()
{
TaobaoHashMap
txtParams
=
new
TaobaoHashMap
();
txtParams
.
put
(
"datetime"
,
this
.
datetime
);
txtParams
.
put
(
"pager"
,
this
.
pager
);
txtParams
.
put
(
"params"
,
this
.
params
);
txtParams
.
put
(
"wdt_appkey"
,
this
.
wdtAppkey
);
txtParams
.
put
(
"wdt_salt"
,
this
.
wdtSalt
);
txtParams
.
put
(
"wdt_sign"
,
this
.
wdtSign
);
if
(
this
.
udfParams
!=
null
)
{
txtParams
.
putAll
(
this
.
udfParams
);
}
return
txtParams
;
}
public
Class
<
WdtSalesTradeQueryQueryWithDetailDto
>
getResponseClass
()
{
return
WdtSalesTradeQueryQueryWithDetailDto
.
class
;
}
public
void
check
()
throws
ApiRuleException
{
}
public
static
class
Pager
{
@ApiField
(
"page_no"
)
private
Long
pageNo
;
@ApiField
(
"page_size"
)
private
Long
pageSize
;
public
Pager
()
{
}
public
Long
getPageNo
()
{
return
this
.
pageNo
;
}
public
void
setPageNo
(
Long
pageNo
)
{
this
.
pageNo
=
pageNo
;
}
public
Long
getPageSize
()
{
return
this
.
pageSize
;
}
public
void
setPageSize
(
Long
pageSize
)
{
this
.
pageSize
=
pageSize
;
}
}
public
static
class
Params
{
@ApiField
(
"start_time"
)
private
String
startTime
;
@ApiField
(
"end_time"
)
private
String
endime
;
@ApiField
(
"shop_no"
)
private
String
shopNo
;
@ApiField
(
"order_type"
)
private
String
orderType
;
/**
* 1:修改时间 2:付款时间 默认1
*/
@ApiField
(
"time_type"
)
private
int
timeType
;
@ApiField
(
"cal_share_post_amount"
)
private
Boolean
calSharePostAmount
;
public
String
getStartTime
()
{
return
startTime
;
}
public
void
setStartTime
(
String
startTime
)
{
this
.
startTime
=
startTime
;
}
public
String
getEndime
()
{
return
endime
;
}
public
void
setEndime
(
String
endime
)
{
this
.
endime
=
endime
;
}
public
String
getShopNo
()
{
return
shopNo
;
}
public
void
setShopNo
(
String
shopNo
)
{
this
.
shopNo
=
shopNo
;
}
public
String
getOrderType
()
{
return
orderType
;
}
public
void
setOrderType
(
String
orderType
)
{
this
.
orderType
=
orderType
;
}
public
int
getTimeType
()
{
return
timeType
;
}
public
void
setTimeType
(
int
timeType
)
{
this
.
timeType
=
timeType
;
}
public
Boolean
getCalSharePostAmount
()
{
return
calSharePostAmount
;
}
public
void
setCalSharePostAmount
(
Boolean
calSharePostAmount
)
{
this
.
calSharePostAmount
=
calSharePostAmount
;
}
}
}
src/main/java/com/sfa/job/pojo/order/response/WdtQimenBodyDto.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
lombok.Data
;
@Data
public
class
WdtQimenBodyDto
{
private
static
final
long
serialVersionUID
=
4632382792982436956L
;
private
WdtQimenResponseDto
response
;
private
String
message
;
private
Integer
status
;
}
src/main/java/com/sfa/job/pojo/order/response/WdtQimenDataDto.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
com.sfa.job.domain.order.entity.WdtQimenOrder
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
WdtQimenDataDto
{
private
static
final
long
serialVersionUID
=
4632382792982436956L
;
private
List
<
WdtQimenOrder
>
order
;
private
Integer
totalCount
;
}
src/main/java/com/sfa/job/pojo/order/response/WdtQimenResponseDto.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
lombok.Data
;
@Data
public
class
WdtQimenResponseDto
{
private
static
final
long
serialVersionUID
=
4632382792982436956L
;
private
WdtQimenDataDto
data
;
private
String
message
;
private
Integer
status
;
}
src/main/java/com/sfa/job/pojo/order/response/WdtSalesTradeQueryQueryWithDetailDto.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
pojo
.
order
.
response
;
import
com.alibaba.fastjson.JSONObject
;
import
com.taobao.api.TaobaoResponse
;
import
com.taobao.api.internal.mapping.ApiField
;
public
class
WdtSalesTradeQueryQueryWithDetailDto
extends
TaobaoResponse
{
private
static
final
long
serialVersionUID
=
4632382792982436956L
;
@ApiField
(
"data"
)
private
Object
data
;
@ApiField
(
"message"
)
private
String
message
;
@ApiField
(
"status"
)
private
Long
status
;
public
WdtSalesTradeQueryQueryWithDetailDto
()
{
}
public
void
setData
(
Object
data
)
{
this
.
data
=
JSONObject
.
toJSON
(
data
);
}
public
Object
getData
()
{
return
this
.
data
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
String
getMessage
()
{
return
this
.
message
;
}
public
void
setStatus
(
Long
status
)
{
this
.
status
=
status
;
}
public
Long
getStatus
()
{
return
this
.
status
;
}
}
src/main/java/com/sfa/job/pojo/response/SyncOrderDetailDto.java
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
pojo
.
response
;
package
com
.
sfa
.
job
.
pojo
.
response
;
import
cn.hutool.core.date.DateUtil
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
com.sfa.common.core.utils.DateUtils
;
import
lombok.Data
;
import
lombok.Data
;
import
org.apache.commons.lang3.ObjectUtils
;
import
java.util.Date
;
import
java.util.Date
;
...
@@ -22,7 +25,9 @@ public class SyncOrderDetailDto {
...
@@ -22,7 +25,9 @@ public class SyncOrderDetailDto {
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss"
)
private
Date
endTime
;
private
Date
endTime
;
private
Date
latestTime
;
private
Date
latestTime
;
/**
* 同步类型 ,接口为1手动同步,0 xxljob自动同步
*/
private
Integer
syncType
;
private
Integer
syncType
;
private
String
batchNo
;
private
String
batchNo
;
private
Integer
pageNo
;
private
Integer
pageNo
;
...
@@ -43,8 +48,47 @@ public class SyncOrderDetailDto {
...
@@ -43,8 +48,47 @@ public class SyncOrderDetailDto {
this
.
setTotalCount
(
totalCount
);
this
.
setTotalCount
(
totalCount
);
this
.
setBatchNo
(
batchNo
);
this
.
setBatchNo
(
batchNo
);
this
.
setMethod
(
method
);
this
.
setMethod
(
method
);
this
.
setSyncType
(
syncType
);
this
.
setSyncType
(
syncType
);
this
.
setRemark
(
remark
);
this
.
setRemark
(
remark
);
return
this
;
return
this
;
}
}
public
boolean
validateStartTime
()
{
Date
currentLatest
=
DateUtils
.
addHours
(
new
Date
(),
-
2
);
if
(
currentLatest
.
compareTo
(
this
.
getEndTime
())
<
0
)
{
this
.
setTotalCount
(
0
);
String
message
=
String
.
format
(
"结束时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
this
.
getEndTime
()),
DateUtil
.
formatDateTime
(
currentLatest
));
this
.
setMessage
(
message
);
return
false
;
}
return
true
;
}
/**
* 初始化时间范围
*
* @param interval
* @param collectOrderLog
*/
public
void
setupTimeRange
(
Integer
interval
,
CollectOrderLogDto
collectOrderLog
)
{
Date
latestTime
=
null
;
// startTime 为空,默认是定时任务调用
if
(
ObjectUtils
.
isEmpty
(
this
.
getStartTime
()))
{
// 查询最新的采集时间
if
(
ObjectUtils
.
isNotEmpty
(
collectOrderLog
))
{
latestTime
=
collectOrderLog
.
getLatestTime
();
// 调用查询旺店通接口api 获取最新日期前的一个小时
this
.
setStartTime
(
DateUtils
.
addMinutes
(
latestTime
,
-
5
));
this
.
setEndTime
(
DateUtils
.
addMinutes
(
this
.
getStartTime
(),
interval
));
}
else
{
// 默认上个月的第一天 00:00:00
this
.
setStartTime
(
DateUtil
.
beginOfDay
(
DateUtil
.
beginOfMonth
(
DateUtil
.
lastMonth
())));
this
.
setEndTime
(
DateUtils
.
addMinutes
(
this
.
getStartTime
(),
interval
));
}
}
this
.
latestTime
=
this
.
getEndTime
();
this
.
setLatestTime
(
latestTime
);
}
}
}
src/main/java/com/sfa/job/service/order/WdtQimenOrderSyncService.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
service
.
order
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
java.util.Date
;
public
interface
WdtQimenOrderSyncService
{
SyncOrderDetailDto
syncWdtQimenOrder
(
Date
startTime
,
Date
endTime
,
Integer
syncType
,
Long
pageSize
);
}
src/main/java/com/sfa/job/service/order/impl/FinanceOrderSyncServiceImpl.java
浏览文件 @
87dac465
...
@@ -96,13 +96,13 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
...
@@ -96,13 +96,13 @@ public class FinanceOrderSyncServiceImpl implements FinanceOrderSyncService {
if
(
currentLatest
.
compareTo
(
startTime
)
<
0
)
{
if
(
currentLatest
.
compareTo
(
startTime
)
<
0
)
{
detailDto
.
setMessage
(
String
.
format
(
"开始时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
currentLatest
)));
detailDto
.
setMessage
(
String
.
format
(
"开始时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
currentLatest
)));
log
.
warn
(
String
.
format
(
"开始时间%s不能大于当前时间%s"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
currentLatest
)));
//
log.warn(String.format("开始时间%s不能大于当前时间%s", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(currentLatest)));
return
detailDto
;
return
detailDto
;
}
}
if
(!
validateStartTime
(
detailDto
))
{
if
(!
validateStartTime
(
detailDto
))
{
return
detailDto
;
return
detailDto
;
}
}
log
.
info
(
"查询订单参数:开始时间{},结束时间{},当前页:{}"
,
DateUtil
.
formatDateTime
(
startTime
),
DateUtil
.
formatDateTime
(
endTime
),
detailDto
.
getPageNo
());
//
log.info("查询订单参数:开始时间{},结束时间{},当前页:{}", DateUtil.formatDateTime(startTime), DateUtil.formatDateTime(endTime), detailDto.getPageNo());
WdtOrderQueryVO
wdtOrderQueryVO
=
new
WdtOrderQueryVO
();
WdtOrderQueryVO
wdtOrderQueryVO
=
new
WdtOrderQueryVO
();
wdtOrderQueryVO
.
setStart_time
(
com
.
alibaba
.
fastjson2
.
util
.
DateUtils
.
format
(
startTime
));
wdtOrderQueryVO
.
setStart_time
(
com
.
alibaba
.
fastjson2
.
util
.
DateUtils
.
format
(
startTime
));
...
...
src/main/java/com/sfa/job/service/order/impl/WdtQimenOrderSyncServiceImpl.java
0 → 100644
浏览文件 @
87dac465
差异被折叠。
点击展开。
src/main/java/com/sfa/job/util/WangdiantongUtil.java
浏览文件 @
87dac465
...
@@ -20,17 +20,6 @@ import java.util.List;
...
@@ -20,17 +20,6 @@ import java.util.List;
@Component
@Component
public
class
WangdiantongUtil
{
public
class
WangdiantongUtil
{
// @Value("${wangdiantong.url}")
// private String url;
// @Value("${wangdiantong.sid}")
// private String sid ;
// @Value("${wangdiantong.key}")
// private String key ;
// @Value("${wangdiantong.salt}")
// private String salt ;
// @Value("${wangdiantong.appsecret}")
// private String appsecret;
private
final
WangdiantongConfig
wangdiantongConfig
;
private
final
WangdiantongConfig
wangdiantongConfig
;
@Autowired
@Autowired
...
...
src/main/java/com/sfa/job/util/WdtQimenUtil.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
util
;
import
com.alibaba.fastjson.JSON
;
import
com.taobao.api.BaseTaobaoRequest
;
import
com.taobao.api.TaobaoResponse
;
import
org.apache.commons.codec.digest.DigestUtils
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.Comparator
;
import
java.util.List
;
import
java.util.Map
;
/**
* 奇门自定义接口工具类
*/
public
class
WdtQimenUtil
{
private
WdtQimenUtil
()
{
}
private
static
final
List
<
String
>
QIMEN_CRM_SIGNED_FIELDS
=
Arrays
.
asList
(
"pageNo"
,
"pageSize"
,
"fields"
,
"extendProps"
,
"customerid"
,
"method"
,
"sd_code"
,
"startModified"
,
"endModified"
);
private
static
final
List
<
String
>
QIMEN_EXCLUDE_SIGN_FIELDS
=
Arrays
.
asList
(
"wdt3_customer_id"
,
"wdt_sign"
);
/**
* 获取奇门自定义接口的签名
*
* @param request 请求
* @param wdtSecret app_secret的前半部分
* @return 签名值
*/
public
static
<
T
extends
TaobaoResponse
>
String
getQimenCustomWdtSign
(
BaseTaobaoRequest
<
T
>
request
,
String
wdtSecret
)
{
Map
<
String
,
String
>
params
=
request
.
getTextParams
();
params
.
put
(
"method"
,
request
.
getApiMethodName
());
StringBuilder
toBeSignedStringBuilder
=
new
StringBuilder
();
getToBeSignedString
(
toBeSignedStringBuilder
,
params
);
toBeSignedStringBuilder
.
insert
(
0
,
wdtSecret
).
append
(
wdtSecret
);
return
DigestUtils
.
md5Hex
(
toBeSignedStringBuilder
.
toString
());
}
public
static
boolean
isValidJson
(
String
content
)
{
if
(
null
==
content
)
return
false
;
String
trimmedContent
=
content
.
trim
();
if
(!(
trimmedContent
.
startsWith
(
"{"
)
&&
trimmedContent
.
endsWith
(
"}"
))
&&
!(
trimmedContent
.
startsWith
(
"["
)
&&
trimmedContent
.
endsWith
(
"]"
)))
return
false
;
return
JSON
.
isValid
(
content
);
}
@SuppressWarnings
(
"unchecked"
)
private
static
void
getToBeSignedString
(
StringBuilder
stringBuilder
,
Object
object
)
{
if
(
object
instanceof
Map
)
{
@SuppressWarnings
(
"unchecked"
)
Map
<
String
,
Object
>
map
=
(
Map
<
String
,
Object
>)
object
;
map
.
entrySet
().
stream
().
sorted
(
Comparator
.
comparing
(
Map
.
Entry
::
getKey
)).
forEachOrdered
(
p
->
{
if
(
QIMEN_EXCLUDE_SIGN_FIELDS
.
contains
(
p
.
getKey
())
||
null
==
p
.
getValue
())
return
;
stringBuilder
.
append
(
p
.
getKey
());
Object
value
=
p
.
getValue
();
if
(
value
instanceof
Integer
)
{
stringBuilder
.
append
(
value
);
}
else
if
(
value
instanceof
String
)
{
if
(
JSON
.
isValidObject
(
value
.
toString
()))
{
getToBeSignedString
(
stringBuilder
,
JSON
.
parseObject
(
p
.
getValue
().
toString
(),
Map
.
class
));
}
else
if
(
JSON
.
isValidArray
(
value
.
toString
()))
{
for
(
Object
obj
:
JSON
.
parseArray
(
value
.
toString
(),
Object
.
class
))
{
getToBeSignedString
(
stringBuilder
,
obj
);
}
}
else
{
stringBuilder
.
append
((
String
)
value
);
}
}
else
if
(
value
instanceof
BigDecimal
)
{
stringBuilder
.
append
(((
BigDecimal
)
value
).
toPlainString
());
}
else
if
(
value
instanceof
Long
)
{
stringBuilder
.
append
(
value
);
}
else
if
(
value
instanceof
Boolean
)
{
stringBuilder
.
append
(((
Boolean
)
value
).
booleanValue
());
}
else
if
(
value
instanceof
Float
)
{
stringBuilder
.
append
(
value
);
}
else
if
(
value
instanceof
Double
)
{
stringBuilder
.
append
(
value
);
}
else
{
getToBeSignedString
(
stringBuilder
,
value
);
}
});
}
else
if
(
object
instanceof
List
)
{
for
(
Map
map
:
(
List
<
Map
>)
object
)
{
getToBeSignedString
(
stringBuilder
,
map
);
}
}
else
{
stringBuilder
.
append
(
object
.
toString
());
}
}
static
<
T
extends
TaobaoResponse
>
String
getQimenOfficialWdtSign
(
BaseTaobaoRequest
<
T
>
request
,
String
secret
)
{
Map
<
String
,
String
>
params
=
request
.
getTextParams
();
params
.
put
(
"method"
,
request
.
getApiMethodName
());
params
.
entrySet
().
removeIf
(
e
->
!
QIMEN_CRM_SIGNED_FIELDS
.
contains
(
e
.
getKey
()));
StringBuilder
toBeSignedStringBuilder
=
new
StringBuilder
();
getToBeSignedString
(
toBeSignedStringBuilder
,
params
);
toBeSignedStringBuilder
.
insert
(
0
,
secret
).
append
(
secret
);
return
DigestUtils
.
md5Hex
(
toBeSignedStringBuilder
.
toString
());
}
}
src/main/java/com/sfa/job/xxljob/order/WdtQimenOrderTask.java
0 → 100644
浏览文件 @
87dac465
package
com
.
sfa
.
job
.
xxljob
.
order
;
import
cn.hutool.core.date.DateUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.http.HttpStatus
;
import
cn.hutool.json.JSONUtil
;
import
com.alibaba.fastjson2.JSONObject
;
import
com.sfa.job.pojo.response.SyncOrderDetailDto
;
import
com.sfa.job.service.order.WdtQimenOrderSyncService
;
import
com.xxl.job.core.context.XxlJobContext
;
import
com.xxl.job.core.context.XxlJobHelper
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
/**
* @author : 吕本才
* @date : 2025年08月14日
* @describe : 旺店通奇门订单数据
*/
@Component
@Slf4j
public
class
WdtQimenOrderTask
{
@Autowired
WdtQimenOrderSyncService
qimenSyncService
;
/**
* 同步财务订单数据
*/
@XxlJob
(
"syncOrderQimenDetail"
)
public
SyncOrderDetailDto
syncWdtQimenOrderDetail
()
{
Long
st
=
System
.
currentTimeMillis
();
// 暂不考虑分片
XxlJobContext
xxlJobContext
=
XxlJobContext
.
getXxlJobContext
();
int
shardingTotalCount
=
xxlJobContext
.
getShardTotal
();
int
shardingItem
=
xxlJobContext
.
getShardIndex
();
XxlJobHelper
.
log
(
">>>>>>>>>>syncWangdiantongOrderDetail Job start<<<<<<<<<<"
);
String
jobParam
=
xxlJobContext
.
getJobParam
();
boolean
jsonFlag
=
JSONUtil
.
isJson
(
jobParam
);
Date
startTime
=
null
;
Date
endTime
=
null
;
if
(
jsonFlag
)
{
JSONObject
jobParamJson
=
JSONObject
.
parseObject
(
jobParam
);
startTime
=
jobParamJson
.
getDate
(
"startTime"
);
endTime
=
jobParamJson
.
getDate
(
"endTime"
);
}
// 简单模拟分片处理,这里输出每个分片的信息
XxlJobHelper
.
log
(
"分片总数: "
+
shardingTotalCount
+
", 当前分片: "
+
shardingItem
);
XxlJobHelper
.
log
(
"xxl-job开始同步-旺店通订单明细api接口数据"
);
// 定时任务不设定开始时间和结束时间
SyncOrderDetailDto
detailDto
=
qimenSyncService
.
syncWdtQimenOrder
(
startTime
,
endTime
,
0
,
200L
);
XxlJobHelper
.
log
(
"xxl-job结束同步-旺店通订单明细api接口数据, 共同步订单{}条数据,订单明细{}条,订单批次号:{},订单的开始时间{}和结束时间{}"
,
detailDto
.
getOrderCount
(),
detailDto
.
getOrderDetailCount
(),
detailDto
.
getBatchNo
(),
DateUtil
.
formatDateTime
(
detailDto
.
getStartTime
()),
DateUtil
.
formatDateTime
(
detailDto
.
getEndTime
()));
if
(
ObjectUtil
.
equals
(
HttpStatus
.
HTTP_OK
,
detailDto
.
getCode
()))
{
XxlJobHelper
.
handleSuccess
(
JSONObject
.
toJSONString
(
detailDto
));
}
else
{
XxlJobHelper
.
handleFail
(
detailDto
.
getMessage
());
}
return
detailDto
;
}
}
src/main/resources/mapper/order/WdtQimenOrderDetailMapper.xml
0 → 100644
浏览文件 @
87dac465
差异被折叠。
点击展开。
src/main/resources/mapper/order/WdtQimenOrderMapper.xml
0 → 100644
浏览文件 @
87dac465
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论