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
order-group-application
order-group
Commits
ea20d687
Commit
ea20d687
authored
Jun 08, 2021
by
周晓航
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
开发 订单预计送达时间 需求
Signed-off-by: 周晓航 <xiaohang.zhou@freemud.com>
parent
9c084d53
Show whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
253 additions
and
7 deletions
+253
-7
assortment-ordercenter-sdk/pom.xml
+1
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
+5
-1
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
+5
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/UpdateDeliveryInfoByIdRequest.java
+5
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
+2
-0
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+4
-0
order-application-service/src/main/java/cn/freemud/entities/dto/UserDeliveryInfoDto.java
+7
-0
order-application-service/src/main/java/cn/freemud/entities/dto/delivery/CallbackUrlRequestDto.java
+5
-0
order-application-service/src/main/java/cn/freemud/entities/dto/store/GetEstimateDeliveryRequest.java
+25
-0
order-application-service/src/main/java/cn/freemud/entities/dto/store/QueryDeliverDetailResponse.java
+106
-0
order-application-service/src/main/java/cn/freemud/entities/dto/store/StoreBaseResponseDto.java
+1
-1
order-application-service/src/main/java/cn/freemud/entities/dto/store/StoreInfoRequestDto.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/delivery/ThirdDeliveryServiceImpl.java
+2
-0
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
+52
-2
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/thirdparty/StoreBaseApiClient.java
+25
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExpressReq.java
+6
-0
No files found.
assortment-ordercenter-sdk/pom.xml
View file @
ea20d687
...
...
@@ -38,7 +38,7 @@
<dependency>
<groupId>
cn.freemud
</groupId>
<artifactId>
ordercenter-sdk
</artifactId>
<version>
1.3.5
7
.RELEASE
</version>
<version>
1.3.5
8
.RELEASE
</version>
</dependency>
<dependency>
<groupId>
com.freemud.application.service.sdk
</groupId>
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/adapter/OrderSdkAdapter.java
View file @
ea20d687
...
...
@@ -283,7 +283,11 @@ public class OrderSdkAdapter {
if
(
requestVO
.
getChooseGoods
()
!=
null
&&
!
requestVO
.
getChooseGoods
().
isEmpty
()){
request
.
setOrderSendCouponRespList
(
JSONArray
.
parseArray
(
JSONObject
.
toJSONString
(
requestVO
.
getChooseGoods
()),
CreateOrderRequest
.
ChooseGood
.
class
));
}
// 【ID1030916】订单查询门店获取预计送达时间
if
(
requestVO
.
getEstimateDeliveryCompleteTime
()
!=
null
)
{
Date
time
=
requestVO
.
getEstimateDeliveryCompleteTime
();
request
.
setEstimateDeliveryCompleteTime
(
time
.
getTime
()
+
""
);
}
return
request
;
}
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/BaseCreateOrderRequest.java
View file @
ea20d687
...
...
@@ -179,6 +179,11 @@ public class BaseCreateOrderRequest extends BaseConfig {
*/
private
Byte
marketingType
;
/**
* 预计送达时间 调用门店服务计算得出
*/
private
Date
estimateDeliveryCompleteTime
;
@Data
public
static
class
DeliveryTypeInfo
{
/**
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/request/order/UpdateDeliveryInfoByIdRequest.java
View file @
ea20d687
...
...
@@ -88,4 +88,9 @@ public class UpdateDeliveryInfoByIdRequest extends BaseConfig {
private
OrderTaskReq
orderTask
;
/**
* 分配骑手时,三方平台的一个预估送达时间
*/
public
Long
estimateArriveTime
;
}
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/service/order/OrderCenterSdkServiceImpl.java
View file @
ea20d687
...
...
@@ -1105,6 +1105,8 @@ public class OrderCenterSdkServiceImpl implements OrderCenterSdkService {
expressReq
.
setAutoReceiveTime
(
processingTime
);
expressReq
.
setOrderStatus
(
NewOrderStatus
.
DELIVERING
.
getIndex
());
}
//【ID1031049】 订单接受配送分配骑手状态回调
expressReq
.
setEstimateArriveTime
(
request
.
getEstimateArriveTime
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
response
=
orderSdkService
.
updateDeliveryInfo
(
expressReq
,
request
.
getTrackingNo
());
OrderBaseResponse
baseResponse
=
new
OrderBaseResponse
();
baseResponse
.
setErrcode
(
response
.
getCode
()
!=
null
?
Integer
.
parseInt
(
response
.
getCode
())
:
null
);
...
...
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
ea20d687
...
...
@@ -728,6 +728,8 @@ public class OrderAdapter {
createOrderDto
.
setOperator
(
createOrderVo
.
getUserName
());
createOrderDto
.
setMenuType
(
BusinessTypeEnum
.
getByCode
(
createOrderVo
.
getMenuType
()));
createOrderDto
.
setMarketingType
(
createOrderVo
.
getMarketingType
());
// 【ID1030916】订单查询门店获取预计送达时间
createOrderDto
.
setEstimateDeliveryCompleteTime
(
createOrderVo
.
getUserDeliveryInfoDto
().
getEstimateDeliveryCompleteTime
());
return
createOrderDto
;
}
...
...
@@ -1191,7 +1193,9 @@ public class OrderAdapter {
}
else
{
responseVo
.
setTakeMealTime
(
"我已到店"
);
}
// 更新该字段 用于 预计送达时间
if
(
orderExtInfoDto
!=
null
&&
StringUtils
.
isNotBlank
(
orderExtInfoDto
.
getDeliveryHoursDayStart
())
&&
StringUtils
.
isNotBlank
(
orderExtInfoDto
.
getPayDate
()))
{
Date
createTime
=
new
Date
(
ordersBean
.
getGmtCreate
());
Date
deliveryHoursDayStart
=
DateUtil
.
convert2Date
(
orderExtInfoDto
.
getDeliveryHoursDayStart
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
);
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/UserDeliveryInfoDto.java
View file @
ea20d687
...
...
@@ -3,6 +3,8 @@ package cn.freemud.entities.dto;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.Date
;
@Data
@Builder
public
class
UserDeliveryInfoDto
{
...
...
@@ -72,4 +74,9 @@ public class UserDeliveryInfoDto {
*/
private
String
receiveRegion
;
/**
* 预计送达时间
*/
private
Date
estimateDeliveryCompleteTime
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/delivery/CallbackUrlRequestDto.java
View file @
ea20d687
...
...
@@ -77,4 +77,9 @@ public class CallbackUrlRequestDto {
*/
private
String
exceptionDesc
;
/**
* 分配骑手时,三方平台的一个预估送达时间
*/
public
Long
estimateArriveTime
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/store/GetEstimateDeliveryRequest.java
0 → 100644
View file @
ea20d687
package
cn
.
freemud
.
entities
.
dto
.
store
;
import
lombok.Builder
;
import
lombok.Data
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/4 下午1:53
* @description :
*/
@Data
@Builder
public
class
GetEstimateDeliveryRequest
extends
StoreInfoRequestDto
{
/**
* 用户收货地址维度
*/
private
String
userLatitude
;
/**
* 用户收货地址经度
*/
private
String
userLongitude
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/store/QueryDeliverDetailResponse.java
0 → 100644
View file @
ea20d687
package
cn
.
freemud
.
entities
.
dto
.
store
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.util.Date
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/4 下午3:42
* @description :
*/
@Data
@Builder
public
class
QueryDeliverDetailResponse
{
/**
* 每增加多少公里(单位米)
*/
private
String
addRange
;
/**
* 配送方式:1-三方物流配送、2-商家自配送
*/
private
String
deliveryMethod
;
/**
* 每增加距离增加多少钱(分)
*/
private
String
addRangeAmount
;
/**
* 配送区域名称
*/
private
String
areaName
;
/**
* 实际需要支付配送费
*/
private
Long
deliveryAmount
;
/**
* 配送费(分)
*/
private
String
deliveryFee
;
/**
* 配送费为零的原因:0:正常,1:超出配送范围
*/
private
Integer
deliveryFeeZeroReason
;
/**
* 基础配送范围(单位米)
*/
private
String
deliveryRange
;
/**
* 配送时间(分钟)
*/
private
Integer
deliveryTime
;
/**
* 外卖起送条件(1:杯数,2:金额)
*/
private
Integer
deliveryType
;
/**
* 起送杯数
*/
private
Integer
freeDeliveryCup
;
/**
* 起送价格(分)
*/
private
String
minOrderPrice
;
/**
* 商户编号
*/
private
String
partnerId
;
/**
* 下单范围,格式:jsonArray,或者半径(米)
*/
private
String
positionScope
;
/**
* 下单范围类型 1手工画范围 2半径服务
*/
private
Integer
positionScopeType
;
/**
* 门店编号
*/
private
String
storeCode
;
/**
* 门店id
*/
private
String
storeId
;
/**
* 预计送达时间
*/
private
Date
expectArriveTime
;
}
order-application-service/src/main/java/cn/freemud/entities/dto/StoreBaseResponseDto.java
→
order-application-service/src/main/java/cn/freemud/entities/dto/
store/
StoreBaseResponseDto.java
View file @
ea20d687
...
...
@@ -10,7 +10,7 @@
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
dto
;
package
cn
.
freemud
.
entities
.
dto
.
store
;
import
lombok.Data
;
import
lombok.ToString
;
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/StoreInfoRequestDto.java
→
order-application-service/src/main/java/cn/freemud/entities/dto/
store/
StoreInfoRequestDto.java
View file @
ea20d687
...
...
@@ -10,7 +10,7 @@
* @Copyright: 2018 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
entities
.
dto
;
package
cn
.
freemud
.
entities
.
dto
.
store
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
...
...
order-application-service/src/main/java/cn/freemud/service/delivery/ThirdDeliveryServiceImpl.java
View file @
ea20d687
...
...
@@ -131,6 +131,8 @@ public class ThirdDeliveryServiceImpl implements ThirdDeliveryService {
requestDto
.
setRemark
(
request
.
getRemark
());
requestDto
.
setExceptionDesc
(
request
.
getExceptionDesc
());
requestDto
.
setExceptionId
(
request
.
getExceptionId
());
//【ID1031049】 订单接受配送分配骑手状态回调
requestDto
.
setEstimateArriveTime
(
request
.
getEstimateArriveTime
());
if
(
StringUtils
.
isNotBlank
(
request
.
getRemark
()))
{
requestDto
.
setRemark
(
"配送:"
+
request
.
getRemark
());
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
View file @
ea20d687
...
...
@@ -23,6 +23,9 @@ import cn.freemud.entities.dto.delivery.GetDeliveryFlagResponseDto;
import
cn.freemud.entities.dto.order.BusinessDate
;
import
cn.freemud.entities.dto.shoppingCart.GetShoppingCartGoodsApportionDto
;
import
cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto
;
import
cn.freemud.entities.dto.store.GetEstimateDeliveryRequest
;
import
cn.freemud.entities.dto.store.StoreBaseResponseDto
;
import
cn.freemud.entities.dto.store.StoreInfoRequestDto
;
import
cn.freemud.entities.vo.*
;
import
cn.freemud.enums.*
;
import
cn.freemud.interceptor.ServiceException
;
...
...
@@ -33,6 +36,7 @@ import cn.freemud.service.order.OrderRelationFactory;
import
cn.freemud.service.order.OrderRelationService
;
import
cn.freemud.service.thirdparty.DeliveryFeiginClient
;
import
cn.freemud.service.thirdparty.ShoppingCartClient
;
import
cn.freemud.service.thirdparty.StoreBaseApiClient
;
import
cn.freemud.utils.LogUtil
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -136,6 +140,8 @@ public class CheckOrder {
@Value
(
"${coco.partnerId}"
)
private
String
cocoPartnerId
;
@Autowired
private
StoreBaseApiClient
storeBaseApiClient
;
/**
* 下单会员相关校验
*/
...
...
@@ -320,7 +326,7 @@ public class CheckOrder {
}
storeDeliveryInfoDto
.
setEnableTakeaway
(
true
);
// 校验收货地址是否可配送
// 校验收货地址是否可配送
fisherman -> 获取门店预计送达时间
checkReceiveAddress
(
storeDeliveryInfoDto
,
createOrderVo
,
storeResponseDto
.
getStoreCode
());
}
return
pushOrderTime
;
...
...
@@ -902,6 +908,11 @@ public class CheckOrder {
if
(
BusinessTypeEnum
.
SAAS_DELIVERY
.
getCode
().
equals
(
createOrderVo
.
getMenuType
()))
{
String
s
=
this
.
checkDeliveryType
(
createOrderVo
,
storeCode
,
trackingNo
);
userDeliveryInfoDto
.
getStoreDeliveryInfoDto
().
setDeliveryType
(
s
);
// 【ID1030916】订单查询门店获取预计送达时间 并且不是预约单
if
(
StringUtils
.
isNotEmpty
(
createOrderVo
.
getExpectTime
()))
{
userDeliveryInfoDto
.
setEstimateDeliveryCompleteTime
(
getEstimateDeliveryCompleteTime
(
createOrderVo
.
getLatitude
(),
createOrderVo
.
getLongitude
(),
storeDeliveryInfoDto
.
getPartnerId
(),
storeDeliveryInfoDto
.
getStoreId
()));
}
}
userDeliveryInfoDto
.
setReceiveUserName
(
receiveAddressResult
.
getReceiveName
());
userDeliveryInfoDto
.
setReceiveMobile
(
StringUtils
.
isEmpty
(
receiveAddressResult
.
getMobile
())
?
receiveAddressResult
.
getReceiveMobile
()
:
receiveAddressResult
.
getMobile
());
...
...
@@ -919,7 +930,38 @@ public class CheckOrder {
createOrderVo
.
setUserDeliveryInfoDto
(
userDeliveryInfoDto
);
}
/**
* 获取 用户预计送达时间 距离
* @param userLat 用户纬度
* @param userLong 用户经度
* @param partnerId 商户号
* @param storeCode 门店号
* @return
*/
private
Date
getEstimateDeliveryCompleteTime
(
String
userLat
,
String
userLong
,
String
partnerId
,
String
storeCode
)
{
boolean
check
=
StringUtils
.
isEmpty
(
userLat
)
||
StringUtils
.
isEmpty
(
userLong
)
||
StringUtils
.
isEmpty
(
partnerId
)
||
StringUtils
.
isEmpty
(
storeCode
);
if
(
check
)
{
throw
new
ServiceException
(
ResponseResult
.
PARAMETER_MISSING
);
}
// 调用门店接口 获取时间 Fisherman
GetEstimateDeliveryRequest
request
=
GetEstimateDeliveryRequest
.
builder
().
userLatitude
(
userLat
).
userLongitude
(
userLong
).
build
();
request
.
setPartnerId
(
partnerId
);
request
.
setStoreCode
(
storeCode
);
StoreBaseResponseDto
<
cn
.
freemud
.
entities
.
dto
.
store
.
QueryDeliverDetailResponse
>
responseDto
=
storeBaseApiClient
.
queryDeliverDetail
(
request
);
if
(
responseDto
==
null
)
{
throw
new
ServiceException
(
ResponseResult
.
SYSTEM_BUSINESS_ERROR
);
}
if
(
responseDto
.
getStatusCode
()
!=
100
||
responseDto
.
getBizVO
()
==
null
){
throw
new
ServiceException
(
ResponseResult
.
STORE_NOT_FOUND
);
}
return
responseDto
.
getBizVO
().
getExpectArriveTime
();
}
public
void
checkCardCode
(
String
partnerId
,
String
memberId
,
String
cardCode
)
{
...
...
@@ -992,6 +1034,14 @@ public class CheckOrder {
return
createOrderVo
.
getMarketingType
()
!=
null
&&
OrderMarketType
.
COLLAGE
.
getIndex
()
==
createOrderVo
.
getMarketingType
();
}
/**
* 校验配送信息
* 这里可以获取用户的 预计送达时间
* @param createOrderVo
* @param storeCode
* @param trackingNo
* @return
*/
public
String
checkDeliveryType
(
CreateOrderVo
createOrderVo
,
String
storeCode
,
String
trackingNo
)
{
String
code
=
""
;
QueryDeliveryRequest
request
=
new
QueryDeliveryRequest
();
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
ea20d687
...
...
@@ -3079,7 +3079,7 @@ public class OrderServiceImpl implements Orderservice {
}
/**
* 创建普通订单
* 创建普通订单
saas会走 app会走
*/
public
CreateOrderResponse
createOrder
(
CreateOrderVo
createOrderVo
,
StoreResponse
.
BizVO
storeResponseDto
,
ShoppingCartGoodsDto
shoppingCartGoodsDto
,
OrderExtendedReq
orderExtendedReq
,
OrderClientType
orderClient
,
String
appId
)
{
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/StoreBaseApiClient.java
0 → 100644
View file @
ea20d687
package
cn
.
freemud
.
service
.
thirdparty
;
import
cn.freemud.entities.dto.store.GetEstimateDeliveryRequest
;
import
cn.freemud.entities.dto.store.QueryDeliverDetailResponse
;
import
cn.freemud.entities.dto.store.StoreBaseResponseDto
;
import
cn.freemud.entities.dto.store.StoreInfoRequestDto
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.http.MediaType
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
/**
* @author : xh.Z
* @email : fisherman0510@163.com
* @Date : 2021/6/4 下午2:04
* @description : 门店基础服务
*/
@FeignClient
(
name
=
"CONSOLE-API"
)
@RequestMapping
(
value
=
"/storecenter"
,
produces
=
MediaType
.
APPLICATION_JSON_UTF8_VALUE
)
public
interface
StoreBaseApiClient
{
@PostMapping
(
value
=
"/storedelivery/v2/queryDeliverDetail"
)
StoreBaseResponseDto
<
QueryDeliverDetailResponse
>
queryDeliverDetail
(
@RequestBody
StoreInfoRequestDto
request
);
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/request/OrderExpressReq.java
View file @
ea20d687
...
...
@@ -83,4 +83,10 @@ public class OrderExpressReq {
*/
private
Integer
orderStatus
;
/**
* 分配骑手时,三方平台的一个预估送达时间
*/
public
Long
estimateArriveTime
;
}
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