Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
jenkins
order-group
Commits
de18b74c
Commit
de18b74c
authored
Feb 24, 2020
by
huvchao@126.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'remotes/origin/feature/20200213_1.9.12_delivery'
parents
ea4ed6cf
a4df4c59
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
702 additions
and
0 deletions
+702
-0
order-application-service/pom.xml
+5
-0
order-application-service/src/main/java/cn/freemud/amp/config/PushOrderConfig.java
+13
-0
order-application-service/src/main/java/cn/freemud/amp/service/ProduceMQService.java
+25
-0
order-application-service/src/main/java/cn/freemud/controller/test/TestController.java
+9
-0
order-application-service/src/main/java/cn/freemud/entities/dto/delivery/CallbackUrlRequestDto.java
+7
-0
order-application-service/src/main/java/cn/freemud/enums/DeliveryStatus.java
+31
-0
order-application-service/src/main/java/cn/freemud/service/delivery/ThirdDeliveryServiceImpl.java
+16
-0
order-management/pom.xml
+133
-0
order-management/src/main/java/cn/freemud/management/controller/DeliveryOrderController.java
+34
-0
order-management/src/main/java/cn/freemud/management/enums/DeliveryStatus.java
+82
-0
order-management/src/main/java/cn/freemud/management/service/OrderBaseService.java
+71
-0
order-management/src/main/java/cn/freemud/management/service/OrderDeliveryService.java
+182
-0
order-management/src/main/java/cn/freemud/management/util/CheckException.java
+19
-0
order-management/src/main/java/cn/freemud/management/util/CommonResp.java
+59
-0
order-management/src/main/java/cn/freemud/management/util/ResponseCodeEnum.java
+15
-0
pom.xml
+1
-0
No files found.
order-application-service/pom.xml
View file @
de18b74c
...
@@ -318,6 +318,11 @@
...
@@ -318,6 +318,11 @@
<version>
2.4.1-SNAPSHOT
</version>
<version>
2.4.1-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
cn.freemud
</groupId>
<artifactId>
order-management
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
tk.mybatis
</groupId>
<groupId>
tk.mybatis
</groupId>
<artifactId>
mapper-spring-boot-starter
</artifactId>
<artifactId>
mapper-spring-boot-starter
</artifactId>
</dependency>
</dependency>
...
...
order-application-service/src/main/java/cn/freemud/amp/config/PushOrderConfig.java
View file @
de18b74c
...
@@ -21,6 +21,10 @@ public class PushOrderConfig {
...
@@ -21,6 +21,10 @@ public class PushOrderConfig {
public
static
final
String
PUSH_ORDER_QUEUE
=
"push-order-queue"
;
public
static
final
String
PUSH_ORDER_QUEUE
=
"push-order-queue"
;
public
static
final
String
PUSH_ORDER_QUEUE_ROUTING_KEY
=
"push-order-queue-routing-key"
;
public
static
final
String
PUSH_ORDER_QUEUE_ROUTING_KEY
=
"push-order-queue-routing-key"
;
// 配送信息消息队列
public
static
final
String
OPEN_PLATFORM_ORDER_DELIVERY_QUEUE
=
"open-platform-order-delivery-queue"
;
public
static
final
String
OPEN_PLATFORM_ORDER_DELIVERY_ROUTING_KEY
=
"open-platform-order-delivery-routing-key"
;
/**
/**
* 定义基于Fanout 的Exchange。
* 定义基于Fanout 的Exchange。
* 基于这个代码,也可以非常方便的定义其他的Exchange类型。
* 基于这个代码,也可以非常方便的定义其他的Exchange类型。
...
@@ -58,4 +62,13 @@ public class PushOrderConfig {
...
@@ -58,4 +62,13 @@ public class PushOrderConfig {
public
OrderMQService
orderMQService
()
{
public
OrderMQService
orderMQService
()
{
return
new
OrderMQService
();
return
new
OrderMQService
();
}
}
@Bean
public
Queue
orderDeliveryQueue
(){
return
QueueBuilder
.
durable
(
OPEN_PLATFORM_ORDER_DELIVERY_QUEUE
).
build
();
}
@Bean
Binding
bindingOrderDeliveryQueue
(
Queue
orderDeliveryQueue
,
Exchange
topicExchange
)
{
return
BindingBuilder
.
bind
(
orderDeliveryQueue
).
to
(
topicExchange
).
with
(
OPEN_PLATFORM_ORDER_DELIVERY_ROUTING_KEY
).
noargs
();
}
}
}
order-application-service/src/main/java/cn/freemud/amp/service/ProduceMQService.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
amp
.
service
;
import
cn.freemud.amp.config.PushOrderConfig
;
import
cn.freemud.amqp.MQMessage
;
import
cn.freemud.amqp.MQService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
/**
* mq发送方
*/
@Service
public
class
ProduceMQService
{
@Autowired
private
MQService
mqService
;
/**
* 发送配送状态变更信息
* @param body
*/
public
void
sendOfDeliveryInfo
(
MQMessage
body
)
{
mqService
.
convertAndSend
(
PushOrderConfig
.
EXCHANGE_NAME
,
PushOrderConfig
.
OPEN_PLATFORM_ORDER_DELIVERY_ROUTING_KEY
,
body
);
}
}
order-application-service/src/main/java/cn/freemud/controller/test/TestController.java
View file @
de18b74c
...
@@ -3,6 +3,7 @@ package cn.freemud.controller.test;
...
@@ -3,6 +3,7 @@ package cn.freemud.controller.test;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.CheckBeforeCreateOrderRequestVo
;
import
cn.freemud.entities.vo.CheckBeforeCreateOrderRequestVo
;
import
cn.freemud.monitorcenter.tools.HealthUtil
;
import
cn.freemud.monitorcenter.tools.HealthUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
lombok.Data
;
import
lombok.Data
;
...
@@ -48,6 +49,14 @@ public class TestController {
...
@@ -48,6 +49,14 @@ public class TestController {
return
platformBaseResponse
;
return
platformBaseResponse
;
}
}
@ApiAnnotation
(
logMessage
=
"testOrderDelivery"
)
@PostMapping
(
"/testOrderDelivery"
)
public
PlatformBaseResponse
testOrderDelivery
(
@Validated
@LogParams
@RequestBody
PlatformBaseRequest
platformBaseRequest
)
{
PlatformBaseResponse
platformBaseResponse
=
new
PlatformBaseResponse
();
platformBaseResponse
.
setStatusCode
(
"100"
);
log
.
info
(
"testOrderDelivery get {}"
,
JSONObject
.
toJSONString
(
platformBaseRequest
));
return
platformBaseResponse
;
}
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/delivery/CallbackUrlRequestDto.java
View file @
de18b74c
package
cn
.
freemud
.
entities
.
dto
.
delivery
;
package
cn
.
freemud
.
entities
.
dto
.
delivery
;
import
cn.freemud.base.util.DateUtil
;
import
lombok.Data
;
import
lombok.Data
;
/**
/**
...
@@ -61,4 +62,10 @@ public class CallbackUrlRequestDto {
...
@@ -61,4 +62,10 @@ public class CallbackUrlRequestDto {
* 渠道短码
* 渠道短码
*/
*/
private
String
channelCode
;
private
String
channelCode
;
/**
* 更新时间
*/
private
String
updateTime
=
DateUtil
.
getCurrentDate
(
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
}
}
order-application-service/src/main/java/cn/freemud/enums/DeliveryStatus.java
View file @
de18b74c
package
cn
.
freemud
.
enums
;
package
cn
.
freemud
.
enums
;
import
com.google.common.collect.Lists
;
import
java.util.List
;
/**
/**
* All rights Reserved, Designed By www.freemud.cn
* All rights Reserved, Designed By www.freemud.cn
*
*
...
@@ -48,4 +52,31 @@ public enum DeliveryStatus {
...
@@ -48,4 +52,31 @@ public enum DeliveryStatus {
public
void
setDesc
(
String
desc
)
{
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
this
.
desc
=
desc
;
}
}
public
static
DeliveryStatus
getDeliveryStatusByCode
(
int
code
)
{
for
(
DeliveryStatus
obj
:
values
())
{
if
(
obj
.
code
==
code
)
{
return
obj
;
}
}
return
null
;
}
public
static
boolean
checkDeliveryStatueForPlatform
(
int
status
)
{
DeliveryStatus
deliveryStatus
=
DeliveryStatus
.
getDeliveryStatusByCode
(
status
);
if
(
null
==
deliveryStatus
)
return
false
;
List
<
DeliveryStatus
>
targetList
=
Lists
.
newArrayList
(
DeliveryStatus
.
ALLOTRIDER
,
DeliveryStatus
.
RIDERGETMEAL
,
DeliveryStatus
.
RIDERSTARTDELIVERY
,
DeliveryStatus
.
DELIVERYARRIVED
,
DeliveryStatus
.
DELIVERYERROR
,
DeliveryStatus
.
DELIVERYCANCEL
);
if
(
targetList
.
contains
(
deliveryStatus
))
{
return
true
;
}
return
false
;
}
}
}
order-application-service/src/main/java/cn/freemud/service/delivery/ThirdDeliveryServiceImpl.java
View file @
de18b74c
package
cn
.
freemud
.
service
.
delivery
;
package
cn
.
freemud
.
service
.
delivery
;
import
cn.freemud.amp.service.ProduceMQService
;
import
cn.freemud.amqp.Header
;
import
cn.freemud.amqp.MQAction
;
import
cn.freemud.amqp.MQMessage
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.dto.delivery.CallbackUrlRequestDto
;
import
cn.freemud.entities.dto.delivery.CallbackUrlRequestDto
;
import
cn.freemud.entities.dto.pos.PosBaseRequestDto
;
import
cn.freemud.entities.dto.pos.PosBaseRequestDto
;
...
@@ -21,10 +25,13 @@ import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDelive
...
@@ -21,10 +25,13 @@ import com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDelive
import
com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.OrderBaseResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.OrderBaseResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
com.google.common.collect.ImmutableMap
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Map
;
/**
/**
* All rights Reserved, Designed By www.freemud.cn
* All rights Reserved, Designed By www.freemud.cn
*
*
...
@@ -49,6 +56,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
...
@@ -49,6 +56,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
private
Orderservice
orderservice
;
private
Orderservice
orderservice
;
@Autowired
@Autowired
private
PosClient
posClient
;
private
PosClient
posClient
;
@Autowired
private
ProduceMQService
produceMQService
;
@Override
@Override
public
BaseResponse
callbackUrl
(
CallbackUrlRequestDto
request
)
{
public
BaseResponse
callbackUrl
(
CallbackUrlRequestDto
request
)
{
...
@@ -102,6 +111,13 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
...
@@ -102,6 +111,13 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
posBaseRequestDto
.
setDeliveryId
(
request
.
getDeliveryId
());
posBaseRequestDto
.
setDeliveryId
(
request
.
getDeliveryId
());
sendPosService
(
deliveryStatus
,
posBaseRequestDto
);
sendPosService
(
deliveryStatus
,
posBaseRequestDto
);
}
}
// 订单配送状态变化时发送到MQ
if
(
DeliveryStatus
.
checkDeliveryStatueForPlatform
(
deliveryStatus
))
{
Header
header
=
new
Header
(
MQAction
.
UPDATE
.
getAction
(),
"delivery/callbackUrl"
,
request
.
getOrderId
(),
"open-platform-order-delivery-queue"
);
MQMessage
<
CallbackUrlRequestDto
>
message
=
new
MQMessage
<>(
header
,
request
);
produceMQService
.
sendOfDeliveryInfo
(
message
);
}
// else {
// else {
// return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误");
// return ResponseUtil.error(ResponseResult.SYSTEM_ERROR.getCode(), "订单回调状态有误");
// }
// }
...
...
order-management/pom.xml
0 → 100644
View file @
de18b74c
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
order-group
</artifactId>
<groupId>
cn.freemud
</groupId>
<version>
1.0.0
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<name>
order-management
</name>
<artifactId>
order-management
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.11
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
cn.freemud
</groupId>
<artifactId>
assortment-ordercenter-sdk
</artifactId>
<version>
1.1.5.RELEASE
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
storecenter-sdk
</artifactId>
<version>
2.1.RELEASE
</version>
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
<artifactId>
deliverycenter-sdk
</artifactId>
<version>
1.1.3-SNAPSHOT
</version>
</dependency>
<dependency>
<groupId>
cn.freemud.commons
</groupId>
<artifactId>
commons-base
</artifactId>
<version>
1.5.1-release
</version>
<scope>
provided
</scope>
</dependency>
<!--freemud类库依赖-->
<dependency>
<groupId>
cn.freemud.commons
</groupId>
<artifactId>
commons-base
</artifactId>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
2.7.0
</version>
<scope>
provided
</scope>
<exclusions>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-core
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-beans
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-context
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-context-support
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-aop
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-tx
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-orm
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-jdbc
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-web
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-webmvc
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-oxm
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
2.7.0
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
</project>
order-management/src/main/java/cn/freemud/management/controller/DeliveryOrderController.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
controller
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.management.service.OrderDeliveryService
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* 创建配送单
*/
@Slf4j
@RequestMapping
(
"/order"
)
@RestController
@Validated
public
class
DeliveryOrderController
{
@Autowired
private
OrderDeliveryService
orderDeliveryService
;
@ApiAnnotation
(
logMessage
=
"创建配送单"
)
@ApiOperation
(
value
=
"创建配送单"
,
notes
=
"创建配送单"
,
produces
=
"application/json"
)
@GetMapping
(
"/delivery/create"
)
public
BaseResponse
deliveryCreate
(
@RequestParam
(
"orderCode"
)
String
orderCode
,
@RequestParam
(
value
=
"operator"
,
required
=
false
)
String
operator
)
{
return
orderDeliveryService
.
createDelivery
(
orderCode
,
operator
);
}
}
order-management/src/main/java/cn/freemud/management/enums/DeliveryStatus.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
enums
;
import
com.google.common.collect.Lists
;
import
java.util.List
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.5.1
* @Title: DeliveryStatus
* @Package cn.freemud.enums
* @Description: 简单描述下这个类是做什么用的
* @author: hang.chai
* @date: 2018/12/12 14:57
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public
enum
DeliveryStatus
{
WATINGORDER
(
0
,
"待接单"
),
SYSTEMGETORDER
(
1
,
"系统接单"
),
ALLOTRIDER
(
2
,
"分配骑手"
),
RIDERARRIVESTORE
(
3
,
"骑手到店"
),
RIDERGETMEAL
(
4
,
"骑手取餐"
),
RIDERSTARTDELIVERY
(
5
,
"开始配送"
),
DELIVERYARRIVED
(
6
,
"运单送达"
),
DELIVERYERROR
(
7
,
"运单异常"
),
DELIVERYCANCEL
(
8
,
"运单取消"
);
private
int
code
;
private
String
desc
;
DeliveryStatus
(
int
code
,
String
desc
)
{
this
.
code
=
code
;
this
.
desc
=
desc
;
}
public
int
getCode
()
{
return
code
;
}
public
void
setCode
(
int
code
)
{
this
.
code
=
code
;
}
public
String
getDesc
()
{
return
desc
;
}
public
void
setDesc
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
static
DeliveryStatus
getDeliveryStatusByCode
(
int
code
)
{
for
(
DeliveryStatus
obj
:
values
())
{
if
(
obj
.
code
==
code
)
{
return
obj
;
}
}
return
null
;
}
public
static
boolean
checkDeliveryStatueForPlatform
(
int
status
)
{
DeliveryStatus
deliveryStatus
=
DeliveryStatus
.
getDeliveryStatusByCode
(
status
);
if
(
null
==
deliveryStatus
)
return
false
;
List
<
DeliveryStatus
>
targetList
=
Lists
.
newArrayList
(
DeliveryStatus
.
ALLOTRIDER
,
DeliveryStatus
.
RIDERGETMEAL
,
DeliveryStatus
.
RIDERSTARTDELIVERY
,
DeliveryStatus
.
DELIVERYARRIVED
,
DeliveryStatus
.
DELIVERYERROR
,
DeliveryStatus
.
DELIVERYCANCEL
);
if
(
targetList
.
contains
(
deliveryStatus
))
{
return
true
;
}
return
false
;
}
}
order-management/src/main/java/cn/freemud/management/service/OrderBaseService.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
service
;
import
cn.freemud.management.enums.DeliveryStatus
;
import
com.freemud.sdk.api.assortment.order.request.order.AssortmentUpdateDeliveryAbnormalRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest
;
import
com.freemud.sdk.api.assortment.order.request.order.UpdateDeliveryInfoByIdRequest
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrderByIdResponse
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
@Service
@Slf4j
public
class
OrderBaseService
{
@Autowired
private
OrderCenterSdkService
orderCenterSdkService
;
public
QueryOrdersResponse
.
DataBean
.
OrderBean
getByOrderCode
(
String
orderCode
)
{
try
{
BaseQueryOrderRequest
queryRequest
=
new
BaseQueryOrderRequest
();
queryRequest
.
setOrderId
(
orderCode
);
QueryOrderByIdResponse
response
=
orderCenterSdkService
.
queryOrderById
(
queryRequest
);
if
(
response
.
getErrcode
()
==
100
)
{
return
response
.
getData
();
}
return
response
.
getData
();
}
catch
(
Exception
ex
)
{
ex
.
printStackTrace
();
return
null
;
}
}
/**
* 创建配送单一车 -> 更新订单为异常单
*
* @param partnerId
* @param orderCode
* @param deliveryId
*/
public
void
updateDeliveryAbnormal
(
String
partnerId
,
String
orderCode
,
String
deliveryId
,
String
operator
)
{
AssortmentUpdateDeliveryAbnormalRequest
request
=
AssortmentUpdateDeliveryAbnormalRequest
.
builder
()
.
abnormalDesc
(
"配送异常"
)
.
deliveryId
(
deliveryId
)
.
orderCode
(
orderCode
)
.
partnerId
(
partnerId
)
.
operator
(
StringUtils
.
isNotBlank
(
operator
)
?
operator
:
"sys"
)
.
build
();
orderCenterSdkService
.
updateDeliveryAbnormal
(
request
);
}
/**
* 创建配送单成功后 -> 更新订单配送信息
*
* @param orderCode
* @param deliveryId
*/
public
void
updateDeliverySuccess
(
String
orderCode
,
String
deliveryId
,
String
operator
)
{
// 创建配送单成功
UpdateDeliveryInfoByIdRequest
updateDeliveryInfoByIdRequest
=
new
UpdateDeliveryInfoByIdRequest
();
updateDeliveryInfoByIdRequest
.
setDeliveryId
(
deliveryId
);
updateDeliveryInfoByIdRequest
.
setOrderId
(
orderCode
);
updateDeliveryInfoByIdRequest
.
setOrderSubState
(
DeliveryStatus
.
WATINGORDER
.
getCode
());
operator
=
StringUtils
.
isNotBlank
(
operator
)
?
operator
:
"sys"
;
updateDeliveryInfoByIdRequest
.
setOperator
(
operator
);
orderCenterSdkService
.
updateDeliveryInfoById
(
updateDeliveryInfoByIdRequest
);
}
}
order-management/src/main/java/cn/freemud/management/service/OrderDeliveryService.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.management.util.CheckException
;
import
cn.freemud.management.util.CommonResp
;
import
com.freemud.application.sdk.api.deliverycenter.dto.CreateDeliveryOrderRequestDto
;
import
com.freemud.application.sdk.api.deliverycenter.response.CreateDeliveryOrderResponseDto
;
import
com.freemud.application.sdk.api.deliverycenter.service.DeliveryService
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.sdk.api.assortment.order.enums.OrderSourceType
;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.google.common.base.Throwables
;
import
javafx.util.Pair
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.math.BigDecimal
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
@Slf4j
@Service
public
class
OrderDeliveryService
{
@Autowired
private
StoreCenterService
storeCenterService
;
@Autowired
private
DeliveryService
deliveryService
;
@Autowired
private
OrderBaseService
orderBaseService
;
@Value
(
"${saas.order.delivery.callBackUrl}"
)
private
String
deliveryCallBackUrl
;
private
int
SUCCESS
=
100
;
private
String
delivery_type_self
=
"self"
;
/**
* 外卖单创建配送信息
*
* @param orderCode
* @return
*/
public
BaseResponse
createDelivery
(
String
orderCode
,
String
operator
)
{
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
=
orderBaseService
.
getByOrderCode
(
orderCode
);
if
(
null
==
orderBean
)
{
return
CommonResp
.
fail
(
"订单不存在"
);
}
Pair
<
Boolean
,
String
>
pair
=
checkOrderOfDelivery
(
orderBean
);
if
(!
pair
.
getKey
())
{
log
.
info
(
"无需创建配送单({}),{}"
,
orderBean
.
getOid
(),
pair
.
getValue
());
return
CommonResp
.
success
(
pair
.
getValue
());
}
try
{
this
.
createDelivery
(
orderBean
,
operator
);
}
catch
(
CheckException
e
)
{
log
.
error
(
"创建配送单失败({}),trace:{}"
,
orderCode
,
Throwables
.
getStackTraceAsString
(
e
));
return
CommonResp
.
fail
(
e
.
getMessage
());
}
return
CommonResp
.
success
();
}
/**
* 创建配送信息
*
* @param orderBean
* @return
*/
public
Boolean
createDelivery
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
,
String
operator
)
{
StoreInfoRequest
storeInfoRequestDto
=
new
StoreInfoRequest
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
());
StoreResponse
storeInfo
=
storeCenterService
.
getStoreInfo
(
storeInfoRequestDto
,
LogTreadLocal
.
getTrackingNo
());
if
(
SUCCESS
!=
storeInfo
.
getStatusCode
()
||
storeInfo
.
getBizVO
()
==
null
)
{
throw
new
CheckException
(
"查询门店信息失败"
);
}
// 调用配送系统创建配送单
CreateDeliveryOrderRequestDto
requestDto
=
buildDeliveryOrderRequestDto
(
orderBean
,
storeInfo
,
deliveryCallBackUrl
);
CreateDeliveryOrderResponseDto
deliveryResponse
=
deliveryService
.
deliveryOrderAdd
(
requestDto
,
LogTreadLocal
.
getTrackingNo
());
if
(
StringUtils
.
isBlank
(
operator
))
{
operator
=
"系统"
;
}
//创建配送单失败,更新订单为异常单
if
(
deliveryResponse
==
null
||
SUCCESS
!=
deliveryResponse
.
getCode
()
||
deliveryResponse
.
getData
()
==
null
)
{
String
deliveryId
=
deliveryResponse
!=
null
&&
deliveryResponse
.
getData
()
!=
null
?
deliveryResponse
.
getData
().
getDeliveryId
()
:
""
;
orderBaseService
.
updateDeliveryAbnormal
(
orderBean
.
getCompanyId
(),
orderBean
.
getOid
(),
deliveryId
,
operator
);
throw
new
CheckException
(
"创建配送单信息失败,配送状态更新为配送异常"
);
}
// 创建配送单成功
orderBaseService
.
updateDeliverySuccess
(
orderBean
.
getOid
(),
deliveryResponse
.
getData
().
getDeliveryId
(),
operator
);
return
true
;
}
/**
* 校验订单是否符合创建配送单要求
*
* @param orderBean
* @return
*/
public
Pair
<
Boolean
,
String
>
checkOrderOfDelivery
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
//判断外卖单
if
(
1
!=
orderBean
.
getType
())
{
return
new
Pair
<>(
false
,
"该订单不是外卖类型订单"
);
}
if
(!
orderBean
.
getSource
().
equalsIgnoreCase
(
OrderSourceType
.
SAAS
.
getCode
()))
{
return
new
Pair
<>(
false
,
"订单来源异常"
);
}
//配送信息为空,则不创建配送单
if
(
orderBean
.
getAddInfo
()
==
null
||
orderBean
.
getAddInfo
().
getDeliveryType
()
==
null
)
{
return
new
Pair
<>(
false
,
"未找到订单配送信息"
);
}
//自配送不创建配送单
if
(
delivery_type_self
.
equalsIgnoreCase
(
orderBean
.
getAddInfo
().
getDeliveryType
()))
{
return
new
Pair
<>(
false
,
"该订单为自配送"
);
}
return
new
Pair
<>(
true
,
"success"
);
}
/**
* 创建配送单请求对象
*
* @param order
* @param storeInfo
* @param deliveryCallBackUrl
* @return
*/
private
CreateDeliveryOrderRequestDto
buildDeliveryOrderRequestDto
(
QueryOrdersResponse
.
DataBean
.
OrderBean
order
,
StoreResponse
storeInfo
,
String
deliveryCallBackUrl
)
{
CreateDeliveryOrderRequestDto
deliveryOrderRequestDto
=
new
CreateDeliveryOrderRequestDto
();
deliveryOrderRequestDto
.
setDepatchWeight
(
new
BigDecimal
(
1
));
deliveryOrderRequestDto
.
setSerialNumber
(
order
.
getDaySeq
().
toString
());
deliveryOrderRequestDto
.
setOrderId
(
order
.
getOid
());
deliveryOrderRequestDto
.
setOrderRemark
(
order
.
getRemark
());
deliveryOrderRequestDto
.
setOrderTotalAmount
(
order
.
getAmount
().
intValue
());
deliveryOrderRequestDto
.
setOrderActualAmount
(
order
.
getAmount
().
intValue
());
deliveryOrderRequestDto
.
setPartnerId
(
order
.
getCompanyId
());
deliveryOrderRequestDto
.
setOrderChannel
(
order
.
getSource
());
deliveryOrderRequestDto
.
setStoreId
(
storeInfo
.
getBizVO
().
getStoreId
());
deliveryOrderRequestDto
.
setStoreCode
(
storeInfo
.
getBizVO
().
getStoreCode
());
StringBuffer
address
=
new
StringBuffer
(
storeInfo
.
getBizVO
().
getCity
())
.
append
(
storeInfo
.
getBizVO
().
getProvince
())
.
append
(
storeInfo
.
getBizVO
().
getRegion
())
.
append
(
storeInfo
.
getBizVO
().
getAddress
());
deliveryOrderRequestDto
.
setStoreAddress
(
address
.
toString
());
deliveryOrderRequestDto
.
setStoreLng
(
new
BigDecimal
(
storeInfo
.
getBizVO
().
getLongitude
()));
deliveryOrderRequestDto
.
setStoreLat
(
new
BigDecimal
(
storeInfo
.
getBizVO
().
getLatitude
()));
deliveryOrderRequestDto
.
setStorePhone
(
storeInfo
.
getBizVO
().
getPhone
());
deliveryOrderRequestDto
.
setStoreName
(
order
.
getShopName
());
deliveryOrderRequestDto
.
setCityName
(
storeInfo
.
getBizVO
().
getCity
());
deliveryOrderRequestDto
.
setReceiverName
(
order
.
getUserName
());
deliveryOrderRequestDto
.
setReceiverPrimaryPhone
(
order
.
getPhone
());
deliveryOrderRequestDto
.
setReceiverAddress
(
order
.
getAddress
());
deliveryOrderRequestDto
.
setReceiverLng
(
new
BigDecimal
(
order
.
getLongitude
()));
deliveryOrderRequestDto
.
setReceiverLat
(
new
BigDecimal
(
order
.
getLatitude
()));
deliveryOrderRequestDto
.
setOrderTime
(
new
Date
(
order
.
getGmtCreate
()));
deliveryOrderRequestDto
.
setCallbackUrl
(
deliveryCallBackUrl
);
// 预约单预计送到时间
deliveryOrderRequestDto
.
setExpectTime
(
new
Date
(
order
.
getGmtCreate
()));
deliveryOrderRequestDto
.
setIsPre
(
order
.
getGmtExpect
()
!=
null
?
1
:
0
);
List
<
CreateDeliveryOrderRequestDto
.
DeliveryProductInfo
>
productInfos
=
new
ArrayList
<>();
order
.
getProductList
().
forEach
(
productList
->
{
if
(
productList
.
getPrice
()
>
0
)
{
CreateDeliveryOrderRequestDto
.
DeliveryProductInfo
deliveryProductInfo
=
new
CreateDeliveryOrderRequestDto
.
DeliveryProductInfo
();
deliveryProductInfo
.
setProductCode
(
productList
.
getProductId
());
deliveryProductInfo
.
setProductName
(
productList
.
getProductName
());
deliveryProductInfo
.
setProductNumber
(
productList
.
getNumber
());
deliveryProductInfo
.
setProductPrice
(
productList
.
getPrice
().
intValue
());
productInfos
.
add
(
deliveryProductInfo
);
}
});
deliveryOrderRequestDto
.
setProductInfos
(
productInfos
);
return
deliveryOrderRequestDto
;
}
}
order-management/src/main/java/cn/freemud/management/util/CheckException.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
util
;
import
lombok.Getter
;
@Getter
public
class
CheckException
extends
RuntimeException
{
protected
ResponseCodeEnum
responseCodeEnum
;
public
CheckException
(
ResponseCodeEnum
responseCodeEnum
)
{
super
(
responseCodeEnum
.
msg
);
this
.
responseCodeEnum
=
responseCodeEnum
;
}
public
CheckException
(
String
message
)
{
super
(
message
);
}
}
\ No newline at end of file
order-management/src/main/java/cn/freemud/management/util/CommonResp.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
util
;
import
cn.freemud.base.constant.Version
;
import
cn.freemud.base.entity.BaseResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.Getter
;
import
lombok.Setter
;
import
lombok.ToString
;
@Getter
@Setter
@ToString
public
class
CommonResp
<
T
>
extends
BaseResponse
<
T
>
{
public
CommonResp
()
{
super
();
}
public
CommonResp
(
String
ver
,
ResponseCodeEnum
codeEnum
)
{
super
(
ver
,
codeEnum
.
code
,
codeEnum
.
msg
,
(
T
)
new
JSONObject
());
}
public
CommonResp
(
String
ver
,
ResponseCodeEnum
codeEnum
,
T
result
)
{
super
(
ver
,
codeEnum
.
code
,
codeEnum
.
msg
,
result
);
}
public
CommonResp
(
ResponseCodeEnum
codeEnum
,
T
result
)
{
super
(
Version
.
VERSION_1
,
codeEnum
.
code
,
codeEnum
.
msg
,
result
);
}
public
CommonResp
(
ResponseCodeEnum
codeEnum
)
{
super
(
Version
.
VERSION_1
,
codeEnum
.
code
,
codeEnum
.
msg
,
(
T
)
new
JSONObject
());
}
public
CommonResp
(
String
code
,
String
message
)
{
super
(
Version
.
VERSION_1
,
code
,
message
,
(
T
)
new
JSONObject
());
}
public
static
CommonResp
success
()
{
return
new
CommonResp
(
ResponseCodeEnum
.
SUCCESS
);
}
public
static
CommonResp
success
(
Object
data
)
{
return
new
CommonResp
(
ResponseCodeEnum
.
SUCCESS
,
data
);
}
public
static
CommonResp
fail
()
{
return
new
CommonResp
(
ResponseCodeEnum
.
FAILURE
);
}
public
static
CommonResp
fail
(
String
message
)
{
return
new
CommonResp
(
ResponseCodeEnum
.
FAILURE
.
code
,
message
);
}
public
static
CommonResp
fail
(
Object
data
)
{
return
new
CommonResp
(
ResponseCodeEnum
.
FAILURE
,
data
);
}
}
order-management/src/main/java/cn/freemud/management/util/ResponseCodeEnum.java
0 → 100644
View file @
de18b74c
package
cn
.
freemud
.
management
.
util
;
public
enum
ResponseCodeEnum
{
SUCCESS
(
"100"
,
"成功"
),
FAILURE
(
"1001"
,
"失败"
),
;
public
String
code
;
public
String
msg
;
ResponseCodeEnum
(
String
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
}
pom.xml
View file @
de18b74c
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
<module>
push-order-service
</module>
<module>
push-order-service
</module>
<module>
platform-sdk
</module>
<module>
platform-sdk
</module>
<module>
assortment-shoppingcart-sdk
</module>
<module>
assortment-shoppingcart-sdk
</module>
<module>
order-management
</module>
</modules>
</modules>
<parent>
<parent>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
...
...
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