Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
M
MultipleSourceSecurity
Project
Project
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
周宗顺
MultipleSourceSecurity
Commits
daf19865
Commit
daf19865
authored
Oct 30, 2025
by
Allen Chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit
parent
4b6442a9
Show whitespace changes
Inline
Side-by-side
Showing
51 changed files
with
2623 additions
and
185 deletions
+2623
-185
pom.xml
PddServer/pom.xml
+33
-46
src.zip
PddServer/src.zip
+0
-0
PddFZController.java
...ain/java/org/ta/pddserver/controller/PddFZController.java
+113
-4
PddGDController.java
...ain/java/org/ta/pddserver/controller/PddGDController.java
+98
-0
PddOpenController.java
...n/java/org/ta/pddserver/controller/PddOpenController.java
+77
-20
CollectMailDetailEntity.java
...java/org/ta/pddserver/entity/CollectMailDetailEntity.java
+6
-0
CollectOrderEntity.java
...main/java/org/ta/pddserver/entity/CollectOrderEntity.java
+4
-4
CollectOutMailDetailEntity.java
...a/org/ta/pddserver/entity/CollectOutMailDetailEntity.java
+55
-0
GDAttachmentEntity.java
...main/java/org/ta/pddserver/entity/GDAttachmentEntity.java
+49
-0
GDTicketEntity.java
...src/main/java/org/ta/pddserver/entity/GDTicketEntity.java
+284
-0
TraceObjectEntity.java
.../main/java/org/ta/pddserver/entity/TraceObjectEntity.java
+3
-0
CollectMailDetailMapper.java
...java/org/ta/pddserver/mapper/CollectMailDetailMapper.java
+7
-0
CollectOrderMapper.java
...main/java/org/ta/pddserver/mapper/CollectOrderMapper.java
+8
-0
LogOrderMailDetailMapper.java
...ava/org/ta/pddserver/mapper/LogOrderMailDetailMapper.java
+3
-0
LogOrderMapper.java
...src/main/java/org/ta/pddserver/mapper/LogOrderMapper.java
+9
-1
ManufacturerMapper.java
...main/java/org/ta/pddserver/mapper/ManufacturerMapper.java
+9
-0
IdentityErrorType.java
.../java/org/ta/pddserver/model/enums/IdentityErrorType.java
+23
-0
OrderProblemType.java
...n/java/org/ta/pddserver/model/enums/OrderProblemType.java
+27
-0
OrderRejectCode.java
...in/java/org/ta/pddserver/model/enums/OrderRejectCode.java
+33
-0
OrderUnpackedCode.java
.../java/org/ta/pddserver/model/enums/OrderUnpackedCode.java
+27
-0
GDTicketListRequest.java
...ta/pddserver/model/pddgd/request/GDTicketListRequest.java
+21
-0
GDTicketReplyRequest.java
...a/pddserver/model/pddgd/request/GDTicketReplyRequest.java
+115
-0
GDUploadRequest.java
...org/ta/pddserver/model/pddgd/request/GDUploadRequest.java
+16
-0
GDTicketReplyRepsonse.java
...pddserver/model/pddgd/response/GDTicketReplyRepsonse.java
+14
-0
GDTicketRepsonse.java
...g/ta/pddserver/model/pddgd/response/GDTicketRepsonse.java
+230
-0
PddServiceConsoFeeQueryRequest.java
...r/model/pddjy/request/PddServiceConsoFeeQueryRequest.java
+1
-13
PddServiceConsoInboundRequest.java
...er/model/pddjy/request/PddServiceConsoInboundRequest.java
+1
-2
PddServiceConsoOutboundNoticeRequest.java
...l/pddjy/request/PddServiceConsoOutboundNoticeRequest.java
+2
-26
TraceObject.java
...java/org/ta/pddserver/model/pddlg/common/TraceObject.java
+7
-1
ManufacturerService.java
...in/java/org/ta/pddserver/service/ManufacturerService.java
+8
-0
CollectMailDetailImpl.java
.../org/ta/pddserver/service/impl/CollectMailDetailImpl.java
+7
-0
CollectOrderImpl.java
.../java/org/ta/pddserver/service/impl/CollectOrderImpl.java
+7
-0
LogOrderImpl.java
...main/java/org/ta/pddserver/service/impl/LogOrderImpl.java
+8
-0
LogOrderMailDetailImpl.java
...org/ta/pddserver/service/impl/LogOrderMailDetailImpl.java
+4
-0
ManufacturerImpl.java
.../java/org/ta/pddserver/service/impl/ManufacturerImpl.java
+14
-0
ImageUtils.java
...rver/src/main/java/org/ta/pddserver/utils/ImageUtils.java
+105
-0
PddHttpTool.java
...ver/src/main/java/org/ta/pddserver/utils/PddHttpTool.java
+12
-4
PddJYPriceTool.java
.../src/main/java/org/ta/pddserver/utils/PddJYPriceTool.java
+16
-0
PddNationalPriceTool.java
...ain/java/org/ta/pddserver/utils/PddNationalPriceTool.java
+50
-0
PddOverseaPriceTool.java
...main/java/org/ta/pddserver/utils/PddOverseaPriceTool.java
+77
-0
CommonTest.java
PddServer/src/test/java/org/ta/pddserver/CommonTest.java
+494
-14
GDTest3.java
PddServer/src/test/java/org/ta/pddserver/GDTest3.java
+100
-0
LGTest2.java
PddServer/src/test/java/org/ta/pddserver/LGTest2.java
+10
-6
gd.json
PddServer/src/test/java/org/ta/pddserver/gd.json
+38
-0
gd2.json
PddServer/src/test/java/org/ta/pddserver/gd2.json
+44
-0
gd3.json
PddServer/src/test/java/org/ta/pddserver/gd3.json
+79
-0
gd4.json
PddServer/src/test/java/org/ta/pddserver/gd4.json
+84
-0
gd5.json
PddServer/src/test/java/org/ta/pddserver/gd5.json
+90
-0
ordercreate.json
PddServer/src/test/java/org/ta/pddserver/ordercreate.json
+24
-44
outbound.json
PddServer/src/test/java/org/ta/pddserver/outbound.json
+71
-0
upload.json
PddServer/src/test/java/org/ta/pddserver/upload.json
+6
-0
No files found.
PddServer/pom.xml
View file @
daf19865
...
...
@@ -29,12 +29,12 @@
<java.version>
17
</java.version>
</properties>
<dependencies>
<
!-- <dependency>--
>
<!-- <groupId>org.ta</groupId>--
>
<!-- <artifactId>CommonCore</artifactId>--
>
<!-- <version>1.0.1</version>--
>
<!-- <scope>compile</scope>--
>
<
!-- </dependency>--
>
<
dependency
>
<groupId>
org.ta
</groupId
>
<artifactId>
CommonCore
</artifactId
>
<version>
1.0.1
</version
>
<scope>
compile
</scope
>
<
/dependency
>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
...
...
@@ -49,28 +49,13 @@
</dependency>
<!-- mysql -->
<!-- <dependency>-->
<!-- <groupId>mysql</groupId>-->
<!-- <artifactId>mysql-connector-java</artifactId>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>com.baomidou</groupId>-->
<!-- <artifactId>mybatis-plus-spring-boot3-starter</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<scope>
provided
</scope>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-spring-boot3-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
...
...
@@ -78,26 +63,27 @@
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
</dependency>
<!-- 图片压缩工具 -->
<dependency>
<groupId>
org.mybatis
</groupId>
<artifactId>
mybatis
</artifactId>
<version>
3.5.16
</version>
<scope>
compile
</scope>
<groupId>
net.coobird
</groupId>
<artifactId>
thumbnailator
</artifactId>
<version>
0.4.19
</version>
</dependency>
<!-- HTTP请求工具(用于下载网络图片,也可使用Spring自带RestTemplate) -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-core
</artifactId>
<version>
3.5.9
</version>
<scope>
compile
</scope>
<groupId>
org.apache.httpcomponents.client5
</groupId>
<artifactId>
httpclient5
</artifactId>
<version>
5.3.1
</version>
</dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-spring
</artifactId>
<version>
3.5.9
</version>
<scope>
compile
</scope>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
</dependencies>
...
...
@@ -109,15 +95,16 @@
<version>
3.5.6
</version>
<configuration>
<includeSystemScope>
true
</includeSystemScope>
<excludes>
<exclude>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.18.42
</version>
</exclude>
</excludes>
</configuration>
<executions>
<execution>
<goals>
<goal>
repackage
</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
...
...
PddServer/src.zip
deleted
100644 → 0
View file @
4b6442a9
File deleted
PddServer/src/main/java/org/ta/pddserver/controller/PddFZController.java
View file @
daf19865
...
...
@@ -24,32 +24,49 @@ import org.ta.pddserver.utils.PddSignTool;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Slf4j
@RestController
public
class
PddFZController
{
private
static
final
String
PROVIDER_CODE
=
"HAIJI_KR"
;
private
static
final
String
WAREHOUSE_CODE
=
"HJJY001"
;
private
static
final
String
CLIENT_ID
=
"27dbbb055eef41e28124f03fdb26fba8"
;
private
static
final
String
CLIENT_SECRET
=
"4be28e29e58012b72b080431a8d47ec2ba7cab4d"
;
@Resource
LogOrderMailDetailImpl
logOrderMailDetailImpl
;
@Resource
private
TraceObjectImpl
traceObjectImpl
;
private
static
String
getNowString
()
{
Date
date
=
new
Date
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
return
sdf
.
format
(
date
);
}
@GetMapping
(
"/notify/{code}"
)
public
void
subscribe
(
@PathVariable
(
"code"
)
String
code
)
{
public
void
notify
(
@PathVariable
(
"code"
)
String
code
)
{
// code 给拼多多要发的订单code
// 根据code 查询相应信息组装发给pdd
PddLogisticsCoTrackNotifyRequest
request
=
new
PddLogisticsCoTrackNotifyRequest
();
request
.
setClient_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
request
.
setClient_id
(
CLIENT_ID
);
request
.
setShip_id
(
"567"
);
request
.
setTarget_client_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
request
.
setTarget_client_id
(
CLIENT_ID
);
request
.
setTimestamp
(
System
.
currentTimeMillis
()
/
1000
);
PddLogisticsCoTrackNotifyRequest
.
DataObject
dataObject
=
getDataObject
(
code
);
request
.
setDataObject
(
dataObject
);
request
.
encodeData
();
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
"281d79ad5117d20a51efb9e7b0d5f7ee336399b0"
));
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
request
));
String
resp
=
PddHttpTool
.
sendJsonPost
(
request
);
log
.
info
(
"resp = {}"
,
resp
);
...
...
@@ -70,4 +87,96 @@ public class PddFZController {
return
dataObjects
;
}
@GetMapping
(
"/bizAction/{mailNo}/{action}"
)
public
void
bizAction
(
@PathVariable
(
"mailNo"
)
String
mailNo
,
@PathVariable
(
"action"
)
String
action
)
{
LogOrderMailDetailEntity
logOrderMailDetailEntity
=
logOrderMailDetailImpl
.
getByMailNo
(
mailNo
);
PddServiceConsoFirstBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoFirstBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setLogisticsOrderCode
(
logOrderMailDetailEntity
.
getLogisticsOrderCode
());
notifyRequest
.
setBizAction
(
action
);
notifyRequest
.
setMailNo
(
logOrderMailDetailEntity
.
getMailNo
());
notifyRequest
.
setExpressCode
(
logOrderMailDetailEntity
.
getExpressCode
());
PddServiceConsoFirstBizActionNotifyRequest
.
Result
notifyResult
=
new
PddServiceConsoFirstBizActionNotifyRequest
.
Result
();
if
(
action
==
"warehouse_sign"
)
{
notifyRequest
.
setBizActionDesc
(
"仓库签收"
);
}
else
if
(
action
==
"warehouse_reject_sign"
)
{
notifyRequest
.
setBizActionDesc
(
"仓库拒签"
);
notifyResult
.
setCode
(
22
);
notifyResult
.
setDesc
(
"运输品类限制"
);
notifyResult
.
setRemark
(
"运输品类限制"
);
notifyRequest
.
setResult
(
notifyResult
);
}
else
if
(
action
==
"destroy"
)
{
notifyRequest
.
setBizActionDesc
(
"包裹销毁"
);
notifyResult
.
setCode
(
0
);
}
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.first.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
@GetMapping
(
"/inBound/{mailNo}/{action}"
)
public
void
inBound
(
@PathVariable
(
"mailNo"
)
String
mailNo
,
@PathVariable
(
"action"
)
String
action
)
{
LogOrderMailDetailEntity
logOrderMailDetailEntity
=
logOrderMailDetailImpl
.
getByMailNo
(
mailNo
);
PddServiceConsoInboundRequest
notifyRequest
=
new
PddServiceConsoInboundRequest
();
// PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setLogisticsOrderCode
(
logOrderMailDetailEntity
.
getLogisticsOrderCode
());
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setStatus
(
"PART_INBOUND"
);
notifyRequest
.
setPackageQuantity
(
1L
);
notifyRequest
.
setPackageInfo
(
new
PddServiceConsoInboundRequest
.
PackageInfo
());
notifyRequest
.
getPackageInfo
().
setMailNo
(
mailNo
);
notifyRequest
.
getPackageInfo
().
setExpressCode
(
logOrderMailDetailEntity
.
getExpressCode
());
notifyRequest
.
getPackageInfo
().
setLength
(
30L
);
notifyRequest
.
getPackageInfo
().
setWidth
(
30L
);
notifyRequest
.
getPackageInfo
().
setHeight
(
30L
);
notifyRequest
.
getPackageInfo
().
setWeight
(
300L
);
notifyRequest
.
getPackageInfo
().
setActualWeight
(
300L
);
notifyRequest
.
getPackageInfo
().
setGoodsType
(
"NORMAL"
);
notifyRequest
.
setResult
(
new
PddServiceConsoInboundRequest
.
Result
());
notifyRequest
.
getResult
().
setCode
(
0
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.inbound"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
}
PddServer/src/main/java/org/ta/pddserver/controller/PddGDController.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.ta.pddserver.model.pddgd.request.GDTicketReplyRequest
;
import
org.ta.pddserver.model.pddgd.response.GDTicketReplyRepsonse
;
import
org.ta.pddserver.model.pddgd.response.GDTicketRepsonse
;
import
org.ta.pddserver.model.pddjy.request.JYBaseRequestModel
;
import
org.ta.pddserver.utils.ImageUtils
;
import
org.ta.pddserver.utils.PddHttpTool
;
import
org.ta.pddserver.utils.PddSignTool
;
import
java.io.IOException
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.UUID
;
@Slf4j
@RestController
public
class
PddGDController
{
private
static
final
String
CLIENT_ID
=
"8f5f3f9c92e847b2894fc9c0afce3d61"
;
private
static
final
String
CLIENT_SECRET
=
"281d79ad5117d20a51efb9e7b0d5f7ee336399b0"
;
public
JSONObject
getTicketList
()
{
JSONObject
jsonObject
=
new
JSONObject
();
long
end
=
new
Date
().
getTime
()
/
1000
;
jsonObject
.
put
(
"end_updated_at"
,
end
);
jsonObject
.
put
(
"start_updated_at"
,
end
-
1800
);
jsonObject
.
put
(
"page"
,
1
);
jsonObject
.
put
(
"page_size"
,
100
);
jsonObject
.
put
(
"client_id"
,
CLIENT_ID
);
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
jsonObject
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.logistics.ticket.get"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPostGD
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
JSONObject
respObj
=
JSON
.
parseObject
(
resp
);
int
count
=
respObj
.
getInteger
(
"total_count"
);
JSONArray
list
=
respObj
.
getJSONArray
(
"logistics_ticket_list"
);
if
(!
list
.
isEmpty
())
{
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
JSONObject
ticket
=
list
.
getJSONObject
(
i
);
GDTicketRepsonse
gdTicketRepsonse
=
ticket
.
toJavaObject
(
GDTicketRepsonse
.
class
);
// todo 保存数据
}
}
return
respObj
;
}
public
JSONObject
replyTicket
()
{
Long
ticketId
=
1L
;
String
waybill_no
=
"waybill_no"
;
GDTicketReplyRequest
replyRequest
=
new
GDTicketReplyRequest
();
replyRequest
.
setTicket_id
(
ticketId
);
replyRequest
.
setWaybill_no
(
waybill_no
);
replyRequest
.
setHandle_result
(
"无"
);
replyRequest
.
setSign_state
(
1
);
replyRequest
.
setCompensate_state
(
1
);
replyRequest
.
setDuty
(
0
);
replyRequest
.
setExpress_dealer
(
"XXX"
);
replyRequest
.
setExpress_dealer_contact
(
"18599877823"
);
replyRequest
.
setReply_type
(
1
);
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
replyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.logistics.ticket.get"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPostGD
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
JSONObject
respObj
=
JSON
.
parseObject
(
resp
);
JSONObject
respObject
=
respObj
.
getJSONObject
(
"logistics_ticket_notify_response"
);
GDTicketReplyRepsonse
replyRepsonse
=
respObject
.
toJavaObject
(
GDTicketReplyRepsonse
.
class
);
log
.
info
(
"replyRepsonse is_success:{}"
,
replyRepsonse
.
getIs_success
());
return
respObj
;
}
}
PddServer/src/main/java/org/ta/pddserver/controller/PddOpenController.java
View file @
daf19865
...
...
@@ -84,6 +84,9 @@ public class PddOpenController {
@Resource
CollectFreightFeeDetailFeeDetailImpl
collectFreightFeeDetailFeeDetailImpl
;
@Resource
ManufacturerImpl
manufacturerImpl
;
@PostMapping
(
"/pdd-open"
)
public
JSONObject
pddOpenAPI
(
HttpServletRequest
request
,
@RequestBody
JYBaseRequestModel
requestParam
)
{
...
...
@@ -99,7 +102,7 @@ public class PddOpenController {
String
body
=
getStringFromRequest
(
request
);
log
.
info
(
"requestString = {}"
,
body
);
if
(
PddSignTool
.
verifySignFromBody
(
body
,
"
281d79ad5117d20a51efb9e7b0d5f7ee336399b
0"
,
pdd_sign
))
{
if
(
PddSignTool
.
verifySignFromBody
(
body
,
"
a5aba84483d8387030899f01276b06a19494247
0"
,
pdd_sign
))
{
log
.
info
(
"验签成功"
);
}
switch
(
requestParam
.
getType
())
{
...
...
@@ -136,9 +139,13 @@ public class PddOpenController {
FeeQuery
(
queryRequest
);
log
.
info
(
"pdd.service.conso.fee.query 集运费用查询"
);
// todo 回复 PddServiceConsoFeeQueryResponse
JSONObject
jsonObject
=
new
JSONObject
();
jsonObject
.
put
(
"success"
,
true
);
jsonObject
.
put
(
"freightFee"
,
1200
);
jsonObject
.
put
(
"rentFee"
,
200
);
jsonObject
.
put
(
"weight"
,
1200
);
return
jsonObject
;
}
break
;
case
"pdd.service.conso.order.query"
:
{
PddServiceConsoOrderQueryRequest
queryRequest
=
JSON
.
parseObject
(
body
,
PddServiceConsoOrderQueryRequest
.
class
);
OrderQuery
(
queryRequest
);
...
...
@@ -225,7 +232,7 @@ public class PddOpenController {
requestParam
.
getTarget_client_id
(),
requestParam
.
getClient_id
(),
requestParam
.
getSign
(),
requestParam
.
getTimestamp
(),
requestParam
.
getType
()
);
if
(
PddSignTool
.
verifyLGSign
(
requestParam
,
"
281d79ad5117d20a51efb9e7b0d5f7ee336399b0
"
))
{
if
(
PddSignTool
.
verifyLGSign
(
requestParam
,
"
4be28e29e58012b72b080431a8d47ec2ba7cab4d
"
))
{
log
.
info
(
"验签成功"
);
}
String
body
=
getStringFromRequest
(
request
);
...
...
@@ -308,7 +315,7 @@ public class PddOpenController {
orderBuyerDetailEntity
.
setPostCode
(
createParam
.
getBuyerDetail
().
getPostCode
());
orderBuyerDetailImpl
.
save
(
orderBuyerDetailEntity
);
for
(
PddServiceConsoOrderCreateRequest
.
Item
item:
createParam
.
getItems
())
{
for
(
PddServiceConsoOrderCreateRequest
.
Item
item
:
createParam
.
getItems
())
{
LogOrderItemEntity
orderItemEntity
=
new
LogOrderItemEntity
();
orderItemEntity
.
setLogisticsOrderCode
(
orderCreateEntity
.
getLogisticsOrderCode
());
orderItemEntity
.
setItemId
(
item
.
getItemId
());
...
...
@@ -327,7 +334,7 @@ public class PddOpenController {
orderItemImpl
.
save
(
orderItemEntity
);
}
for
(
PddServiceConsoOrderCreateRequest
.
MailDetail
mailDetail:
createParam
.
getMailDetails
())
{
for
(
PddServiceConsoOrderCreateRequest
.
MailDetail
mailDetail
:
createParam
.
getMailDetails
())
{
LogOrderMailDetailEntity
orderMailDetail
=
new
LogOrderMailDetailEntity
();
orderMailDetail
.
setLogisticsOrderCode
(
orderCreateEntity
.
getLogisticsOrderCode
());
orderMailDetail
.
setExpressCode
(
mailDetail
.
getExpressCode
());
...
...
@@ -372,9 +379,9 @@ public class PddOpenController {
// 合包单集运单
if
(
noticeParam
.
getLogisticsOrderCodes
()
!=
null
&&
!
noticeParam
.
getLogisticsOrderCodes
().
isEmpty
())
{
for
(
PddServiceConsoOutboundNoticeRequest
.
LogisticsOrderCode
logisticsOrderCode
:
noticeParam
.
getLogisticsOrderCodes
())
{
for
(
String
logisticsOrderCode
:
noticeParam
.
getLogisticsOrderCodes
())
{
CollectOrderLogisticsOrderCodeEntity
collectOrderLogisticsOrderCodeEntity
=
new
CollectOrderLogisticsOrderCodeEntity
();
collectOrderLogisticsOrderCodeEntity
.
setLogisticsOrderCode
(
logisticsOrderCode
.
getLogisticsOrderCode
()
);
collectOrderLogisticsOrderCodeEntity
.
setLogisticsOrderCode
(
logisticsOrderCode
);
collectOrderLogisticsOrderCodeEntity
.
setOrderCode
(
collectOrderEntity
.
getOrderCode
());
collectOrderLogisticsOrderCodeImpl
.
save
(
collectOrderLogisticsOrderCodeEntity
);
}
...
...
@@ -382,9 +389,9 @@ public class PddOpenController {
// 合包单一段单号
if
(
noticeParam
.
getOrderSns
()
!=
null
&&
!
noticeParam
.
getOrderSns
().
isEmpty
())
{
for
(
PddServiceConsoOutboundNoticeRequest
.
OrderSn
orderSn
:
noticeParam
.
getOrderSns
())
{
for
(
String
orderSn
:
noticeParam
.
getOrderSns
())
{
CollectOrderSnEntity
snEntity
=
new
CollectOrderSnEntity
();
snEntity
.
setOrderSn
(
orderSn
.
getOrderSn
()
);
snEntity
.
setOrderSn
(
orderSn
);
snEntity
.
setOrderCode
(
collectOrderEntity
.
getOrderCode
());
collectOrderSnImpl
.
save
(
snEntity
);
}
...
...
@@ -392,7 +399,7 @@ public class PddOpenController {
// 一段订单详情列表
if
(
noticeParam
.
getOrderDetails
()
!=
null
&&
!
noticeParam
.
getOrderDetails
().
isEmpty
())
{
for
(
PddServiceConsoOutboundNoticeRequest
.
OrderDetail
orderDetail
:
noticeParam
.
getOrderDetails
()){
for
(
PddServiceConsoOutboundNoticeRequest
.
OrderDetail
orderDetail
:
noticeParam
.
getOrderDetails
())
{
CollectOrderDetailEntity
orderDetailEntity
=
new
CollectOrderDetailEntity
();
orderDetailEntity
.
setOrderCode
(
collectOrderEntity
.
getOrderCode
());
orderDetailEntity
.
setOrderSn
(
orderDetail
.
getOrderSn
());
...
...
@@ -406,15 +413,25 @@ public class PddOpenController {
orderDetailEntity
.
setActualAmount
(
orderDetail
.
getActualAmount
());
orderDetailEntity
.
setProductName
(
orderDetail
.
getProductName
());
orderDetailEntity
.
setExportDecAmount
(
orderDetail
.
getExportDecAmount
());
// 生产销售企业
if
(
orderDetail
.
getManufacturer
()
!=
null
)
{
ManufacturerEntity
manufacturerEntity
=
new
ManufacturerEntity
();
manufacturerEntity
.
setProducerEnterpriseName
(
orderDetail
.
getManufacturer
().
getProducerEnterpriseName
());
manufacturerEntity
.
setProducerEnterpriseCode
(
orderDetail
.
getManufacturer
().
getProducerEnterpriseCode
());
manufacturerEntity
.
setProducerType
(
orderDetail
.
getManufacturer
().
getProducerType
());
manufacturerImpl
.
save
(
manufacturerEntity
);
orderDetailEntity
.
setManufacturerId
(
manufacturerEntity
.
getUid
());
}
collectOrderDetailImpl
.
save
(
orderDetailEntity
);
}
}
// 生产销售企业
// 运单详情
if
(
noticeParam
.
getMailDetails
()
!=
null
&&
!
noticeParam
.
getMailDetails
().
isEmpty
())
{
for
(
PddServiceConsoOutboundNoticeRequest
.
MailDetail
mailDetail
:
noticeParam
.
getMailDetails
()){
for
(
PddServiceConsoOutboundNoticeRequest
.
MailDetail
mailDetail
:
noticeParam
.
getMailDetails
())
{
CollectMailDetailEntity
mailDetailEntity
=
new
CollectMailDetailEntity
();
mailDetailEntity
.
setOrderCode
(
collectOrderEntity
.
getOrderCode
());
mailDetailEntity
.
setExpressCode
(
mailDetail
.
getExpressCode
());
...
...
@@ -436,7 +453,7 @@ public class PddOpenController {
CollectFreightFeeDetailEntity
collectFreightFeeDetailEntity
=
generateCollectFreightFeeDetailEntity
(
collectOrderEntity
,
freightFeeDetail
);
collectFreightFeeDetailImpl
.
save
(
collectFreightFeeDetailEntity
);
// 优惠详情
if
(
freightFeeDetail
.
getDiscountDetails
()
!=
null
&&
!
freightFeeDetail
.
getDiscountDetails
().
isEmpty
())
{
}
{
if
(
freightFeeDetail
.
getDiscountDetails
()
!=
null
&&
!
freightFeeDetail
.
getDiscountDetails
().
isEmpty
())
{
for
(
PddServiceConsoOutboundNoticeRequest
.
FreightFeeDetail
.
DiscountDetail
discountDetail
:
freightFeeDetail
.
getDiscountDetails
())
{
CollectFreightFeeDetailDiscountDetailEntity
detailDiscountDetailEntity
=
new
CollectFreightFeeDetailDiscountDetailEntity
();
detailDiscountDetailEntity
.
setOrderCode
(
collectOrderEntity
.
getOrderCode
());
...
...
@@ -446,7 +463,7 @@ public class PddOpenController {
}
}
// 费用详情
if
(
freightFeeDetail
.
getFeeDetails
()
!=
null
&&
!
freightFeeDetail
.
getFeeDetails
().
isEmpty
())
{
}
{
if
(
freightFeeDetail
.
getFeeDetails
()
!=
null
&&
!
freightFeeDetail
.
getFeeDetails
().
isEmpty
())
{
for
(
PddServiceConsoOutboundNoticeRequest
.
FreightFeeDetail
.
FeeDetail
feeDetail
:
freightFeeDetail
.
getFeeDetails
())
{
CollectFreightFeeDetailFeeDetailEntity
feeDetailFeeDetail
=
generateCollectFreightFeeDetailFeeDetailEntity
(
feeDetail
,
collectOrderEntity
);
collectFreightFeeDetailFeeDetailImpl
.
save
(
feeDetailFeeDetail
);
...
...
@@ -531,9 +548,9 @@ public class PddOpenController {
//根据集运单号获取运单详情列表
List
<
LogOrderMailDetailEntity
>
list
=
orderMailDetailImpl
.
getListByCode
(
orderUpdateEntity
.
getLogisticsOrderCode
());
for
(
LogOrderMailDetailEntity
orderMailDetailEntity
:
list
)
{
for
(
PddServiceConsoOrderUpdateRequest
.
MailDetail
mailDetail
:
listNew
)
{
if
(
orderMailDetailEntity
.
getMailNo
().
equals
(
mailDetail
.
getMailNo
()))
{
for
(
LogOrderMailDetailEntity
orderMailDetailEntity
:
list
)
{
for
(
PddServiceConsoOrderUpdateRequest
.
MailDetail
mailDetail
:
listNew
)
{
if
(
orderMailDetailEntity
.
getMailNo
().
equals
(
mailDetail
.
getMailNo
()))
{
//相同,删除
list
.
remove
(
orderMailDetailEntity
);
listNew
.
remove
(
mailDetail
);
...
...
@@ -543,14 +560,15 @@ public class PddOpenController {
}
//判断是否有剩余
for
(
PddServiceConsoOrderUpdateRequest
.
MailDetail
mailDetail
:
listNew
)
{
for
(
PddServiceConsoOrderUpdateRequest
.
MailDetail
mailDetail
:
listNew
)
{
LogOrderMailDetailEntity
orderMailDetailEntity
=
new
LogOrderMailDetailEntity
();
orderMailDetailEntity
.
setLogisticsOrderCode
(
orderUpdateEntity
.
getLogisticsOrderCode
());
orderMailDetailEntity
.
setExpressCode
(
mailDetail
.
getExpressCode
());
orderMailDetailEntity
.
setMailNo
(
mailDetail
.
getMailNo
());
orderMailDetailImpl
.
save
(
orderMailDetailEntity
);
}
for
(
LogOrderMailDetailEntity
orderMailDetailEntity
:
list
)
{
for
(
LogOrderMailDetailEntity
orderMailDetailEntity
:
list
)
{
orderMailDetailImpl
.
removeById
(
orderMailDetailEntity
.
getUid
());
}
...
...
@@ -566,6 +584,26 @@ public class PddOpenController {
reverseNotifyEntity
.
setStatus
(
notifyRequest
.
getStatus
());
reverseNotifyImpl
.
save
(
reverseNotifyEntity
);
String
orderCode
=
notifyRequest
.
getOrderCode
();
if
(
notifyRequest
.
getType
().
toUpperCase
().
equals
(
"HEBAO"
))
{
CollectOrderEntity
collectOrderEntity
=
collectOrderImpl
.
getByOrderCode
(
orderCode
);
if
(
collectOrderEntity
!=
null
)
{
if
(
notifyRequest
.
getStatus
().
toUpperCase
().
equals
(
"CANCELOUTBOUND"
))
{
collectOrderImpl
.
updateOrderStatus
(
11
,
collectOrderEntity
.
getUid
());
}
}
}
else
if
(
notifyRequest
.
getType
().
toUpperCase
().
equals
(
"JIYUN"
))
{
LogOrderEntity
logOrderEntity
=
orderImpl
.
getByOrderCode
(
orderCode
);
if
(
logOrderEntity
!=
null
)
{
if
(
notifyRequest
.
getStatus
().
toUpperCase
().
equals
(
"REJECTSIGN"
))
{
orderImpl
.
updateOrderStatus
(
11
,
logOrderEntity
.
getUid
());
}
else
if
(
notifyRequest
.
getStatus
().
toUpperCase
().
equals
(
"CANCELREJECTSIGN"
))
{
orderImpl
.
updateOrderStatus
(
21
,
logOrderEntity
.
getUid
());
}
else
if
(
notifyRequest
.
getStatus
().
toUpperCase
().
equals
(
"ONLYREFUNDSUC"
))
{
orderImpl
.
updateOrderStatus
(
31
,
logOrderEntity
.
getUid
());
}
}
}
}
public
void
FeeQuery
(
PddServiceConsoFeeQueryRequest
queryRequest
)
{
...
...
@@ -630,6 +668,25 @@ public class PddOpenController {
}
public
void
UnpackNotice
(
PddServiceConsoUnpackNoticeRequest
noticeRequest
)
{
CollectOrderEntity
collectOrderEntity
=
collectOrderImpl
.
getByOrderCode
(
noticeRequest
.
getOrderCode
());
if
(
collectOrderEntity
==
null
)
{
log
.
error
(
"未找到合包单,单号:{}"
,
noticeRequest
.
getOrderCode
());
}
else
{
if
(
noticeRequest
.
getMailDetails
()
!=
null
&&
noticeRequest
.
getMailDetails
().
size
()
>
0
)
{
for
(
PddServiceConsoUnpackNoticeRequest
.
MailDetail
mailDetail
:
noticeRequest
.
getMailDetails
())
{
CollectMailDetailEntity
collectMailDetailEntity
=
collectMailDetailImpl
.
getByOrderCodeAndMailNo
(
noticeRequest
.
getOrderCode
(),
mailDetail
.
getExpressCode
(),
mailDetail
.
getMailNo
());
if
(
collectMailDetailEntity
==
null
)
{
log
.
error
(
"合包单内包裹未找到,合包单号:{}, 快递公司:{}, 快递单号:{}"
,
noticeRequest
.
getOrderCode
(),
mailDetail
.
getExpressCode
(),
mailDetail
.
getMailNo
());
continue
;
}
if
(
collectMailDetailEntity
.
getStatus
()
!=
0
)
{
log
.
error
(
"合包单内包裹状态异常,非默认初始状态,合包单号:{}, 快递公司:{}, 快递单号:{}, 当前状态:{}"
,
noticeRequest
.
getOrderCode
(),
mailDetail
.
getExpressCode
(),
mailDetail
.
getMailNo
(),
collectMailDetailEntity
.
getStatus
());
}
collectMailDetailImpl
.
updateStatusByUid
(
11
,
collectMailDetailEntity
.
getUid
());
}
}
}
UnpackNoticeEntity
unpackNoticeEntity
=
new
UnpackNoticeEntity
();
unpackNoticeEntity
.
setOrderCode
(
noticeRequest
.
getOrderCode
());
unpackNoticeEntity
.
setBuyerCode
(
noticeRequest
.
getBuyerCode
());
...
...
PddServer/src/main/java/org/ta/pddserver/entity/CollectMailDetailEntity.java
View file @
daf19865
...
...
@@ -19,6 +19,12 @@ public class CollectMailDetailEntity {
@TableField
(
value
=
"updated"
)
private
String
updated
;
/**
* 状态 默认为0,11通知拆包,19完成拆包
*/
@TableField
(
value
=
"status"
)
private
Integer
status
;
/**
* 合包单号(必填)
...
...
PddServer/src/main/java/org/ta/pddserver/entity/CollectOrderEntity.java
View file @
daf19865
...
...
@@ -31,25 +31,25 @@ public class CollectOrderEntity {
/**
* 服务商code(必填)
*/
@TableField
(
value
=
"
status
"
)
@TableField
(
value
=
"
providerCode
"
)
private
String
providerCode
;
/**
* 集运仓code(必填)
*/
@TableField
(
value
=
"
status
"
)
@TableField
(
value
=
"
consoWarehouseCode
"
)
private
String
consoWarehouseCode
;
/**
* 合包单号(必填)
*/
@TableField
(
value
=
"
status
"
)
@TableField
(
value
=
"
orderCode
"
)
private
String
orderCode
;
/**
* 用户识别码(必填)
*/
@TableField
(
value
=
"
status
"
)
@TableField
(
value
=
"
buyerCode
"
)
private
String
buyerCode
;
...
...
PddServer/src/main/java/org/ta/pddserver/entity/CollectOutMailDetailEntity.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
"collect_out_mail_detail"
)
public
class
CollectOutMailDetailEntity
{
@TableId
(
value
=
"uid"
)
private
String
uid
;
@TableField
(
value
=
"created"
)
private
String
created
;
@TableField
(
value
=
"updated"
)
private
String
updated
;
/**
* 状态 默认为0,11通知拆包,19完成拆包
*/
@TableField
(
value
=
"status"
)
private
Integer
status
;
/**
* 合包单号(必填)
*/
@TableField
(
value
=
"orderCode"
)
private
String
orderCode
;
/**
* 快递公司编号(必填)
*/
@TableField
(
value
=
"expressCode"
)
private
String
expressCode
;
/**
* 运单号(必填)
*/
@TableField
(
value
=
"mailNo"
)
private
String
mailNo
;
/**
* 包裹对应的仓库编码(非必填)
*/
@TableField
(
value
=
"consoWarehouseCode"
)
private
String
consoWarehouseCode
;
}
PddServer/src/main/java/org/ta/pddserver/entity/GDAttachmentEntity.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
@Data
@TableName
(
"gd_attachment"
)
public
class
GDAttachmentEntity
{
@TableId
(
value
=
"uid"
)
private
String
uid
;
@TableField
(
value
=
"created"
)
private
String
created
;
@TableField
(
value
=
"updated"
)
private
String
updated
;
@TableField
(
value
=
"state"
)
private
Integer
state
;
@TableField
(
value
=
"remarks"
)
private
String
remarks
;
@TableField
(
value
=
"status"
)
private
Integer
status
;
/**
* 工单id
*/
@TableField
(
value
=
"tickId"
)
private
Long
tickId
;
/**
* url
*/
@TableField
(
value
=
"url"
)
private
String
url
;
/**
* 附件类型
*/
@TableField
(
value
=
"type"
)
private
String
type
;
}
PddServer/src/main/java/org/ta/pddserver/entity/GDTicketEntity.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
lombok.Data
;
import
org.ta.pddserver.model.pddgd.response.GDTicketRepsonse
;
import
java.io.Serializable
;
import
java.util.List
;
@Data
@TableName
(
"gd_ticket"
)
public
class
GDTicketEntity
{
private
static
final
long
serialVersionUID
=
1L
;
@TableId
(
value
=
"uid"
)
private
String
uid
;
@TableField
(
value
=
"created"
)
private
String
created
;
@TableField
(
value
=
"updated"
)
private
String
updated
;
@TableField
(
value
=
"state"
)
private
Integer
state
;
@TableField
(
value
=
"remarks"
)
private
String
remarks
;
/**
* 工单ID(唯一标识,自增或业务生成)
* 数据库字段:ticket_id
*/
@TableField
(
value
=
"status"
)
private
Long
ticket_id
;
/**
* 工单创建来源
* 0:平台,1:消费者,2:商家
* 数据库字段:create_type
*/
@TableField
(
value
=
"status"
)
private
Integer
create_type
;
/**
* 收件地址(64位)
* 工单来源为消费者时必填,其他来源为空
* 数据库字段:receive_address
*/
@TableField
(
value
=
"status"
)
private
String
receive_address
;
/**
* 揽件地址(64位)
* 工单来源为商家时必填,其他来源为空
* 数据库字段:send_address
*/
@TableField
(
value
=
"status"
)
private
String
send_address
;
/**
* 订单号生成的物流单号(预生成物流单号)
* 数据库字段:pre_delivery_id
*/
@TableField
(
value
=
"status"
)
private
String
pre_delivery_id
;
/**
* 物流商处理结果
* 数据库字段:handle_result
*/
@TableField
(
value
=
"status"
)
private
String
handle_result
;
/**
* 物流商快递编码(关联物流商信息)
* 数据库字段:express_company_id
*/
@TableField
(
value
=
"status"
)
private
Integer
express_company_id
;
/**
* 赔付状态
* 0:默认(未涉及赔付),1:未赔付,2:已赔付
* 数据库字段:compensate_state
*/
@TableField
(
value
=
"status"
)
private
Integer
compensate_state
;
/**
* 赔付金额(单位:分)
* 数据库字段:compensate_amount
*/
@TableField
(
value
=
"status"
)
private
Long
compensate_amount
;
/**
* 物流商回传凭证(List格式,存储附件信息)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:express_attachment
*/
@TableField
(
value
=
"status"
)
private
List
<
GDTicketRepsonse
.
ExpressAttachment
>
express_attachment
;
/**
* 签收状态
* 0:默认(未涉及签收),1:未签收,2:已签收
* 数据库字段:sign_state
*/
@TableField
(
value
=
"status"
)
private
Integer
sign_state
;
/**
* 处理人(物流商侧处理工单的人员姓名)
* 数据库字段:express_dealer
*/
@TableField
(
value
=
"status"
)
private
String
express_dealer
;
/**
* 处理人联系方式(手机号或座机号)
* 数据库字段:express_dealer_contact
*/
@TableField
(
value
=
"status"
)
private
String
express_dealer_contact
;
/**
* 工单退回次数
* 0:首次下发,1:二次下发,2:三次下发...
* 数据库字段:retreat_count
*/
@TableField
(
value
=
"status"
)
private
Integer
retreat_count
;
/**
* 联系人姓名(消费者姓名,工单来源为消费者时必填)
* 数据库字段:receive_name
*/
@TableField
(
value
=
"status"
)
private
String
receive_name
;
/**
* 联系人电话(消费者手机号,工单来源为消费者时必填)
* 数据库字段:receive_contact
*/
@TableField
(
value
=
"status"
)
private
String
receive_contact
;
/**
* 工单创建时间戳(毫秒级)
* 数据库字段:created_at
*/
@TableField
(
value
=
"status"
)
private
Long
created_at
;
/**
* 工单最后更新时间戳(含申诉、处理结果更新时间,毫秒级)
* 数据库字段:updated_at
*/
@TableField
(
value
=
"status"
)
private
Long
updated_at
;
/**
* 问题描述(工单核心问题标题,如"包裹丢失"、"派送延迟")
* 数据库字段:title
*/
@TableField
(
value
=
"status"
)
private
String
title
;
/**
* 备注(申诉内容、补充说明,最大长度2048字符)
* 数据库字段:description
*/
@TableField
(
value
=
"status"
)
private
String
description
;
/**
* 问题来源
* 0:买家,1:卖家
* 数据库字段:source
*/
@TableField
(
value
=
"status"
)
private
Integer
source
;
/**
* 运单号(可能为空,如未生成物流单的预咨询工单)
* 数据库字段:waybill_no
*/
@TableField
(
value
=
"status"
)
private
String
waybill_no
;
/**
* 紧急度
* 0:中,1:紧急
* 数据库字段:urgent_type
*/
@TableField
(
value
=
"status"
)
private
Integer
urgent_type
;
/**
* 问题类型ID(关联问题类型表,如1-丢件,2-损件)
* 数据库字段:type_id
*/
@TableField
(
value
=
"status"
)
private
Integer
type_id
;
/**
* 客服创建工单时上传的附件列表(List格式,存储附件URL)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:attach_url
*/
@TableField
(
value
=
"status"
)
private
List
<
String
>
attach_url
;
/**
* 物流商回复状态
* 0:待回复,1:已回复
* 数据库字段:status
*/
@TableField
(
value
=
"status"
)
private
Integer
status
;
/**
* 末端品牌代码(如自提柜品牌编码,非末端工单为空)
* 数据库字段:cabinet_code
*/
@TableField
(
value
=
"status"
)
private
String
cabinet_code
;
/**
* 物流投诉标签(数组格式,存储标签ID,如[1,3,5])
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:sub_type_ids
*/
@TableField
(
value
=
"status"
)
private
List
<
Integer
>
subTypeIds
;
/**
* 寄件单号(退货场景下的寄件订单号,非退货工单为空)
* 数据库字段:mail_order_sn
*/
@TableField
(
value
=
"status"
)
private
String
mail_order_sn
;
/**
* 订单金额(单位:分,关联工单对应的订单金额)
* 数据库字段:pay_amount
*/
@TableField
(
value
=
"status"
)
private
Long
pay_amount
;
/**
* 国家/区域名称(集运工单特有,如"美国"、"中国香港")
* 数据库字段:area_name
*/
@TableField
(
value
=
"status"
)
private
String
area_name
;
/**
* 用户投诉时上传的附件URL(数组格式,存储URL)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:attachment_urls_by_customer
*/
@TableField
(
value
=
"status"
)
private
List
<
String
>
attachment_urls_by_customer
;
/**
* 物流商回传凭证DTO(内部静态类,封装附件详情)
* 对应 express_attachment 字段的List元素结构
*/
@Data
public
static
class
ExpressAttachment
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 附件URL(如图片、文档链接)
*/
private
String
url
;
}
}
PddServer/src/main/java/org/ta/pddserver/entity/TraceObjectEntity.java
View file @
daf19865
...
...
@@ -105,4 +105,7 @@ public class TraceObjectEntity {
@TableField
(
value
=
"remark"
)
private
String
remark
;
@TableField
(
value
=
"statusCode"
)
private
String
statusCode
;
}
PddServer/src/main/java/org/ta/pddserver/mapper/CollectMailDetailMapper.java
View file @
daf19865
...
...
@@ -2,8 +2,15 @@ package org.ta.pddserver.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Select
;
import
org.apache.ibatis.annotations.Update
;
import
org.ta.pddserver.entity.CollectMailDetailEntity
;
@Mapper
public
interface
CollectMailDetailMapper
extends
BaseMapper
<
CollectMailDetailEntity
>
{
@Select
(
"SELECT * FROM `collect_mail_detail` WHERE `orderCode` = #{orderCode} AND `expressCode` = #{expressCode} AND `mailNo` = #{mailNo};"
)
CollectMailDetailEntity
selectByOrderCodeAndExpressCodeAndMailNo
(
String
orderCode
,
String
expressCode
,
String
mailNo
);
@Update
(
"UPDATE `collect_mail_detail` SET `status` = #{status} WHERE `uid` = #{uid};"
)
int
updateStatusByUid
(
int
status
,
String
uid
);
}
PddServer/src/main/java/org/ta/pddserver/mapper/CollectOrderMapper.java
View file @
daf19865
...
...
@@ -2,8 +2,16 @@ package org.ta.pddserver.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Select
;
import
org.apache.ibatis.annotations.Update
;
import
org.ta.pddserver.entity.CollectOrderEntity
;
@Mapper
public
interface
CollectOrderMapper
extends
BaseMapper
<
CollectOrderEntity
>
{
@Select
(
"SELECT * FROM `collect_order` WHERE `orderCode` = #{orderCode};"
)
CollectOrderEntity
findByOrderCode
(
String
orderCode
);
@Update
(
"UPDATE `collect_order` SET `status` = #{status} WHERE `uid` = #{uid};"
)
int
updateOrderStatusById
(
int
status
,
String
uid
);
}
PddServer/src/main/java/org/ta/pddserver/mapper/LogOrderMailDetailMapper.java
View file @
daf19865
...
...
@@ -12,4 +12,7 @@ public interface LogOrderMailDetailMapper extends BaseMapper<LogOrderMailDetailE
@Select
(
"SELECT * FROM `log_order_mail_detail` WHERE `logisticsOrderCode` = #{logisticsOrderCode} AND `state` > 0;"
)
List
<
LogOrderMailDetailEntity
>
getListByCode
(
String
logisticsOrderCode
);
@Select
(
"SELECT * FROM `log_order_mail_detail` WHERE `mailNo` = #{mailNo} AND `state` > 0;"
)
LogOrderMailDetailEntity
findByMailNo
(
String
mailNo
);
}
PddServer/src/main/java/org/ta/pddserver/mapper/LogOrderMapper.java
View file @
daf19865
...
...
@@ -2,11 +2,19 @@ package org.ta.pddserver.mapper;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
org.apache.ibatis.annotations.Update
;
import
org.ta.pddserver.entity.LogOrderEntity
;
@Mapper
public
interface
LogOrderMapper
extends
BaseMapper
<
LogOrderEntity
>
{
@Update
(
"UPDATE `log_order` SET `packageQuantity` = ${packageQuantity} WHERE `logisticsOrderCode` = #{logisticsOrderCode};"
)
Boolean
savePackageQuantity
(
String
logisticsOrderCode
,
long
packageQuantity
);
Boolean
savePackageQuantity
(
@Param
(
"logisticsOrderCode"
)
String
logisticsOrderCode
,
@Param
(
"packageQuantity"
)
long
packageQuantity
);
@Select
(
"SELECT * FROM `log_order` WHERE `logisticsOrderCode` = #{logisticsOrderCode};"
)
LogOrderEntity
selectByOrderCode
(
String
logisticsOrderCode
);
@Update
(
"UPDATE `log_order` SET `status` = #{status} WHERE `uid` = #{uid};"
)
int
updateOrderStatusById
(
int
status
,
String
uid
);
}
PddServer/src/main/java/org/ta/pddserver/mapper/ManufacturerMapper.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.ta.pddserver.entity.ManufacturerEntity
;
@Mapper
public
interface
ManufacturerMapper
extends
BaseMapper
<
ManufacturerEntity
>
{
}
PddServer/src/main/java/org/ta/pddserver/model/enums/IdentityErrorType.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
enums
;
import
lombok.Getter
;
public
enum
IdentityErrorType
{
TelephoneWrong
(
302
,
"用户用的是护照号,校验失败(手机号格式有问题)"
),
NameWrong
(
303
,
"用户用的是护照号,校验失败(姓名格式有问题)"
),
UnknownWrong
(
306
,
"其它网络类可以重试的未知错误(如依赖下游不可用或超时)"
),
InformationInconsistency
(
307
,
"用户用的是通关号,校验失败(无法知道哪个信息错误)"
),
CodeUnused
(
308
,
"用户用的是通关号,通关号不存在"
),
CodeTelephoneInconsistency
(
309
,
"用户用的是通关号,手机号和通关号不符"
),
CodeNameInconsistency
(
310
,
"用户用的是通关号,姓名和通关号不符"
);
@Getter
private
int
value
;
@Getter
private
String
desc
;
IdentityErrorType
(
int
val
,
String
desc
)
{
this
.
value
=
val
;
this
.
desc
=
desc
;
}
}
PddServer/src/main/java/org/ta/pddserver/model/enums/OrderProblemType.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
enums
;
import
lombok.Getter
;
public
enum
OrderProblemType
{
JinYun
(
1
,
"禁运"
),
ChaoDa
(
2
,
"超大"
),
ChaoZhong
(
3
,
"超重"
),
PinLeiXianZhi
(
4
,
"运输品类限制(特货)"
),
DiuShi
(
5
,
"丢失"
),
PoSun
(
6
,
"破损"
),
ShenQingTuiHuo
(
7
,
"申请退货"
),
BaoGuoWuXiao
(
8
,
"包裹无效(无实物)"
),
DaoFuJian
(
9
,
"到付件"
),
Other
(
10
,
"非原面单/外包装"
)
;
@Getter
private
int
value
;
@Getter
private
String
desc
;
OrderProblemType
(
int
val
,
String
desc
)
{
this
.
value
=
val
;
this
.
desc
=
desc
;
}
}
PddServer/src/main/java/org/ta/pddserver/model/enums/OrderRejectCode.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
enums
;
import
lombok.Getter
;
public
enum
OrderRejectCode
{
ChaoDa
(
20
,
"超大"
,
"很抱歉,您的包裹因超大原因被{}集运仓拒签,请联系卖家并申请退款"
,
"超大"
),
ChaoZhong
(
21
,
"超重"
,
"很抱歉,您的包裹超重原因被{}集运仓拒签,请联系卖家并申请退款"
,
"超重"
),
JinYun
(
22
,
"运输品类限制"
,
"很抱歉,您的包裹因运输品类限制原因被{}集运仓拒签,请联系卖家并申请退款"
,
"海关违禁品(目的地海关政策禁止入境商品)"
),
TeHuo
(
23
,
"运输品类限制"
,
"很抱歉,您的包裹因运输品类限制原因被{}集运仓拒签,请联系卖家并申请退款"
,
"运输品类限制(液体、粉末、带电、带磁性、易碎品)"
),
YeWuYiChang
(
24
,
"货到付款"
,
"很抱歉,您的包裹因货到付款原因被{}集运仓拒签,请联系卖家并申请退款"
,
"到付件,”到付“,是指卖家拍下商品时为货到付款,仓库不承担这部分一段费用而拒收。"
),
YeWuYiChang2
(
25
,
"非原面单/外包装"
,
"很抱歉,您的包裹因非原面单/外包装原因被{}集运仓拒签,请联系卖家并申请退款"
,
"非原面单/外包装"
),
ShouHou
(
26
,
"申请退货"
,
"很抱歉,您的包裹因申请退货原因被{}集运仓拒签,请联系卖家并申请退款"
,
"申请退货"
),
ShenQingTuiHuo
(
27
,
"破损"
,
"很抱歉,您的包裹因破损原因被{}集运仓拒签,请联系卖家并申请退款"
,
"破损"
),
BaoGuoWuXiao
(
33
,
"包裹无效"
,
"很抱歉,您的包裹因包裹无效原因无法正常入库,请速与{}集运商联系。"
,
"包裹无效(无实物)"
)
;
@Getter
private
int
value
;
@Getter
private
String
desc
;
@Getter
private
String
remark
;
@Getter
private
String
info
;
OrderRejectCode
(
int
val
,
String
desc
,
String
remark
,
String
info
)
{
this
.
value
=
val
;
this
.
desc
=
desc
;
this
.
remark
=
remark
;
this
.
info
=
info
;
}
}
PddServer/src/main/java/org/ta/pddserver/model/enums/OrderUnpackedCode.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
enums
;
import
lombok.Getter
;
public
enum
OrderUnpackedCode
{
Code1
(
1
,
"您的货物来货少件/破损,如沟通已按您的意见处理。"
),
Code2
(
2
,
"您的包裹超重/超尺寸,如沟通已为您分箱"
),
Code3
(
3
,
"您的包裹超重/超尺寸,如沟通已为您更换渠道"
),
Code4
(
4
,
"您的包裹超重/超尺寸,如沟通已为您分箱/更换渠道"
),
Code5
(
5
,
"您的包裹内物单一商品数量过多,已为您分箱"
),
Code6
(
6
,
"易碎品国际转运不包损,如沟通已按您的意见处理。"
),
Code7
(
7
,
"您的合包金额已超150美金,海关将征收关税,如沟通已为您更换渠道"
),
Code8
(
8
,
"农副产品可能产生检疫费或者分离废弃费,如沟通已按您的意见处理。"
),
Code9
(
9
,
"农副/肉类/酒类等产品,如被查验产生费用需个人承担"
),
Code10
(
10
,
"您的包裹部分商品原渠道不可运输,如沟通为您转其他方式运输"
)
;
@Getter
private
int
value
;
@Getter
private
String
desc
;
OrderUnpackedCode
(
int
val
,
String
desc
)
{
this
.
value
=
val
;
this
.
desc
=
desc
;
}
}
PddServer/src/main/java/org/ta/pddserver/model/pddgd/request/GDTicketListRequest.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
pddgd
.
request
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
GDTicketListRequest
{
private
String
client_id
;
private
Long
end_updated_at
;
private
Long
start_updated_at
;
private
Integer
page
;
private
Integer
page_size
;
private
String
data_type
;
private
String
type
;
private
Long
timestamp
;
private
String
sign
;
}
PddServer/src/main/java/org/ta/pddserver/model/pddgd/request/GDTicketReplyRequest.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
pddgd
.
request
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
GDTicketReplyRequest
{
/**
* 当物流服务商在处理工单时,需要上传一些图片附件时,可以设置该字段值,格式为字符串URL的数组转换成的JSON字符串
*/
private
List
<
String
>
attach_paths
;
/**
* 当物流服务商在处理工单时,需要上传一些图片附件时,可以设置该字段值,格式为字符串URL的数组转换成的JSON字符串
*/
private
String
attach_path_list
;
/**
* 工单id
*/
private
Long
ticket_id
;
/**
* 运单号
*/
private
String
waybill_no
;
/**
* 处理结果
* reply_type=2时,可以给个值:“无”
*/
private
String
handle_result
;
/**
* 签收状态,0:默认,1:未签收,2:已签收
* reply_type=2时,可以给个值:0
*/
private
Integer
sign_state
;
/**
* 是否赔付,0:默认,1:未赔付,2:已赔付
* reply_type=2时,可以给个值:0
*/
private
Integer
compensate_state
;
/**
* 赔付金额(单位:分)
* reply_type=2时,可以给个值:0
*/
private
Integer
compensate_amount
;
/**
* 责任方,0:默认, 1:消费者,2:商家,3:快递公司,4:其他
*/
private
Integer
duty
;
/**
* 处理人
*/
private
String
express_dealer
;
/**
* 处理人联系方式
* 联系方式支持以下类型(联系方式格式错误,数据会推送失败)
* 1、手机号:需符合正则,参考正则0?(13|14|15|17|18|19)[0-9]{9}
* 2、座机:含区号、不带“-”需符合正则,参考正则
* \\d{3}\\d{8}|\\d{4}\\d{7,8}
* 3、官方号码:需提前沟通加白
*/
private
String
express_dealer_contact
;
/**
* 回复类型 1:回复工单处理结果,2: 回复电联结果
* 当为空时,默认值为1
*/
private
Integer
reply_type
;
/**
* 电联结果 当reply_type=2时,为必填项,同时该字段的值为一个json格式的字符串
*/
private
String
reply_call_result
;
/**
* 电联结果 当reply_type=2时,为必填项,同时该字段的值为一个json格式的字符串
*/
private
ReplyCallResult
replyCallResult
;
@Data
public
static
final
class
ReplyCallResult
{
/**
* 电联结果
*/
private
Integer
call_result
;
/**
* 电联时间戳
*/
private
String
call_timestamp
;
/**
* 回拨人姓名
*/
private
String
caller_name
;
/**
* 回拨联系方式
*/
private
String
caller_contract
;
}
private
String
client_id
;
private
String
data_type
;
private
String
type
;
private
Long
timestamp
;
private
String
sign
;
}
PddServer/src/main/java/org/ta/pddserver/model/pddgd/request/GDUploadRequest.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
pddgd
.
request
;
import
lombok.Data
;
@Data
public
class
GDUploadRequest
{
private
String
client_id
;
private
String
data_type
;
private
String
type
;
private
Long
timestamp
;
private
String
sign
;
private
String
image
;
}
PddServer/src/main/java/org/ta/pddserver/model/pddgd/response/GDTicketReplyRepsonse.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
pddgd
.
response
;
import
lombok.Data
;
@Data
public
class
GDTicketReplyRepsonse
{
private
static
final
long
serialVersionUID
=
1L
;
private
Boolean
is_success
;
private
String
request_id
;
}
PddServer/src/main/java/org/ta/pddserver/model/pddgd/response/GDTicketRepsonse.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
model
.
pddgd
.
response
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
public
class
GDTicketRepsonse
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 工单ID(唯一标识,自增或业务生成)
* 数据库字段:ticket_id
*/
private
Long
ticket_id
;
/**
* 工单创建来源
* 0:平台,1:消费者,2:商家
* 数据库字段:create_type
*/
private
Integer
create_type
;
/**
* 收件地址(64位)
* 工单来源为消费者时必填,其他来源为空
* 数据库字段:receive_address
*/
private
String
receive_address
;
/**
* 揽件地址(64位)
* 工单来源为商家时必填,其他来源为空
* 数据库字段:send_address
*/
private
String
send_address
;
/**
* 订单号生成的物流单号(预生成物流单号)
* 数据库字段:pre_delivery_id
*/
private
String
pre_delivery_id
;
/**
* 物流商处理结果
* 数据库字段:handle_result
*/
private
String
handle_result
;
/**
* 物流商快递编码(关联物流商信息)
* 数据库字段:express_company_id
*/
private
Integer
express_company_id
;
/**
* 赔付状态
* 0:默认(未涉及赔付),1:未赔付,2:已赔付
* 数据库字段:compensate_state
*/
private
Integer
compensate_state
;
/**
* 赔付金额(单位:分)
* 数据库字段:compensate_amount
*/
private
Long
compensate_amount
;
/**
* 物流商回传凭证(List格式,存储附件信息)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:express_attachment
*/
private
List
<
ExpressAttachment
>
express_attachment
;
/**
* 签收状态
* 0:默认(未涉及签收),1:未签收,2:已签收
* 数据库字段:sign_state
*/
private
Integer
sign_state
;
/**
* 处理人(物流商侧处理工单的人员姓名)
* 数据库字段:express_dealer
*/
private
String
express_dealer
;
/**
* 处理人联系方式(手机号或座机号)
* 数据库字段:express_dealer_contact
*/
private
String
express_dealer_contact
;
/**
* 工单退回次数
* 0:首次下发,1:二次下发,2:三次下发...
* 数据库字段:retreat_count
*/
private
Integer
retreat_count
;
/**
* 联系人姓名(消费者姓名,工单来源为消费者时必填)
* 数据库字段:receive_name
*/
private
String
receive_name
;
/**
* 联系人电话(消费者手机号,工单来源为消费者时必填)
* 数据库字段:receive_contact
*/
private
String
receive_contact
;
/**
* 工单创建时间戳(毫秒级)
* 数据库字段:created_at
*/
private
Long
created_at
;
/**
* 工单最后更新时间戳(含申诉、处理结果更新时间,毫秒级)
* 数据库字段:updated_at
*/
private
Long
updated_at
;
/**
* 问题描述(工单核心问题标题,如"包裹丢失"、"派送延迟")
* 数据库字段:title
*/
private
String
title
;
/**
* 备注(申诉内容、补充说明,最大长度2048字符)
* 数据库字段:description
*/
private
String
description
;
/**
* 问题来源
* 0:买家,1:卖家
* 数据库字段:source
*/
private
Integer
source
;
/**
* 运单号(可能为空,如未生成物流单的预咨询工单)
* 数据库字段:waybill_no
*/
private
String
waybill_no
;
/**
* 紧急度
* 0:中,1:紧急
* 数据库字段:urgent_type
*/
private
Integer
urgent_type
;
/**
* 问题类型ID(关联问题类型表,如1-丢件,2-损件)
* 数据库字段:type_id
*/
private
Integer
type_id
;
/**
* 客服创建工单时上传的附件列表(List格式,存储附件URL)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:attach_url
*/
private
List
<
String
>
attach_url
;
/**
* 物流商回复状态
* 0:待回复,1:已回复
* 数据库字段:status
*/
private
Integer
status
;
/**
* 末端品牌代码(如自提柜品牌编码,非末端工单为空)
* 数据库字段:cabinet_code
*/
private
String
cabinet_code
;
/**
* 物流投诉标签(数组格式,存储标签ID,如[1,3,5])
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:sub_type_ids
*/
private
List
<
Integer
>
subTypeIds
;
/**
* 寄件单号(退货场景下的寄件订单号,非退货工单为空)
* 数据库字段:mail_order_sn
*/
private
String
mail_order_sn
;
/**
* 订单金额(单位:分,关联工单对应的订单金额)
* 数据库字段:pay_amount
*/
private
Long
pay_amount
;
/**
* 国家/区域名称(集运工单特有,如"美国"、"中国香港")
* 数据库字段:area_name
*/
private
String
area_name
;
/**
* 用户投诉时上传的附件URL(数组格式,存储URL)
* 数据库存储:JSON字符串,查询时自动反序列化为List
* 数据库字段:attachment_urls_by_customer
*/
private
List
<
String
>
attachment_urls_by_customer
;
/**
* 物流商回传凭证DTO(内部静态类,封装附件详情)
* 对应 express_attachment 字段的List元素结构
*/
@Data
public
static
class
ExpressAttachment
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 附件URL(如图片、文档链接)
*/
private
String
url
;
}
}
PddServer/src/main/java/org/ta/pddserver/model/pddjy/request/PddServiceConsoFeeQueryRequest.java
View file @
daf19865
...
...
@@ -30,7 +30,7 @@ public class PddServiceConsoFeeQueryRequest extends JYBaseRequestModel implement
/**
* 集运单号列表(必填)
*/
private
List
<
LogisticsOrderCode
>
logisticsOrderCodes
;
private
List
<
String
>
logisticsOrderCodes
;
/**
* 业务类型(必填,固定为CONSO-集运)
...
...
@@ -73,18 +73,6 @@ public class PddServiceConsoFeeQueryRequest extends JYBaseRequestModel implement
private
ReceiverDetail
receiverDetail
;
/**
* 集运单号列表项
*/
@Data
public
static
class
LogisticsOrderCode
{
/**
* 集运单号(必填)
*/
private
String
logisticsOrderCode
;
}
/**
* 运单详情
*/
...
...
PddServer/src/main/java/org/ta/pddserver/model/pddjy/request/PddServiceConsoInboundRequest.java
View file @
daf19865
...
...
@@ -6,9 +6,8 @@ import lombok.EqualsAndHashCode;
import
java.io.Serial
;
import
java.io.Serializable
;
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
public
class
PddServiceConsoInboundRequest
extends
JYBaseRequestModel
implements
Serializable
{
public
class
PddServiceConsoInboundRequest
implements
Serializable
{
@Serial
private
static
final
long
serialVersionUID
=
1L
;
...
...
PddServer/src/main/java/org/ta/pddserver/model/pddjy/request/PddServiceConsoOutboundNoticeRequest.java
View file @
daf19865
...
...
@@ -36,12 +36,12 @@ public class PddServiceConsoOutboundNoticeRequest extends JYBaseRequestModel imp
/**
* 集运单号列表(合包中包含的集运单,非必填)
*/
private
List
<
LogisticsOrderCode
>
logisticsOrderCodes
;
private
List
<
String
>
logisticsOrderCodes
;
/**
* 一段订单号列表(合包中包含的订单,非必填)
*/
private
List
<
OrderSn
>
orderSns
;
private
List
<
String
>
orderSns
;
/**
* 一段订单详情列表(非必填)
...
...
@@ -94,30 +94,6 @@ public class PddServiceConsoOutboundNoticeRequest extends JYBaseRequestModel imp
private
FreightFeeDetail
freightFeeDetail
;
/**
* 集运单号列表项
*/
@Data
public
static
class
LogisticsOrderCode
{
/**
* 集运单号(必填)
*/
private
String
logisticsOrderCode
;
}
/**
* 一段订单号列表项
*/
@Data
public
static
class
OrderSn
{
/**
* 一段订单号(必填)
*/
private
String
orderSn
;
}
/**
* 一段订单详情
*/
...
...
PddServer/src/main/java/org/ta/pddserver/model/pddlg/common/TraceObject.java
View file @
daf19865
...
...
@@ -167,10 +167,16 @@ public class TraceObject {
traceObject
.
setSiteName
(
traceObjectEntity
.
getSiteName
());
traceObject
.
setSiteNo
(
traceObjectEntity
.
getSiteNo
());
traceObject
.
setSiteType
(
traceObjectEntity
.
getSiteType
());
traceObject
.
setStatus
(
String
.
valueOf
(
traceObjectEntity
.
getStatus
()
));
traceObject
.
setStatus
(
traceObjectEntity
.
getStatusCode
(
));
traceObject
.
setTimeZone
(
traceObjectEntity
.
getTimeZone
());
traceObject
.
setTrackingNumber
(
traceObjectEntity
.
getTrackingNumber
());
traceObject
.
setTransferFlag
(
traceObjectEntity
.
getTransferFlag
());
traceObject
.
setNextSiteName
(
traceObjectEntity
.
getNextSiteName
());
traceObject
.
setNextSiteType
(
traceObjectEntity
.
getNextSiteType
());
traceObject
.
setNextSiteNo
(
traceObjectEntity
.
getNextSiteNo
());
traceObject
.
setFailReason
(
traceObjectEntity
.
getFailReason
());
traceObject
.
setSignerName
(
traceObjectEntity
.
getSignerName
());
traceObject
.
setAddress
(
traceObjectEntity
.
getAddress
());
return
traceObject
;
}
...
...
PddServer/src/main/java/org/ta/pddserver/service/ManufacturerService.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
org.ta.pddserver.entity.ManufacturerEntity
;
public
interface
ManufacturerService
extends
IService
<
ManufacturerEntity
>
{
}
PddServer/src/main/java/org/ta/pddserver/service/impl/CollectMailDetailImpl.java
View file @
daf19865
...
...
@@ -11,4 +11,11 @@ import org.ta.pddserver.service.CollectMailDetailService;
public
class
CollectMailDetailImpl
extends
ServiceImpl
<
CollectMailDetailMapper
,
CollectMailDetailEntity
>
implements
CollectMailDetailService
{
public
CollectMailDetailEntity
getByOrderCodeAndMailNo
(
String
orderCode
,
String
expressCode
,
String
mailNo
)
{
return
baseMapper
.
selectByOrderCodeAndExpressCodeAndMailNo
(
orderCode
,
expressCode
,
mailNo
);
}
public
int
updateStatusByUid
(
int
status
,
String
uid
)
{
return
baseMapper
.
updateStatusByUid
(
status
,
uid
);
}
}
\ No newline at end of file
PddServer/src/main/java/org/ta/pddserver/service/impl/CollectOrderImpl.java
View file @
daf19865
...
...
@@ -11,4 +11,11 @@ import org.ta.pddserver.service.CollectOrderService;
public
class
CollectOrderImpl
extends
ServiceImpl
<
CollectOrderMapper
,
CollectOrderEntity
>
implements
CollectOrderService
{
public
CollectOrderEntity
getByOrderCode
(
String
orderCode
)
{
return
this
.
baseMapper
.
findByOrderCode
(
orderCode
);
}
public
int
updateOrderStatus
(
int
status
,
String
uid
)
{
return
this
.
baseMapper
.
updateOrderStatusById
(
status
,
uid
);
}
}
\ No newline at end of file
PddServer/src/main/java/org/ta/pddserver/service/impl/LogOrderImpl.java
View file @
daf19865
...
...
@@ -16,4 +16,12 @@ public class LogOrderImpl extends ServiceImpl<LogOrderMapper, LogOrderEntity> im
return
result
;
}
public
LogOrderEntity
getByOrderCode
(
String
orderCode
)
{
return
baseMapper
.
selectByOrderCode
(
orderCode
);
}
public
int
updateOrderStatus
(
int
status
,
String
uid
)
{
return
baseMapper
.
updateOrderStatusById
(
status
,
uid
);
}
}
\ No newline at end of file
PddServer/src/main/java/org/ta/pddserver/service/impl/LogOrderMailDetailImpl.java
View file @
daf19865
...
...
@@ -16,4 +16,8 @@ public class LogOrderMailDetailImpl extends ServiceImpl<LogOrderMailDetailMapper
List
<
LogOrderMailDetailEntity
>
list
=
baseMapper
.
getListByCode
(
logisticsOrderCode
);
return
list
;
}
public
LogOrderMailDetailEntity
getByMailNo
(
String
mailNo
)
{
return
baseMapper
.
findByMailNo
(
mailNo
);
}
}
\ No newline at end of file
PddServer/src/main/java/org/ta/pddserver/service/impl/ManufacturerImpl.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
org.springframework.stereotype.Service
;
import
org.ta.pddserver.entity.ManufacturerEntity
;
import
org.ta.pddserver.mapper.ManufacturerMapper
;
import
org.ta.pddserver.service.ManufacturerService
;
@Service
public
class
ManufacturerImpl
extends
ServiceImpl
<
ManufacturerMapper
,
ManufacturerEntity
>
implements
ManufacturerService
{
}
\ No newline at end of file
PddServer/src/main/java/org/ta/pddserver/utils/ImageUtils.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
utils
;
import
net.coobird.thumbnailator.Thumbnails
;
import
org.apache.hc.client5.http.classic.HttpClient
;
import
org.apache.hc.client5.http.classic.methods.HttpGet
;
import
org.apache.hc.client5.http.impl.classic.HttpClients
;
import
org.apache.hc.core5.http.io.entity.EntityUtils
;
import
org.springframework.stereotype.Component
;
import
java.io.ByteArrayInputStream
;
import
java.io.ByteArrayOutputStream
;
import
java.io.IOException
;
import
java.util.Base64
;
@Component
public
class
ImageUtils
{
// 目标压缩大小:1MB = 1024 * 1024 字节
private
static
final
long
MAX_SIZE
=
1024
*
1024
;
// 初始压缩质量(0.9=90%质量,可根据需求调整)
private
static
final
float
INIT_QUALITY
=
0.9f
;
// 每次质量递减步长(质量过低时停止,避免图片模糊)
private
static
final
float
QUALITY_STEP
=
0.1f
;
// 最小压缩质量(低于此值时,即使超1M也停止,避免无法识别的图片)
private
static
final
float
MIN_QUALITY
=
0.3f
;
/**
* 下载网络图片并处理(压缩→Base64)
*
* @param imageUrl 网络图片URL(如https://xxx.com/xxx.jpg)
* @return 处理后的Base64字符串(带格式前缀,如data:image/jpeg;base64,...)
* @throws IOException 网络异常/图片处理异常
*/
public
String
downloadCompressToBase64
(
String
imageUrl
)
throws
IOException
{
// 1. 下载网络图片为字节数组
byte
[]
imageBytes
=
downloadImage
(
imageUrl
);
// 2. 压缩图片至1M内
byte
[]
compressedBytes
=
compressImage
(
imageBytes
);
// 3. 字节数组转Base64(带格式前缀)
String
imageFormat
=
getImageFormat
(
imageUrl
);
// 提取图片格式(jpg/png等)
return
"data:image/"
+
imageFormat
+
";base64,"
+
Base64
.
getEncoder
().
encodeToString
(
compressedBytes
);
}
/**
* 下载网络图片为字节数组
*/
private
byte
[]
downloadImage
(
String
imageUrl
)
throws
IOException
{
try
{
HttpClient
httpClient
=
HttpClients
.
createDefault
();
HttpGet
httpGet
=
new
HttpGet
(
imageUrl
);
// 发送请求并获取响应(设置超时时间,避免阻塞)
return
httpClient
.
execute
(
httpGet
,
response
->
{
if
(
response
.
getCode
()
!=
200
)
{
throw
new
IOException
(
"图片下载失败,HTTP状态码:"
+
response
.
getCode
());
}
// 响应体转字节数组
return
EntityUtils
.
toByteArray
(
response
.
getEntity
());
});
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
null
;
}
/**
* 压缩图片字节数组(质量+尺寸双重控制)
*/
private
byte
[]
compressImage
(
byte
[]
imageBytes
)
throws
IOException
{
// 若原始大小已≤1M,直接返回
if
(
imageBytes
.
length
<=
MAX_SIZE
)
{
return
imageBytes
;
}
float
currentQuality
=
INIT_QUALITY
;
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
// 循环递减质量压缩,直到大小≤1M或达到最小质量
while
(
true
)
{
outputStream
.
reset
();
// 压缩逻辑:按质量压缩,保留原尺寸(若仍超1M,后续可加尺寸缩放)
Thumbnails
.
of
(
new
ByteArrayInputStream
(
imageBytes
))
.
outputQuality
(
currentQuality
)
// 质量压缩(0.0~1.0)
.
toOutputStream
(
outputStream
);
byte
[]
tempBytes
=
outputStream
.
toByteArray
();
// 满足条件:大小≤1M 或 质量已达最小值,退出循环
if
(
tempBytes
.
length
<=
MAX_SIZE
||
currentQuality
<=
MIN_QUALITY
)
{
return
tempBytes
;
}
// 质量递减,继续压缩
currentQuality
-=
QUALITY_STEP
;
}
}
/**
* 从URL提取图片格式(如jpg/png/webp)
*/
private
String
getImageFormat
(
String
imageUrl
)
{
// 从URL后缀提取(如https://xxx.com/xxx.jpg → jpg)
String
format
=
imageUrl
.
substring
(
imageUrl
.
lastIndexOf
(
"."
)
+
1
).
toLowerCase
();
// 过滤常见格式,默认返回jpg(避免不支持的格式)
return
(
format
.
matches
(
"jpg|jpeg|png|webp"
))
?
format
:
"jpg"
;
}
}
\ No newline at end of file
PddServer/src/main/java/org/ta/pddserver/utils/PddHttpTool.java
View file @
daf19865
...
...
@@ -14,8 +14,9 @@ import java.util.Map;
public
class
PddHttpTool
{
private
static
final
String
url
=
"https://opengw-api.hutaojie.com/ark/router"
;
// private static final String url = "https://ark-api.pinduoduo.com/ark/router";
private
static
final
String
URL
=
"https://opengw-api.hutaojie.com/ark/router"
;
private
static
final
String
URL_GD
=
"https://opengw-api.hutaojie.com/api/router"
;
// private static final String URL = "https://ark-api.pinduoduo.com/ark/router";
public
static
String
postRequest
(
JYBaseRequestModel
request
)
{
...
...
@@ -29,7 +30,7 @@ public class PddHttpTool {
HttpEntity
<
MultiValueMap
<
String
,
String
>>
requestEntity
=
new
HttpEntity
<
MultiValueMap
<
String
,
String
>>(
params
,
headers
);
// 3. 发送 POST 请求,获取响应
ResponseEntity
<
String
>
response
=
restTemplate
.
postForEntity
(
url
,
requestEntity
,
String
.
class
);
ResponseEntity
<
String
>
response
=
restTemplate
.
postForEntity
(
URL
,
requestEntity
,
String
.
class
);
// 4. 返回响应体(根据实际需求处理响应状态码、响应头)
return
response
.
getBody
();
...
...
@@ -38,7 +39,14 @@ public class PddHttpTool {
public
static
String
sendJsonPost
(
Object
requestObj
)
{
// 自动序列化 requestObj 为 JSON,并设置 Content-Type: application/json
RestTemplate
restTemplate
=
new
RestTemplate
();
ResponseEntity
<
String
>
resp
=
restTemplate
.
postForEntity
(
url
,
requestObj
,
String
.
class
);
ResponseEntity
<
String
>
resp
=
restTemplate
.
postForEntity
(
URL
,
requestObj
,
String
.
class
);
return
resp
.
getBody
();
}
public
static
String
sendJsonPostGD
(
Object
requestObj
)
{
// 自动序列化 requestObj 为 JSON,并设置 Content-Type: application/json
RestTemplate
restTemplate
=
new
RestTemplate
();
ResponseEntity
<
String
>
resp
=
restTemplate
.
postForEntity
(
URL_GD
,
requestObj
,
String
.
class
);
return
resp
.
getBody
();
}
}
PddServer/src/main/java/org/ta/pddserver/utils/PddJYPriceTool.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
utils
;
public
class
PddJYPriceTool
{
public
static
int
getTotalFee
(
String
type
,
int
length
,
int
width
,
int
height
,
int
weight
,
boolean
international
)
{
if
(
international
)
{
// 国际件
return
0
;
// return PddOverseaPriceTool.FreightCostCalculation(type, length, width, height, weight);
}
else
{
// 国内件 属于退件
return
PddNationalPriceTool
.
FreightCostCalculation
(
length
,
width
,
height
,
weight
);
}
}
}
PddServer/src/main/java/org/ta/pddserver/utils/PddNationalPriceTool.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
utils
;
import
lombok.extern.slf4j.Slf4j
;
import
java.util.HashMap
;
import
java.util.Map
;
@Slf4j
public
class
PddNationalPriceTool
{
//首重重量
private
static
int
initialWeight
=
1000
;
//上限重量
private
static
int
maxWeight
=
200000
;
// 首重价格
private
static
int
initalPrice
=
450
;
//超重计费标准
private
static
int
excessWeight
=
1000
;
//超重价格
private
static
int
excessPrice
=
100
;
//标椎三边长度
private
static
int
standard
=
100
;
//标准三边之和
private
static
int
maxStandard
=
160
;
/*
* 根据类型、重量(g) 计算运费
* */
public
static
int
FreightCostCalculation
(
int
length
,
int
width
,
int
height
,
int
weight
)
{
int
price
=
initalPrice
;
if
(
weight
<
initialWeight
)
{
return
price
;
}
int
pw
=
weight
-
initialWeight
;
int
pc
=
pw
/
excessWeight
;
if
(
pw
%
excessWeight
!=
0
)
{
pc
+=
1
;
}
price
=
price
+
pc
*
excessPrice
;
log
.
info
(
"续重数量:{}"
,
pc
);
return
price
;
}
}
PddServer/src/main/java/org/ta/pddserver/utils/PddOverseaPriceTool.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
.
utils
;
import
java.util.HashMap
;
import
java.util.Map
;
public
class
PddOverseaPriceTool
{
//首重重量
private
static
int
initialWeight
=
1000
;
//上限重量
private
static
int
maxWeight
=
20000
;
// 普货首重价格
private
static
int
gInitalPrice
=
1850
;
//特货首重价格
private
static
int
sInitalPrice
=
2800
;
//超重计费标准
private
static
int
excessWeight
=
500
;
//超重价格
private
static
int
excessPrice
=
175
;
//标椎三边长度
private
static
int
standard
=
100
;
//标准三边之和
private
static
int
maxStandard
=
160
;
/*
* 根据类型、重量(g) 计算运费
* */
public
static
Map
FreightCostCalculation
(
String
type
,
int
length
,
int
width
,
int
height
,
int
weight
,
int
exchange
)
{
Map
map
=
new
HashMap
();
int
price
=
0
;
boolean
key
=
true
;
int
excess
=
0
;
int
max
=
length
+
width
+
height
;
//判断边长是否符合标准
if
(
length
>
standard
||
width
>
standard
||
height
>
standard
||
max
>
maxStandard
)
{
//三边各超100或者和超160
key
=
false
;
}
else
{
// 判断重量是否超重
if
(
weight
>
maxWeight
)
{
//超重无法计算
key
=
false
;
}
else
{
//分析重量
if
(
weight
>
initialWeight
)
{
//计算超出重量
weight
=
weight
-
initialWeight
;
excess
=
excessPrice
*
((
int
)
Math
.
ceil
(
weight
/
excessWeight
));
}
}
if
(
key
)
{
//计算价格
if
(
type
.
equals
(
"NORMAL"
))
{
//普货
price
=
gInitalPrice
+
excess
;
}
else
{
price
=
sInitalPrice
+
excess
;
}
}
}
map
.
put
(
"price"
,
price
);
map
.
put
(
"key"
,
key
);
return
map
;
}
}
PddServer/src/test/java/org/ta/pddserver/CommonTest.java
View file @
daf19865
...
...
@@ -3,12 +3,15 @@ package org.ta.pddserver;
import
com.alibaba.fastjson.JSON
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.jupiter.api.Test
;
import
org.ta.pddserver.model.pddjy.request.JYBaseRequestModel
;
import
org.ta.pddserver.model.pddjy.request.PddServiceConsoDerelictionRequest
;
import
org.ta.pddserver.model.pddjy.request.PddServiceConsoFirstBizActionNotifyRequest
;
import
org.ta.pddserver.entity.LogOrderMailDetailEntity
;
import
org.ta.pddserver.model.enums.OrderProblemType
;
import
org.ta.pddserver.model.pddjy.request.*
;
import
org.ta.pddserver.model.pddjy.response.PddServiceConsoDerelictionResponse
;
import
org.ta.pddserver.utils.PddHttpTool
;
import
org.ta.pddserver.utils.PddSignTool
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
@Slf4j
...
...
@@ -16,9 +19,18 @@ public class CommonTest {
private
static
final
String
PROVIDER_CODE
=
"HAIJI_KR"
;
private
static
final
String
WAREHOUSE_CODE
=
"HJJY001"
;
private
static
final
String
CLIENT_ID
=
"d0217707e1194c46b57e696ac7619a06"
;
private
static
final
String
CLIENT_SECRET
=
"a5aba84483d8387030899f01276b06a194942470"
;
private
static
String
getNowString
()
{
Date
date
=
new
Date
();
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
return
sdf
.
format
(
date
);
}
@Test
public
void
Test1
()
{
public
void
Test1
()
{
PddServiceConsoDerelictionRequest
derelictionRequest
=
new
PddServiceConsoDerelictionRequest
();
derelictionRequest
.
setProviderCode
(
PROVIDER_CODE
);
derelictionRequest
.
setExecuteTime
(
"2025-10-23 14:53:22"
);
...
...
@@ -31,11 +43,11 @@ public class CommonTest {
requestModel
.
setRequest
(
JSON
.
toJSONString
(
derelictionRequest
));
requestModel
.
setRequest_id
(
"111"
);
requestModel
.
setType
(
"pdd.service.conso.dereliction"
);
requestModel
.
setTarget_client_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
requestModel
.
setClient_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
"281d79ad5117d20a51efb9e7b0d5f7ee336399b0"
));
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
...
...
@@ -43,10 +55,9 @@ public class CommonTest {
}
@Test
public
void
Test2
()
{
public
void
Test2
()
{
PddServiceConsoFirstBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoFirstBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
"HAIJI_KR"
);
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setExecuteTime
(
"2025-10-23 14:53:22"
);
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setLogisticsOrderCode
(
"xx198985333"
);
...
...
@@ -63,14 +74,483 @@ public class CommonTest {
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
"111"
);
requestModel
.
setType
(
"pdd.service.conso.first.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
requestModel
.
setClient_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 确认收货
*/
@Test
public
void
receive
()
{
String
LogisticsOrderCode
=
"PC25102914698518937718059"
;
String
mailNo
=
"TT3713660160898"
;
String
expressCode
=
"STO"
;
String
action
=
"warehouse_sign"
;
PddServiceConsoFirstBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoFirstBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setLogisticsOrderCode
(
LogisticsOrderCode
);
notifyRequest
.
setBizAction
(
action
);
PddServiceConsoFirstBizActionNotifyRequest
.
Result
notifyResult
=
new
PddServiceConsoFirstBizActionNotifyRequest
.
Result
();
notifyRequest
.
setMailNo
(
mailNo
);
notifyRequest
.
setExpressCode
(
expressCode
);
if
(
action
==
"warehouse_sign"
)
{
notifyRequest
.
setBizActionDesc
(
"仓库签收"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"warehouse_reject_sign"
)
{
notifyRequest
.
setBizActionDesc
(
"仓库拒签"
);
notifyResult
.
setCode
(
22
);
notifyResult
.
setDesc
(
"运输品类限制"
);
notifyResult
.
setRemark
(
"运输品类限制"
);
notifyRequest
.
setResult
(
notifyResult
);
}
else
if
(
action
==
"destroy"
)
{
notifyRequest
.
setBizActionDesc
(
"包裹销毁"
);
notifyResult
.
setCode
(
0
);
}
notifyRequest
.
setResult
(
notifyResult
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.first.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 拒收
*/
@Test
public
void
reject
()
{
String
LogisticsOrderCode
=
"PC25102916466837504518059"
;
String
mailNo
=
"773763730734477"
;
String
expressCode
=
"STO"
;
String
action
=
"warehouse_reject_sign"
;
PddServiceConsoFirstBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoFirstBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setLogisticsOrderCode
(
LogisticsOrderCode
);
notifyRequest
.
setBizAction
(
action
);
PddServiceConsoFirstBizActionNotifyRequest
.
Result
notifyResult
=
new
PddServiceConsoFirstBizActionNotifyRequest
.
Result
();
notifyRequest
.
setMailNo
(
mailNo
);
notifyRequest
.
setExpressCode
(
expressCode
);
if
(
action
==
"warehouse_sign"
)
{
notifyRequest
.
setBizActionDesc
(
"仓库签收"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"warehouse_reject_sign"
)
{
notifyRequest
.
setBizActionDesc
(
"仓库拒签"
);
notifyResult
.
setCode
(
22
);
notifyResult
.
setDesc
(
"运输品类限制"
);
notifyResult
.
setRemark
(
"运输品类限制"
);
notifyRequest
.
setResult
(
notifyResult
);
}
else
if
(
action
==
"destroy"
)
{
notifyRequest
.
setBizActionDesc
(
"包裹销毁"
);
notifyResult
.
setCode
(
0
);
}
notifyRequest
.
setResult
(
notifyResult
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.first.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 入库
*/
@Test
public
void
inBound
()
{
String
LogisticsOrderCode
=
"PC25102914698518937718059"
;
String
mailNo
=
"TT3713660160898"
;
String
expressCode
=
"STO"
;
PddServiceConsoInboundRequest
notifyRequest
=
new
PddServiceConsoInboundRequest
();
// PddServiceConsoFirstBizActionNotifyRequest notifyRequest = new PddServiceConsoFirstBizActionNotifyRequest();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setLogisticsOrderCode
(
LogisticsOrderCode
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setStatus
(
"FULL_INBOUND"
);
// notifyRequest.setStatus("PART_INBOUND");
notifyRequest
.
setPackageQuantity
(
1L
);
notifyRequest
.
setPackageInfo
(
new
PddServiceConsoInboundRequest
.
PackageInfo
());
notifyRequest
.
getPackageInfo
().
setMailNo
(
mailNo
);
notifyRequest
.
getPackageInfo
().
setExpressCode
(
expressCode
);
notifyRequest
.
getPackageInfo
().
setLength
(
30L
);
notifyRequest
.
getPackageInfo
().
setWidth
(
30L
);
notifyRequest
.
getPackageInfo
().
setHeight
(
30L
);
notifyRequest
.
getPackageInfo
().
setWeight
(
300L
);
notifyRequest
.
getPackageInfo
().
setActualWeight
(
300L
);
notifyRequest
.
getPackageInfo
().
setGoodsType
(
"NORMAL"
);
notifyRequest
.
setResult
(
new
PddServiceConsoInboundRequest
.
Result
());
notifyRequest
.
getResult
().
setCode
(
0
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.inbound"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 开始拣货
*/
@Test
public
void
beginPick
()
{
String
LogisticsOrderCode
=
"PP25102913743895347818059"
;
String
mailNo
=
"773833357957029"
;
String
expressCode
=
"STO"
;
String
action
=
"begin_pick"
;
PddServiceConsoCoBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoCoBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setOrderCode
(
LogisticsOrderCode
);
notifyRequest
.
setBizAction
(
action
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
PddServiceConsoCoBizActionNotifyRequest
.
Result
notifyResult
=
new
PddServiceConsoCoBizActionNotifyRequest
.
Result
();
// notifyRequest.setMailNo(mailNo);
// notifyRequest.setExpressCode(expressCode);
if
(
action
==
"begin_pick"
)
{
notifyRequest
.
setBizActionDesc
(
"开始拣货"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"finish_pick"
)
{
notifyRequest
.
setBizActionDesc
(
"拣货完成"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"finish_unpack"
)
{
notifyRequest
.
setBizActionDesc
(
"拆包完成"
);
notifyRequest
.
setUnpackRemark
(
""
);
notifyResult
.
setCode
(
0
);
}
notifyRequest
.
setResult
(
notifyResult
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.co.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
"281d79ad5117d20a51efb9e7b0d5f7ee336399b0"
));
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 完成拣货
*/
@Test
public
void
finishPick
()
{
String
LogisticsOrderCode
=
"PP25102913743895347818059"
;
String
mailNo
=
"773833357957029"
;
String
expressCode
=
"STO"
;
String
action
=
"finish_pick"
;
PddServiceConsoCoBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoCoBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setOrderCode
(
LogisticsOrderCode
);
notifyRequest
.
setBizAction
(
action
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
PddServiceConsoCoBizActionNotifyRequest
.
Result
notifyResult
=
new
PddServiceConsoCoBizActionNotifyRequest
.
Result
();
// notifyRequest.setMailNo(mailNo);
// notifyRequest.setExpressCode(expressCode);
if
(
action
==
"begin_pick"
)
{
notifyRequest
.
setBizActionDesc
(
"开始拣货"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"finish_pick"
)
{
notifyRequest
.
setBizActionDesc
(
"拣货完成"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"finish_unpack"
)
{
notifyRequest
.
setBizActionDesc
(
"拆包完成"
);
notifyRequest
.
setUnpackRemark
(
""
);
notifyResult
.
setCode
(
0
);
notifyRequest
.
setPackageInfos
(
new
ArrayList
<>());
PddServiceConsoCoBizActionNotifyRequest
.
PackageInfo
packageInfo
=
new
PddServiceConsoCoBizActionNotifyRequest
.
PackageInfo
();
notifyRequest
.
getPackageInfos
().
add
(
packageInfo
);
packageInfo
.
setWeight
(
280L
);
packageInfo
.
setWidth
(
28L
);
packageInfo
.
setHeight
(
28L
);
packageInfo
.
setLength
(
28L
);
packageInfo
.
setActualWeight
(
280L
);
packageInfo
.
setConsoType
(
"SEA"
);
packageInfo
.
setGoodsType
(
"NORMAL"
);
}
notifyRequest
.
setResult
(
notifyResult
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.co.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 拣货完成后出库
*/
@Test
public
void
outBound
()
{
String
mailNo
=
"773467488920323"
;
String
expressCode
=
"STO"
;
String
orderCode
=
"PP25102914698518937618059"
;
// String segmentCode = "RETURNSELLER";
String
segmentCode
=
"SENDTORECEVER"
;
PddServiceConsoOutboundRequest
notifyRequest
=
new
PddServiceConsoOutboundRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setOrderCode
(
orderCode
);
notifyRequest
.
setSegmentCode
(
segmentCode
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setIsSplitOut
(
"N"
);
notifyRequest
.
setPackageInfos
(
new
ArrayList
<>());
PddServiceConsoOutboundRequest
.
PackageInfo
packageInfo
=
new
PddServiceConsoOutboundRequest
.
PackageInfo
();
notifyRequest
.
getPackageInfos
().
add
(
packageInfo
);
packageInfo
.
setOutboundMailNo
(
mailNo
);
packageInfo
.
setExpressCode
(
expressCode
);
packageInfo
.
setPackageType
(
"2"
);
packageInfo
.
setLength
(
28L
);
packageInfo
.
setWidth
(
28L
);
packageInfo
.
setHeight
(
28L
);
packageInfo
.
setWeight
(
280L
);
notifyRequest
.
setSenderDetail
(
new
PddServiceConsoOutboundRequest
.
SenderDetail
());
notifyRequest
.
getSenderDetail
().
setName
(
"海际集货仓"
);
notifyRequest
.
getSenderDetail
().
setTelePhone
(
"18660975251"
);
notifyRequest
.
getSenderDetail
().
setCountry
(
"CN"
);
notifyRequest
.
getSenderDetail
().
setProvince
(
"山东省"
);
notifyRequest
.
getSenderDetail
().
setCity
(
"临沂市"
);
notifyRequest
.
getSenderDetail
().
setDistrict
(
"兰山区"
);
notifyRequest
.
getSenderDetail
().
setDetailAddress
(
"山东省临沂市兰山区横九路与纵十路交汇兰山财金智慧云仓五期二层二号仓"
);
notifyRequest
.
setReceiverDetail
(
new
PddServiceConsoOutboundRequest
.
ReceiverDetail
());
notifyRequest
.
getReceiverDetail
().
setName
(
"nanjiexi"
);
notifyRequest
.
getReceiverDetail
().
setTelePhone
(
"01099999999"
);
notifyRequest
.
getReceiverDetail
().
setCountry
(
"KR"
);
notifyRequest
.
getReceiverDetail
().
setProvince
(
"서울특별시"
);
notifyRequest
.
getReceiverDetail
().
setCity
(
"강북구"
);
notifyRequest
.
getReceiverDetail
().
setDistrict
(
"우이동"
);
notifyRequest
.
getReceiverDetail
().
setDetailAddress
(
"서울특별시测试地址"
);
notifyRequest
.
setResult
(
new
PddServiceConsoOutboundRequest
.
Result
());
notifyRequest
.
getResult
().
setCode
(
0
);
// notifyRequest.getResult().setDesc("");
// notifyRequest.getResult().setRemark("");
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.outbound"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 收到拆包通知后 完成拆包 (不一定收到出库通知)
*/
@Test
public
void
finishUnpack
()
{
String
LogisticsOrderCode
=
"PP25102914698518937618059"
;
String
mailNo
=
"773467488920323"
;
String
expressCode
=
"STO"
;
String
action
=
"finish_unpack"
;
PddServiceConsoCoBizActionNotifyRequest
notifyRequest
=
new
PddServiceConsoCoBizActionNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setOrderCode
(
LogisticsOrderCode
);
notifyRequest
.
setBizAction
(
action
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
PddServiceConsoCoBizActionNotifyRequest
.
Result
notifyResult
=
new
PddServiceConsoCoBizActionNotifyRequest
.
Result
();
// notifyRequest.setMailNo(mailNo);
// notifyRequest.setExpressCode(expressCode);
if
(
action
==
"begin_pick"
)
{
notifyRequest
.
setBizActionDesc
(
"开始拣货"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"finish_pick"
)
{
notifyRequest
.
setBizActionDesc
(
"拣货完成"
);
notifyResult
.
setCode
(
0
);
}
else
if
(
action
==
"finish_unpack"
)
{
notifyRequest
.
setBizActionDesc
(
"拆包完成"
);
notifyRequest
.
setUnpackRemark
(
""
);
notifyResult
.
setCode
(
0
);
notifyRequest
.
setPackageInfos
(
new
ArrayList
<>());
PddServiceConsoCoBizActionNotifyRequest
.
PackageInfo
packageInfo
=
new
PddServiceConsoCoBizActionNotifyRequest
.
PackageInfo
();
notifyRequest
.
getPackageInfos
().
add
(
packageInfo
);
packageInfo
.
setWeight
(
280L
);
packageInfo
.
setWidth
(
28L
);
packageInfo
.
setHeight
(
28L
);
packageInfo
.
setLength
(
28L
);
packageInfo
.
setActualWeight
(
280L
);
packageInfo
.
setConsoType
(
"SEA"
);
packageInfo
.
setGoodsType
(
"NORMAL"
);
}
notifyRequest
.
setResult
(
notifyResult
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.co.biz.action.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
/**
* 无主件识别
*/
@Test
public
void
dereliction
()
{
String
mailNo
=
"TT3713660160898"
;
String
expressCode
=
"STO"
;
String
dereRecogCode
=
"51029HYX06800"
;
PddServiceConsoDerelictionRequest
notifyRequest
=
new
PddServiceConsoDerelictionRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setMailNo
(
mailNo
);
notifyRequest
.
setExpressCode
(
expressCode
);
notifyRequest
.
setDereRecogCode
(
dereRecogCode
);
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.dereliction"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
PddServiceConsoDerelictionResponse
response
=
JSON
.
parseObject
(
resp
,
PddServiceConsoDerelictionResponse
.
class
);
String
logisticsOrderCode
=
response
.
getLogisticsOrderCode
();
log
.
info
(
"logisticsOrderCode = {}"
,
logisticsOrderCode
);
}
/**
* 问题件上传
*/
@Test
public
void
problemNofity
()
{
String
mailNo
=
"TT3713660160898"
;
String
expressCode
=
"STO"
;
String
orderCode
=
"PC25102914698518937718059"
;
PddServiceConsoProblemOrderNotifyRequest
notifyRequest
=
new
PddServiceConsoProblemOrderNotifyRequest
();
notifyRequest
.
setProviderCode
(
PROVIDER_CODE
);
notifyRequest
.
setExecuteTime
(
getNowString
());
notifyRequest
.
setTimeZone
(
"UTC+8"
);
notifyRequest
.
setMailInfos
(
new
ArrayList
<>());
PddServiceConsoProblemOrderNotifyRequest
.
MailInfo
mailInfo
=
new
PddServiceConsoProblemOrderNotifyRequest
.
MailInfo
();
notifyRequest
.
getMailInfos
().
add
(
mailInfo
);
mailInfo
.
setMailNo
(
mailNo
);
mailInfo
.
setOrderCode
(
orderCode
);
mailInfo
.
setExpressCode
(
expressCode
);
mailInfo
.
setReasonCode
(
OrderProblemType
.
PoSun
.
getValue
());
log
.
info
(
"derelictionRequest:{}"
,
JSON
.
toJSONString
(
notifyRequest
));
JYBaseRequestModel
requestModel
=
new
JYBaseRequestModel
();
requestModel
.
setRequest
(
JSON
.
toJSONString
(
notifyRequest
));
requestModel
.
setRequest_id
(
""
+
new
Date
().
getTime
());
requestModel
.
setType
(
"pdd.service.conso.problem.order.notify"
);
requestModel
.
setTarget_client_id
(
CLIENT_ID
);
requestModel
.
setClient_id
(
CLIENT_ID
);
long
time
=
new
Date
().
getTime
()
/
1000
;
requestModel
.
setTimestamp
(
time
);
requestModel
.
setSign
(
PddSignTool
.
generateSign
(
requestModel
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
requestModel
));
// String resp = PddHttpTool.postRequest(requestModel);
String
resp
=
PddHttpTool
.
sendJsonPost
(
requestModel
);
log
.
info
(
"resp = {}"
,
resp
);
}
}
PddServer/src/test/java/org/ta/pddserver/GDTest3.java
0 → 100644
View file @
daf19865
package
org
.
ta
.
pddserver
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.jupiter.api.Test
;
import
org.ta.pddserver.model.enums.OrderProblemType
;
import
org.ta.pddserver.model.pddgd.request.GDTicketListRequest
;
import
org.ta.pddserver.model.pddgd.request.GDTicketReplyRequest
;
import
org.ta.pddserver.model.pddgd.request.GDUploadRequest
;
import
org.ta.pddserver.model.pddgd.response.GDTicketReplyRepsonse
;
import
org.ta.pddserver.model.pddjy.request.JYBaseRequestModel
;
import
org.ta.pddserver.model.pddjy.request.PddServiceConsoProblemOrderNotifyRequest
;
import
org.ta.pddserver.model.pddlg.request.LGBaseModel
;
import
org.ta.pddserver.utils.ImageUtils
;
import
org.ta.pddserver.utils.PddHttpTool
;
import
org.ta.pddserver.utils.PddSignTool
;
import
java.io.IOException
;
import
java.util.ArrayList
;
import
java.util.Date
;
@Slf4j
public
class
GDTest3
{
private
static
final
String
CLIENT_ID
=
"7c75c365a1a64036a598ab6b09ce0c06"
;
private
static
final
String
CLIENT_SECRET
=
"f0752b6d5d6c214b7e255586fc4dfde382e9a6df"
;
@Test
public
void
test1
()
{
GDTicketListRequest
request
=
new
GDTicketListRequest
();
request
.
setClient_id
(
CLIENT_ID
);
long
end
=
new
Date
().
getTime
()
/
1000
;
request
.
setEnd_updated_at
(
end
);
request
.
setStart_updated_at
(
end
-
1800
);
request
.
setPage
(
1
);
request
.
setPage_size
(
100
);
request
.
setType
(
"pdd.logistics.ticket.get"
);
long
time
=
new
Date
().
getTime
()
/
1000
;
request
.
setTimestamp
(
time
);
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
CLIENT_SECRET
));
String
resp
=
PddHttpTool
.
sendJsonPostGD
(
request
);
log
.
info
(
"resp = {}"
,
resp
);
}
@Test
public
void
Test2
(){
Long
ticketId
=
176179297549537L
;
String
waybill_no
=
"773484253589148"
;
GDTicketReplyRequest
replyRequest
=
new
GDTicketReplyRequest
();
replyRequest
.
setTicket_id
(
ticketId
);
replyRequest
.
setWaybill_no
(
waybill_no
);
replyRequest
.
setHandle_result
(
"757类型工单测试三次回复内容,赔付100,无附件"
);
replyRequest
.
setSign_state
(
1
);
replyRequest
.
setCompensate_state
(
2
);
replyRequest
.
setCompensate_amount
(
100
);
replyRequest
.
setDuty
(
1
);
replyRequest
.
setExpress_dealer
(
"处理人四号"
);
replyRequest
.
setExpress_dealer_contact
(
"15067011004"
);
replyRequest
.
setReply_type
(
1
);
// replyRequest.setAttach_path_list("[\"https://img-test.pddpic.com/open-gw/2066d9194a/c2c976cc793423a1d413c6395ad225c4.jpg\",\"https://img-test.pddpic.com/open-gw/2066d9194a/ceadf7d50fa2cd9850b10a3c769421e7.jpg\"]");
replyRequest
.
setClient_id
(
CLIENT_ID
);
replyRequest
.
setType
(
"pdd.logistics.ticket.notify"
);
long
time
=
new
Date
().
getTime
()
/
1000
;
replyRequest
.
setTimestamp
(
time
);
replyRequest
.
setSign
(
PddSignTool
.
generateSign
(
replyRequest
,
CLIENT_SECRET
));
String
resp
=
PddHttpTool
.
sendJsonPostGD
(
replyRequest
);
log
.
info
(
"resp = {}"
,
resp
);
JSONObject
respObj
=
JSON
.
parseObject
(
resp
);
JSONObject
respObject
=
respObj
.
getJSONObject
(
"logistics_ticket_notify_response"
);
if
(
respObject
==
null
)
{
return
;
}
GDTicketReplyRepsonse
replyRepsonse
=
respObject
.
toJavaObject
(
GDTicketReplyRepsonse
.
class
);
log
.
info
(
"replyRepsonse is_success:{}"
,
replyRepsonse
.
getIs_success
());
}
@Test
public
void
uploadImage
()
throws
IOException
{
GDUploadRequest
request
=
new
GDUploadRequest
();
request
.
setClient_id
(
CLIENT_ID
);
request
.
setType
(
"pdd.logistics.ticket.image.upload"
);
long
time
=
new
Date
().
getTime
()
/
1000
;
request
.
setTimestamp
(
time
);
request
.
setImage
(
new
ImageUtils
().
downloadCompressToBase64
(
"https://images.v2.tradeany.com/files/20251030/5eaac48c24c5427fa9e055d0976d5e89.jpg"
));
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
CLIENT_SECRET
));
String
resp
=
PddHttpTool
.
sendJsonPostGD
(
request
);
log
.
info
(
"resp = {}"
,
resp
);
}
}
PddServer/src/test/java/org/ta/pddserver/LGTest2.java
View file @
daf19865
...
...
@@ -14,17 +14,21 @@ import java.util.ArrayList;
@Slf4j
public
class
LGTest2
{
private
static
final
String
CLIENT_ID
=
"d0217707e1194c46b57e696ac7619a06"
;
private
static
final
String
CLIENT_SECRET
=
"a5aba84483d8387030899f01276b06a194942470"
;
@Test
public
void
test1
()
{
PddLogisticsCoTrackNotifyRequest
request
=
new
PddLogisticsCoTrackNotifyRequest
();
request
.
setClient_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
request
.
setClient_id
(
CLIENT_ID
);
request
.
setShip_id
(
"567"
);
request
.
setTarget_client_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
request
.
setTarget_client_id
(
CLIENT_ID
);
request
.
setTimestamp
(
System
.
currentTimeMillis
()
/
1000
);
PddLogisticsCoTrackNotifyRequest
.
DataObject
dataObject
=
getDataObject
();
request
.
setDataObject
(
dataObject
);
request
.
encodeData
();
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
"281d79ad5117d20a51efb9e7b0d5f7ee336399b0"
));
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
request
));
String
resp
=
PddHttpTool
.
sendJsonPost
(
request
);
log
.
info
(
"resp = {}"
,
resp
);
...
...
@@ -35,11 +39,11 @@ public class LGTest2 {
@Test
public
void
test2
()
{
PddLogisticsSecondaryCityGetRequest
request
=
new
PddLogisticsSecondaryCityGetRequest
();
request
.
setClient_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
request
.
setClient_id
(
CLIENT_ID
);
request
.
setShip_id
(
"567"
);
request
.
setTarget_client_id
(
"8f5f3f9c92e847b2894fc9c0afce3d61"
);
request
.
setTarget_client_id
(
CLIENT_ID
);
request
.
setTimestamp
(
System
.
currentTimeMillis
()
/
1000
);
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
"281d79ad5117d20a51efb9e7b0d5f7ee336399b0"
));
request
.
setSign
(
PddSignTool
.
generateSign
(
request
,
CLIENT_SECRET
));
log
.
info
(
"requestModel:{}"
,
JSON
.
toJSONString
(
request
));
String
resp
=
PddHttpTool
.
sendJsonPost
(
request
);
log
.
info
(
"resp = {}"
,
resp
);
...
...
PddServer/src/test/java/org/ta/pddserver/gd.json
0 → 100644
View file @
daf19865
{
"logistics_ticket_get_response"
:
{
"logistics_ticket_list"
:
[
{
"area_name"
:
"韩国"
,
"created_at"
:
1761791335
,
"create_type"
:
1
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉"
,
"cabinet_code"
:
""
,
"compensate_state"
:
0
,
"urgent_type"
:
0
,
"updated_at"
:
1761791335
,
"receive_name"
:
"김명상"
,
"sub_type_ids"
:
[
1303
],
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
0
,
"receive_address"
:
"제주특별자치도 제주시 추자면 韩国偏远地址"
,
"receive_contact"
:
"01012345678"
,
"express_dealer"
:
""
,
"express_dealer_contact"
:
""
,
"handle_result"
:
""
,
"type_id"
:
747
,
"ticket_id"
:
176179133571489
,
"sign_state"
:
0
,
"duty"
:
0
,
"express_company_id"
:
567
,
"retreat_count"
:
0
,
"status"
:
0
}
],
"total_count"
:
1
,
"request_id"
:
"17617914287422136"
}
}
PddServer/src/test/java/org/ta/pddserver/gd2.json
0 → 100644
View file @
daf19865
{
"logistics_ticket_get_response"
:
{
"logistics_ticket_list"
:
[
{
"area_name"
:
"韩国"
,
"created_at"
:
1761791335
,
"create_type"
:
1
,
"description"
:
"其他,mock消费者二次投诉"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉"
,
"cabinet_code"
:
""
,
"compensate_state"
:
2
,
"urgent_type"
:
0
,
"updated_at"
:
1761792633
,
"receive_name"
:
"김명상"
,
"sub_type_ids"
:
[
1303
],
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
0
,
"receive_address"
:
"제주특별자치도 제주시 추자면 韩国偏远地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
"处理人甲"
,
"express_dealer_contact"
:
"18599877823"
,
"express_attachment"
:
[
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/de1e9e6a5adaee930456e4e521a6dcb2.jpg"
}
],
"handle_result"
:
"无"
,
"type_id"
:
747
,
"ticket_id"
:
176179133571489
,
"sign_state"
:
1
,
"duty"
:
1
,
"express_company_id"
:
567
,
"retreat_count"
:
1
,
"status"
:
0
}
],
"total_count"
:
1
,
"request_id"
:
"17617926778783270"
}
}
PddServer/src/test/java/org/ta/pddserver/gd3.json
0 → 100644
View file @
daf19865
{
"logistics_ticket_get_response"
:
{
"logistics_ticket_list"
:
[
{
"area_name"
:
"韩国"
,
"attach_url"
:
[
"http://testimg.yangkeduo.com/pdd_ticket_image/2066d9194a/e709b28d7515fe67c24ef5e9da15e742.jpeg"
,
"http://testimg.yangkeduo.com/pdd_ticket_image/2066d9194a/0c2ac6e5432aa961bfefa3d7faf888e5.png"
],
"created_at"
:
1761792975
,
"create_type"
:
0
,
"description"
:
"备注:这是一段mock的备注内容"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"集运测试-恶意引导修改取消订单问题描述 签收地址:mock一个签收地址"
,
"cabinet_code"
:
""
,
"compensate_state"
:
0
,
"urgent_type"
:
0
,
"updated_at"
:
1761792975
,
"receive_name"
:
"김명상"
,
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
0
,
"receive_address"
:
"mock一个签收地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
""
,
"express_dealer_contact"
:
""
,
"handle_result"
:
""
,
"type_id"
:
757
,
"ticket_id"
:
176179297549537
,
"sign_state"
:
0
,
"duty"
:
0
,
"express_company_id"
:
567
,
"retreat_count"
:
0
,
"status"
:
0
},
{
"area_name"
:
"韩国"
,
"created_at"
:
1761791335
,
"create_type"
:
1
,
"description"
:
"其他,mock消费者二次投诉"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉"
,
"cabinet_code"
:
""
,
"compensate_state"
:
2
,
"urgent_type"
:
0
,
"updated_at"
:
1761792820
,
"receive_name"
:
"김명상"
,
"sub_type_ids"
:
[
1303
],
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
888
,
"receive_address"
:
"제주특별자치도 제주시 추자면 韩国偏远地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
"处理人乙"
,
"express_dealer_contact"
:
"15067991234"
,
"express_attachment"
:
[
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/b0ffff8583115046a5e0e70a86f4b156.jpg"
},
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/de1e9e6a5adaee930456e4e521a6dcb2.jpg"
}
],
"handle_result"
:
"mock工单联调二次处理回复"
,
"type_id"
:
747
,
"ticket_id"
:
176179133571489
,
"sign_state"
:
1
,
"duty"
:
1
,
"express_company_id"
:
567
,
"retreat_count"
:
1
,
"status"
:
1
}
],
"total_count"
:
2
,
"request_id"
:
"17617931024455036"
}
}
PddServer/src/test/java/org/ta/pddserver/gd4.json
0 → 100644
View file @
daf19865
{
"logistics_ticket_get_response"
:
{
"logistics_ticket_list"
:
[
{
"area_name"
:
"韩国"
,
"attach_url"
:
[
"http://testimg.yangkeduo.com/pdd_ticket_image/2066d9194a/e709b28d7515fe67c24ef5e9da15e742.jpeg"
,
"http://testimg.yangkeduo.com/pdd_ticket_image/2066d9194a/0c2ac6e5432aa961bfefa3d7faf888e5.png"
],
"created_at"
:
1761792975
,
"create_type"
:
0
,
"description"
:
"恶意引导修改取消订单二次下发模板"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"集运测试-恶意引导修改取消订单问题描述 签收地址:mock一个签收地址"
,
"cabinet_code"
:
""
,
"compensate_state"
:
2
,
"urgent_type"
:
0
,
"updated_at"
:
1761793354
,
"receive_name"
:
"김명상"
,
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
999
,
"receive_address"
:
"mock一个签收地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
"处理人甲"
,
"express_dealer_contact"
:
"15067999999"
,
"express_attachment"
:
[
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/c2c976cc793423a1d413c6395ad225c4.jpg"
}
],
"handle_result"
:
"mock工单联调首次处理回复"
,
"type_id"
:
757
,
"ticket_id"
:
176179297549537
,
"sign_state"
:
1
,
"duty"
:
1
,
"express_company_id"
:
567
,
"retreat_count"
:
1
,
"status"
:
0
},
{
"area_name"
:
"韩国"
,
"created_at"
:
1761791335
,
"create_type"
:
1
,
"description"
:
"其他,mock消费者二次投诉"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉"
,
"cabinet_code"
:
""
,
"compensate_state"
:
2
,
"urgent_type"
:
0
,
"updated_at"
:
1761792820
,
"receive_name"
:
"김명상"
,
"sub_type_ids"
:
[
1303
],
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
888
,
"receive_address"
:
"제주특별자치도 제주시 추자면 韩国偏远地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
"处理人乙"
,
"express_dealer_contact"
:
"15067991234"
,
"express_attachment"
:
[
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/b0ffff8583115046a5e0e70a86f4b156.jpg"
},
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/de1e9e6a5adaee930456e4e521a6dcb2.jpg"
}
],
"handle_result"
:
"mock工单联调二次处理回复"
,
"type_id"
:
747
,
"ticket_id"
:
176179133571489
,
"sign_state"
:
1
,
"duty"
:
1
,
"express_company_id"
:
567
,
"retreat_count"
:
1
,
"status"
:
1
}
],
"total_count"
:
2
,
"request_id"
:
"17617933875877167"
}
}
PddServer/src/test/java/org/ta/pddserver/gd5.json
0 → 100644
View file @
daf19865
{
"logistics_ticket_get_response"
:
{
"logistics_ticket_list"
:
[
{
"area_name"
:
"韩国"
,
"attach_url"
:
[
"http://testimg.yangkeduo.com/pdd_ticket_image/2066d9194a/e709b28d7515fe67c24ef5e9da15e742.jpeg"
,
"http://testimg.yangkeduo.com/pdd_ticket_image/2066d9194a/0c2ac6e5432aa961bfefa3d7faf888e5.png"
],
"created_at"
:
1761792975
,
"create_type"
:
0
,
"description"
:
"恶意引导修改取消订单三次下发模板"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"集运测试-恶意引导修改取消订单问题描述 签收地址:mock一个签收地址"
,
"cabinet_code"
:
""
,
"compensate_state"
:
1
,
"urgent_type"
:
0
,
"updated_at"
:
1761793639
,
"receive_name"
:
"김명상"
,
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
0
,
"receive_address"
:
"mock一个签收地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
"处理人三"
,
"express_dealer_contact"
:
"15067011001"
,
"express_attachment"
:
[
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/c2c976cc793423a1d413c6395ad225c4.jpg"
},
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/ceadf7d50fa2cd9850b10a3c769421e7.jpg"
},
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/c2c976cc793423a1d413c6395ad225c4.jpg"
}
],
"handle_result"
:
"757类型工单测试二次回复内容,此次没有赔付,两个附件"
,
"type_id"
:
757
,
"ticket_id"
:
176179297549537
,
"sign_state"
:
1
,
"duty"
:
1
,
"express_company_id"
:
567
,
"retreat_count"
:
2
,
"status"
:
0
},
{
"area_name"
:
"韩国"
,
"created_at"
:
1761791335
,
"create_type"
:
1
,
"description"
:
"其他,mock消费者二次投诉"
,
"pre_delivery_id"
:
"0"
,
"source"
:
0
,
"title"
:
"包裹丢失/破损;包裹错发/漏发;mock消费者首次投诉"
,
"cabinet_code"
:
""
,
"compensate_state"
:
2
,
"urgent_type"
:
0
,
"updated_at"
:
1761792820
,
"receive_name"
:
"김명상"
,
"sub_type_ids"
:
[
1303
],
"waybill_no"
:
"773484253589148"
,
"compensate_amount"
:
888
,
"receive_address"
:
"제주특별자치도 제주시 추자면 韩国偏远地址"
,
"receive_contact"
:
"15012345678"
,
"express_dealer"
:
"处理人乙"
,
"express_dealer_contact"
:
"15067991234"
,
"express_attachment"
:
[
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/b0ffff8583115046a5e0e70a86f4b156.jpg"
},
{
"url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/de1e9e6a5adaee930456e4e521a6dcb2.jpg"
}
],
"handle_result"
:
"mock工单联调二次处理回复"
,
"type_id"
:
747
,
"ticket_id"
:
176179133571489
,
"sign_state"
:
1
,
"duty"
:
1
,
"express_company_id"
:
567
,
"retreat_count"
:
1
,
"status"
:
1
}
],
"total_count"
:
2
,
"request_id"
:
"17617936806386622"
}
}
PddServer/src/test/java/org/ta/pddserver/ordercreate.json
View file @
daf19865
{
"providerCode"
:
"ABC"
,
"consoWarehouseCode"
:
"wh001"
,
"logisticsOrderCode"
:
"xx0000001"
,
"bizType"
:
"CONSO"
,
"consoType"
:
"FAST"
,
"buyerCode"
:
"BC0001"
,
"dereRecogCode"
:
"D0001"
,
"packageQuantity"
:
1
,
"mailDetails"
:
[
{
"expressCode"
:
"快递公司编码"
,
"mailNo"
:
"344789123"
}
"providerCode"
:
"HAIJI_KR"
,
"consoWarehouseCode"
:
"HJJY001"
,
"deliveryType"
:
"homeDelivery"
,
"sign"
:
"CEB15BAE0013931E165CCDA170034165"
,
"segmentCode"
:
"SENDTORECEVER"
,
"type"
:
"pdd.service.conso.fee.query"
,
"logisticsOrderCodes"
:
[
"PC25102903435973837318059"
],
"items"
:
[
"client_id"
:
"d0217707e1194c46b57e696ac7619a06"
,
"goodsType"
:
"NORMAL"
,
"consoType"
:
"SEA"
,
"receiverDetail"
:
{
"country"
:
"KR"
,
"province"
:
"서울특별시"
,
"city"
:
"강북구"
,
"district"
:
"우이동"
,
"postCode"
:
"01000"
},
"from_client_id"
:
"0f192a79622447c08ddcbce8c6f6152a"
,
"request_id"
:
"706432872"
,
"mailDetails"
:
[
{
"itemId"
:
"1234467"
,
"itemName"
:
"牛仔外套"
,
"categoryName"
:
"衣服"
,
"totalActualPayment"
:
5300
,
"currencyUnit"
:
"CENT"
,
"currency"
:
"CNY"
,
"itemQuantity"
:
2
,
"itemPicUrl"
:
"https://img.pddpic.com/xxx.jpeg"
,
"itemSkuProperty"
:
"黑色15寸"
,
"chargedStatus"
:
true
,
"magneticStatus"
:
true
,
"categoryId"
:
101
"mailNo"
:
"773833357957029"
,
"expressCode"
:
"STO"
}
],
"buyerDetail"
:
{
"name"
:
"zhangsan"
,
"telePhone"
:
"13134563214"
,
"country"
:
"中国"
,
"province"
:
"香港特别行政区"
,
"city"
:
"九龙"
,
"district"
:
"黄大仙区"
,
"detailAddress"
:
"详细地址"
,
"postCode"
:
"xxx"
},
"paymentDetail"
:
{
"tradeOrderSn"
:
"20220511-00001"
,
"tradeOrderValue"
:
5000
,
"currencyUnit"
:
"CENT"
,
"currency"
:
"CNY"
},
"tags"
:
[
"FREE_SHIPPING"
]
"timestamp"
:
"1761706705"
}
\ No newline at end of file
PddServer/src/test/java/org/ta/pddserver/outbound.json
0 → 100644
View file @
daf19865
{
"providerCode"
:
"HAIJI_KR"
,
"tradeOrderActualAmountTotal"
:
2050
,
"consoWarehouseCode"
:
"HJJY001"
,
"deliveryType"
:
"homeDelivery"
,
"sign"
:
"87A69D3356F7038AFF75C184AB7DCFC9"
,
"segmentCode"
:
"SENDTORECEVER"
,
"type"
:
"pdd.service.conso.outbound.notice"
,
"client_id"
:
"d0217707e1194c46b57e696ac7619a06"
,
"buyerCode"
:
"e0443ec295ae80b2fb957889140eacaa"
,
"consoType"
:
"SEA"
,
"orderDetails"
:
[
{
"itemId"
:
"400005926656"
,
"itemName"
:
"集运普通商品"
,
"itemQuantity"
:
1
,
"orderSn"
:
"251029-343597422281675"
,
"actualAmount"
:
2050
,
"logisticsOrderCode"
:
"PC25102903435973837318059"
,
"categoryName"
:
"扫描仪"
,
"weightTotal"
:
300
,
"categoryId"
:
4730
,
"productName"
:
"苹果"
}
],
"freightFeeDetail"
:
{
"payOrderId"
:
"251029-171798730441675"
,
"discountFee"
:
0
,
"payTime"
:
"2025-10-29 11:13:50"
,
"feeDetails"
:
[
{
"amount"
:
1850
,
"currency"
:
"CNY"
,
"type"
:
"freight_fee"
,
"currencyUnit"
:
"CENT"
,
"scene"
:
"freight_fee"
}
],
"weight"
:
300
,
"currency"
:
"CNY"
,
"freightPrice"
:
1850
,
"rentFee"
:
0
,
"currencyUnit"
:
"CENT"
,
"goodsType"
:
"NORMAL"
},
"itemQuantityTotal"
:
1
,
"receiverDetail"
:
{
"country"
:
"KR"
,
"province"
:
"서울특별시"
,
"city"
:
"강북구"
,
"district"
:
"우이동"
,
"name"
:
"nanjiexi"
,
"detailAddress"
:
"서울특별시测试地址"
,
"postCode"
:
"01000"
,
"idNumber"
:
"P666666666666"
,
"telePhone"
:
"01099999999"
},
"from_client_id"
:
"0f192a79622447c08ddcbce8c6f6152a"
,
"orderCode"
:
"PP25102913743895347818059"
,
"orderSns"
:
[
"251029-343597422281675"
],
"request_id"
:
"-1242014517"
,
"mailDetails"
:
[
{
"mailNo"
:
"773833357957029"
,
"expressCode"
:
"STO"
}
],
"timestamp"
:
"1761707668"
}
\ No newline at end of file
PddServer/src/test/java/org/ta/pddserver/upload.json
0 → 100644
View file @
daf19865
{
"logistics_ticket_image_upload_response"
:
{
"image_url"
:
"https://img-test.pddpic.com/open-gw/2066d9194a/de1e9e6a5adaee930456e4e521a6dcb2.jpg"
,
"request_id"
:
"17617922025930615"
}
}
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