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
0e06325a
Commit
0e06325a
authored
Dec 17, 2020
by
邓杰
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '20201125-coco-zhw' into 20201127_coco配送进程
parents
423da567
22b05626
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
533 additions
and
66 deletions
+533
-66
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
+1
-0
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/payment/OrderPayResponse.java
+9
-0
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
+9
-0
order-application-service/src/main/java/cn/freemud/controller/CallerController.java
+8
-2
order-application-service/src/main/java/cn/freemud/entities/dto/ecology/SubscribeMessageRequest.java
+41
-6
order-application-service/src/main/java/cn/freemud/entities/vo/TakeMealNoticesVO.java
+3
-1
order-application-service/src/main/java/cn/freemud/enums/MessageEventTypeEnum.java
+30
-0
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+1
-0
order-application-service/src/main/java/cn/freemud/service/CallerService.java
+132
-8
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
+48
-12
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+59
-35
order-application-service/src/main/java/cn/freemud/service/thirdparty/EcologyAdminApplicationClient.java
+1
-1
order-application-service/src/test/java/cn.freemud/utils/DateUtilsTest.java
+46
-0
order-application-service/src/test/java/cn/freemud/amp/service/AuditScoreAccount.java
+76
-0
order-application-service/src/test/java/cn/freemud/amp/service/SortTest.java
+66
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/PaySuccessResp.java
+1
-1
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
+2
-0
No files found.
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/order/QueryOrdersResponse.java
View file @
0e06325a
...
...
@@ -196,6 +196,7 @@ public class QueryOrdersResponse {
* 支付凭证 非码流水ID
*/
private
String
payVoucher
;
/**
* 手机号
*/
...
...
assortment-ordercenter-sdk/src/main/java/com/freemud/sdk/api/assortment/order/response/payment/OrderPayResponse.java
View file @
0e06325a
...
...
@@ -66,6 +66,13 @@ public class OrderPayResponse {
private
String
payMode
;
private
List
<
PayItem
>
payItem
=
new
ArrayList
<>();
// 回调地址
private
String
payNotifyUrl
;
//商户id
private
String
sellerId
;
// 支付类型:机场支付=20099
private
String
ebCode
;
@NoArgsConstructor
@Data
public
static
class
PayOrderBean
{
...
...
@@ -97,6 +104,8 @@ public class OrderPayResponse {
private
String
signType
;
private
String
aliPayOrder
;
}
}
order-application-service/src/main/java/cn/freemud/adapter/OrderAdapter.java
View file @
0e06325a
...
...
@@ -2881,6 +2881,15 @@ public class OrderAdapter {
payBean
.
setTimestamp
(
payOrderBean
.
getTimestamp
());
payBean
.
setAliPayOrder
(
payOrderBean
.
getAliPayOrder
());
responseDto
.
setPayOrder
(
payBean
);
// coco 机场支付
try
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
payOrderBean
.
getAliPayOrder
());
responseDto
.
setSellerId
(
jsonObject
.
getString
(
"sellerId"
));
responseDto
.
setPayNotifyUrl
(
jsonObject
.
getString
(
"payNotifyUrl"
));
responseDto
.
setEbCode
(
jsonObject
.
getString
(
"ebCode"
));
}
catch
(
Exception
e
){
}
}
responseDto
.
setStatusCode
(
unifiedOrderResponse
.
getStatusCode
());
responseDto
.
setPayTransId
(
unifiedOrderResponse
.
getPayTransId
());
...
...
order-application-service/src/main/java/cn/freemud/controller/CallerController.java
View file @
0e06325a
...
...
@@ -5,8 +5,12 @@ import cn.freemud.base.entity.BaseResponse;
import
cn.freemud.entities.vo.TakeMealNoticesVO
;
import
cn.freemud.service.CallerService
;
import
cn.freemud.utils.ResponseUtil
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.LogParams
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -14,7 +18,7 @@ import org.springframework.web.bind.annotation.RestController;
* 叫号器
*/
@Slf4j
@RequestMapping
(
"/caller"
)
@RequestMapping
(
"
order
/caller"
)
@RestController
@Validated
public
class
CallerController
{
...
...
@@ -29,7 +33,9 @@ private CallerService callerService;
* 取餐通知
* @return
*/
public
BaseResponse
takeMealNotices
(
TakeMealNoticesVO
vo
){
@PostMapping
(
"/takeMealNotices"
)
@ApiAnnotation
(
logMessage
=
"takeMealNotices"
)
public
BaseResponse
takeMealNotices
(
@Validated
@LogParams
@RequestBody
TakeMealNoticesVO
vo
){
return
callerService
.
takeMealNotices
(
vo
);
}
...
...
order-application-service/src/main/java/cn/freemud/entities/dto/ecology/SubscribeMessageRequest.java
View file @
0e06325a
...
...
@@ -10,27 +10,49 @@ import java.util.List;
public
class
SubscribeMessageRequest
{
/**
* 预约单下单成功通知
*/
private
BookingOrderPayedScene
bookingOrderPayedScene
;
/**
* 预约单取单提醒
*/
private
BookingOrderPayedScene
bookingOrderTakeReminderScene
;
/**
* 渠道
* 1 微信小程序
* 2 支付宝小程序
* 3 手机app
* 4 线下应用
* 5 字节小程序
* 6 h5
*/
private
Integer
channel
;
private
Integer
channel
=
1
;
/**
*
*
配送异常提醒
*/
private
String
scene
;
private
DeliveryErrorReminder
deliveryErrorReminder
;
/**拼单提醒
*
*/
private
GroupBuyingStatusReminder
groupBuyingStatusReminder
;
/**
* 即时单下单成功通知
*/
private
InstantOrderPayedScene
instantOrderPayedScene
;
/**
* 即时单取餐通知
*/
private
InstantOrderPayedScene
instantOrderTakeReminderScene
;
/**
*
*/
private
String
messageEventType
;
/**
...
...
@@ -43,10 +65,23 @@ public class SubscribeMessageRequest {
*/
private
List
<
String
>
openIdList
;
/**
*自配送配送通知
*/
private
OrderDeliveryScene
orderDeliveryScene
;
/**
*
*/
private
SceneCouponRequest
sceneCouponExpiredRequest
;
/**
* //即时单scene_instant
* //预约单:scene_appoint
* //自配送单:scene_self_delivery
* //拼单提醒:scene_group_buying
*/
private
String
scene
;
private
SceneCouponRequest
sceneCouponReceiveRequest
;
private
SceneInviteGiftRequest
sceneInviteGiftRequest
;
...
...
order-application-service/src/main/java/cn/freemud/entities/vo/TakeMealNoticesVO.java
View file @
0e06325a
...
...
@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.List
;
/**
* @author freemud
*/
...
...
@@ -25,5 +27,5 @@ public class TakeMealNoticesVO {
private
Integer
cupTotalNum
;
@ApiModelProperty
(
value
=
"订单"
)
private
String
[]
orders
;
private
List
<
String
>
orderList
;
}
order-application-service/src/main/java/cn/freemud/enums/MessageEventTypeEnum.java
0 → 100644
View file @
0e06325a
package
cn
.
freemud
.
enums
;
import
lombok.Getter
;
@Getter
public
enum
MessageEventTypeEnum
{
INSTANT_ORDER_PAYED
(
30
,
"INSTANT_ORDER_PAYED"
,
"即时单下单成功通知"
),
BOOKING_ORDER_PAYED
(
31
,
"BOOKING_ORDER_PAYED"
,
"预约单下单成功通知"
),
SELF_DELIVERY_ORDER_PAYED
(
32
,
"SELF_DELIVERY_ORDER_PAYED"
,
"自配送下单成功通知"
),
ORDER_DELIVERY
(
33
,
"ORDER_DELIVERY"
,
"订单配送通知"
),
BOOKING_ORDER_TAKE_REMINDER
(
34
,
"BOOKING_ORDER_TAKE_REMINDER"
,
"预约单取单通知"
),
INSTANT_ORDER_TAKE_REMINDER
(
35
,
"INSTANT_ORDER_TAKE_REMINDER"
,
"即时单取单通知"
),
GROUP_BUYING_STATUS_REMINDER
(
36
,
"GROUP_BUYING_STATUS_REMINDER"
,
"拼单提醒"
),
DELIVERY_ERROR_REMINDER
(
37
,
"DELIVERY_ERROR_REMINDER"
,
"配送异常提醒"
),
;
private
int
code
;
private
String
type
;
private
String
name
;
MessageEventTypeEnum
(
int
code
,
String
type
,
String
name
)
{
this
.
code
=
code
;
this
.
type
=
type
;
this
.
name
=
name
;
}
}
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
0e06325a
...
...
@@ -164,6 +164,7 @@ public enum ResponseResult {
ORDER_CANCEL_ERROR_EXPECT_TIME
(
"45067"
,
"预约时间还剩15分钟,无法取消"
),
ORDER_CANCEL_ERROR_ESTIMATE_TIME
(
"45068"
,
"预计送达还剩30分钟,无法取消"
),
STORE_SELF_ERROR
(
"45069"
,
"请选择截止营业时间大于45分钟下单"
),
/**
...
...
order-application-service/src/main/java/cn/freemud/service/CallerService.java
View file @
0e06325a
package
cn
.
freemud
.
service
;
import
cn.freemud.amp.body.OrderBody
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.base.log.LogTreadLocal
;
import
cn.freemud.base.util.DateUtil
;
import
cn.freemud.constant.RedisKeyConstant
;
import
cn.freemud.constant.ResponseCodeConstant
;
import
cn.freemud.entities.dto.GetMemberInfoByIdRequestDto
;
import
cn.freemud.entities.dto.GetMemberInfoByIdResponseDto
;
import
cn.freemud.entities.dto.ecology.BookingOrderPayedScene
;
import
cn.freemud.entities.dto.ecology.InstantOrderPayedScene
;
import
cn.freemud.entities.dto.ecology.SubscribeMessageRequest
;
import
cn.freemud.entities.dto.ecology.SubscribeMessageResponse
;
import
cn.freemud.entities.vo.TakeMealNoticesVO
;
import
cn.freemud.enums.MessageEventTypeEnum
;
import
cn.freemud.service.impl.CheckOrder
;
import
cn.freemud.service.thirdparty.CustomerClient
;
import
cn.freemud.service.thirdparty.EcologyAdminApplicationClient
;
import
cn.freemud.utils.DateTimeUtil
;
import
cn.freemud.utils.ResponseUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderExtInfoDto
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.sdk.api.assortment.order.enums.NewOrderType
;
import
com.freemud.sdk.api.assortment.order.request.order.BaseQueryOrderRequest
;
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
com.google.common.collect.Lists
;
import
lombok.AllArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
@AllArgsConstructor
@Service
@Slf4j
public
class
CallerService
{
@Autowired
private
RedisTemplate
redisTemplate
;
private
final
RedisTemplate
redisTemplate
;
private
final
EcologyAdminApplicationClient
ecologyAdminApplicationClient
;
private
final
OrderCenterSdkService
orderCenterSdkService
;
private
final
CheckOrder
checkOrder
;
/**
* 缓存 待制作杯数量
*
* @param vo
*/
private
void
cacheTakeMealNotices
(
TakeMealNoticesVO
vo
)
{
private
void
cacheTakeMealNotices
(
TakeMealNoticesVO
vo
)
{
String
redisKey
=
RedisKeyConstant
.
notMadeGoodsNumber
(
vo
.
getPartnerId
(),
vo
.
getStoreCode
());
redisTemplate
.
boundValueOps
(
redisKey
).
set
(
vo
.
getCupTotalNum
(),
1
,
TimeUnit
.
DAYS
);
redisTemplate
.
boundValueOps
(
redisKey
).
set
(
vo
.
getCupTotalNum
(),
1
,
TimeUnit
.
DAYS
);
}
/**
* pos -> 推送模板消息
* 即时单
* 预约单
*
* @param vo
* @return
*/
public
BaseResponse
takeMealNotices
(
TakeMealNoticesVO
vo
)
{
cacheTakeMealNotices
(
vo
);
if
(
Objects
.
isNull
(
vo
.
getOrderList
()))
{
return
ResponseUtil
.
success
();
}
vo
.
getOrderList
().
stream
().
forEach
(
orderId
->
{
BaseQueryOrderRequest
baseQueryOrderRequest
=
new
BaseQueryOrderRequest
();
baseQueryOrderRequest
.
setOrderId
(
orderId
);
baseQueryOrderRequest
.
setTrackingNo
(
LogTreadLocal
.
getTrackingNo
());
QueryOrderByIdResponse
queryOrderByIdResponse
=
orderCenterSdkService
.
queryOrderById
(
baseQueryOrderRequest
);
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
=
queryOrderByIdResponse
.
getData
();
if
(
Objects
.
isNull
(
orderBean
))
{
return
;
}
OrderExtInfoDto
extInfoDto
=
JSONObject
.
parseObject
(
orderBean
.
getExtInfo
(),
new
TypeReference
<
OrderExtInfoDto
>()
{
});
if
(
Objects
.
isNull
(
extInfoDto
.
getOpenid
()))
{
log
.
error
(
"订单号:{},没有openId"
,
orderId
);
return
;
}
StoreResponse
storeResponse
=
checkOrder
.
getStoreInfo
(
orderBean
.
getCompanyId
(),
orderBean
.
getShopId
(),
LogTreadLocal
.
getTrackingNo
());
if
(
storeResponse
.
getBizVO
()
==
null
)
{
log
.
error
(
"订单号:{},商户号:{},没有门店信息"
,
orderId
,
orderBean
.
getShopId
());
return
;
}
List
<
Integer
>
takeawayOrderType
=
Lists
.
newArrayList
(
NewOrderType
.
RESERVED_EXPRESS
.
getCode
(),
NewOrderType
.
GENERAL_EXPRESS
.
getCode
());
if
(
takeawayOrderType
.
contains
(
orderBean
.
getNewOrderType
()))
{
// 外卖单不发模板消息
return
;
}
orderBean
.
setShopAddress
(
storeResponse
.
getBizVO
().
getAddress
());
SubscribeMessageRequest
subscribeMessageRequest
=
new
SubscribeMessageRequest
();
subscribeMessageRequest
.
setMiniAppId
(
extInfoDto
.
getAppid
());
subscribeMessageRequest
.
setOpenIdList
(
Lists
.
newArrayList
(
extInfoDto
.
getOpenid
()));
// coco order_client 2微信小程序 3支付宝小程序 需要转换生态的
subscribeMessageRequest
.
setChannel
(
orderBean
.
getOrderClient
().
equals
(
"2"
)
?
1
:
2
);
boolean
reservationOrder
=
isReservationOrder
(
orderBean
);
if
(
reservationOrder
)
{
//预约单
BookingOrderPayedScene
scene
=
new
BookingOrderPayedScene
();
scene
.
setMerchantAddress
(
orderBean
.
getShopAddress
());
scene
.
setMerchantName
(
orderBean
.
getShopName
());
scene
.
setOrderNo
(
orderId
);
scene
.
setOrderType
(
orderBean
.
getNewOrderType
().
toString
());
scene
.
setTakeOrderTime
(
DateTimeUtil
.
getCurrentTimeStr
());
subscribeMessageRequest
.
setBookingOrderTakeReminderScene
(
scene
);
subscribeMessageRequest
.
setScene
(
"scene_appoint"
);
subscribeMessageRequest
.
setMessageEventType
(
MessageEventTypeEnum
.
BOOKING_ORDER_TAKE_REMINDER
.
getType
());
}
else
{
InstantOrderPayedScene
scene
=
new
InstantOrderPayedScene
();
scene
.
setFriendlyTips
(
"饮品已制作完成,请凭取单号及时到店取单哟!"
);
scene
.
setOrderType
(
orderBean
.
getNewOrderType
().
toString
());
scene
.
setMerchantAddress
(
orderBean
.
getShopAddress
());
scene
.
setMerchantName
(
orderBean
.
getShopName
());
scene
.
setOrderNo
(
orderId
);
subscribeMessageRequest
.
setInstantOrderTakeReminderScene
(
scene
);
subscribeMessageRequest
.
setScene
(
"scene_instant"
);
subscribeMessageRequest
.
setMessageEventType
(
MessageEventTypeEnum
.
INSTANT_ORDER_TAKE_REMINDER
.
getType
());
}
//发送模板消息
SubscribeMessageResponse
subscribeMessageResponse
=
ecologyAdminApplicationClient
.
subscribeMessage
(
subscribeMessageRequest
);
if
(!
ResponseCodeConstant
.
RESPONSE_SUCCESS
.
equals
(
subscribeMessageResponse
.
getCode
()))
{
log
.
error
(
"ecologyAdminApplicationClient.subscribeMessage调用失败 ,request:{},body:{}"
,
JSON
.
toJSONString
(
subscribeMessageResponse
),
JSON
.
toJSONString
(
subscribeMessageRequest
));
}
});
return
ResponseUtil
.
success
();
}
public
BaseResponse
takeMealNotices
(
TakeMealNoticesVO
vo
){
cacheTakeMealNotices
(
vo
);
//发送取餐通知消息 cc 生态
return
ResponseUtil
.
success
();
/**
* 是否预约单
* true 预约单
*
* @return
*/
private
boolean
isReservationOrder
(
QueryOrdersResponse
.
DataBean
.
OrderBean
orderBean
)
{
if
(
Objects
.
nonNull
(
orderBean
.
getGmtExpect
()))
{
return
Boolean
.
TRUE
;
}
return
Boolean
.
FALSE
;
}
}
order-application-service/src/main/java/cn/freemud/service/impl/CheckOrder.java
View file @
0e06325a
...
...
@@ -56,12 +56,14 @@ import com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest;
import
com.freemud.application.sdk.api.storecenter.response.QueryDeliverDetailResponse
;
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.NewOrderType
;
import
com.google.common.collect.Lists
;
import
com.google.gson.Gson
;
import
lombok.extern.log4j.Log4j
;
import
org.apache.commons.collections4.CollectionUtils
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
...
...
@@ -104,7 +106,7 @@ public class CheckOrder {
private
MemberPropertyService
memberPropertyService
;
@Autowired
private
ShoppingCartClient
shoppingCartClient
;
// @Autowired
// @Autowired
// private OrderAdapter orderAdapter;
@Autowired
private
StoreServiceImpl
storeService
;
...
...
@@ -123,6 +125,7 @@ public class CheckOrder {
@Value
(
"${coco.partnerId}"
)
private
String
cocoPartnerId
;
/**
* 下单会员相关校验
*/
...
...
@@ -174,8 +177,8 @@ public class CheckOrder {
throw
new
ServiceException
(
ResponseResult
.
STORE_NOT_FOUND
);
}
//订单预约单检查
OrderCheckAdapter
.
check
(
createOrderVo
,
storeResponse
);
OrderCheckAdapter
.
check
(
createOrderVo
,
storeResponse
);
StoreResponse
.
BizVO
storeResponseDto
=
storeResponse
.
getBizVO
();
// 校验门店是否停业 1 营业 2 停业 3 繁忙置休
if
(
storeResponseDto
.
getActiveFlag
()
==
null
||
storeResponseDto
.
getActiveFlag
()
!=
1
)
{
...
...
@@ -258,6 +261,23 @@ public class CheckOrder {
}
else
{
storeDeliveryInfoDto
=
getNewStoreDeliveryInfo
(
storeResponseDto
,
config
,
appId
,
trackingNo
);
}
//coco自配送提前45分钟,禁止下单
if
(
cocoPartnerId
.
equals
(
createOrderVo
.
getPartnerId
())
&&
CreateOrderType
.
TAKE_OUT
.
getCode
().
equals
(
createOrderVo
.
getOrderType
())
&&
"self"
.
equals
(
storeDeliveryInfoDto
.
getDeliveryType
())
)
{
//即时单是下单时间,预约单是预约单时间
Date
orderDate
=
createOrderVo
.
getExpectTime
()
!=
null
?
DateUtil
.
convert2Date
(
createOrderVo
.
getExpectTime
(),
DateUtil
.
FORMAT_YYYY_MM_DD_HHMMSS
)
:
new
Date
();
Date
todayEnd
=
DateUtil
.
setEndDay
(
new
Date
());
boolean
toDay
=
orderDate
.
before
(
todayEnd
);
BusinessDate
businessDate
=
getStoreBusinessDate
(
storeResponseDto
,
toDay
);
boolean
businessEndDate
=
(
DateUtils
.
addMinutes
(
orderDate
,
45
).
compareTo
(
businessDate
.
getEndDate
())
>=
0
);
if
(
businessEndDate
)
{
throw
new
ServiceException
(
ResponseResult
.
STORE_SELF_ERROR
);
}
}
//todo : 这里不再支持从表中获取门店配送信息 改用接口方式调用
//外卖起送条件(1:杯数,2:金额)
if
(!
Arrays
.
asList
(
1
,
2
).
contains
(
storeDeliveryInfoDto
.
getDeliveryCondition
()))
{
...
...
@@ -281,6 +301,22 @@ public class CheckOrder {
return
pushOrderTime
;
}
/**
* 获取门店营业时间
*
* @param storeResponseDto
* @param toDay true 今日,false 明天
* @return
*/
private
BusinessDate
getStoreBusinessDate
(
StoreResponse
.
BizVO
storeResponseDto
,
boolean
toDay
)
{
List
<
String
>
todayBusinessTimes
=
storeCenterService
.
getTodayBusinessTime
(
Integer
.
parseInt
(
storeResponseDto
.
getBusinessType
()),
storeResponseDto
.
getBusinessHoursDay
());
if
(
CollectionUtils
.
isEmpty
(
todayBusinessTimes
))
{
throw
new
ServiceException
(
ResponseResult
.
STORE_BUSINESS_HOUR_ERROR
);
}
BusinessDate
businessDate
=
getStoreBusinessDate
(
todayBusinessTimes
.
get
(
todayBusinessTimes
.
size
()
-
1
),
toDay
);
return
businessDate
;
}
public
void
checkOrderExpectTime
(
CreateOrderVo
createOrderVo
,
StoreResponse
.
BizVO
storeResponseDto
,
Date
takeMealDateTime
)
{
if
(
takeMealDateTime
==
null
)
{
return
;
...
...
@@ -575,19 +611,19 @@ public class CheckOrder {
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
}
else
{
//如果是coco查询配送服务判断是平台配送还是自配送
if
(
cocoPartnerId
.
equals
(
storeResponseDto
.
getPartnerId
()))
{
if
(
cocoPartnerId
.
equals
(
storeResponseDto
.
getPartnerId
()))
{
GetDeliveryFlagRequest
getDeliveryFlagRequest
=
new
GetDeliveryFlagRequest
();
getDeliveryFlagRequest
.
setPartnerId
(
storeResponseDto
.
getPartnerId
());
getDeliveryFlagRequest
.
setStoreId
(
storeResponseDto
.
getStoreId
());
DeliveryBaseResponse
<
GetDeliveryFlagResponseDto
>
deliveryBaseResponse
=
deliveryFeiginClient
.
getThirdDeliveryFlag
(
getDeliveryFlagRequest
);
if
(
deliveryBaseResponse
.
getCode
()
==
100
&&
deliveryBaseResponse
.
getData
()
!=
null
&&
deliveryBaseResponse
.
getData
().
isThirdDeliveryFlag
())
{
DeliveryBaseResponse
<
GetDeliveryFlagResponseDto
>
deliveryBaseResponse
=
deliveryFeiginClient
.
getThirdDeliveryFlag
(
getDeliveryFlagRequest
);
if
(
deliveryBaseResponse
.
getCode
()
==
100
&&
deliveryBaseResponse
.
getData
()
!=
null
&&
deliveryBaseResponse
.
getData
().
isThirdDeliveryFlag
())
{
storeDeliveryInfoDto
.
setDeliveryType
(
"third"
);
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
}
else
{
}
else
{
storeDeliveryInfoDto
.
setDeliveryType
(
"self"
);
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
}
}
else
{
}
else
{
if
(
ObjectUtils
.
equals
(
openPlatformIappWxappConfig
.
getTakeType
(),
1
))
{
storeDeliveryInfoDto
.
setDeliveryType
(
"self"
);
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
...
...
@@ -643,19 +679,19 @@ public class CheckOrder {
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
}
else
{
//如果是coco查询配送服务判断是平台配送还是自配送
if
(
cocoPartnerId
.
equals
(
storeResponseDto
.
getPartnerId
()))
{
if
(
cocoPartnerId
.
equals
(
storeResponseDto
.
getPartnerId
()))
{
GetDeliveryFlagRequest
getDeliveryFlagRequest
=
new
GetDeliveryFlagRequest
();
getDeliveryFlagRequest
.
setPartnerId
(
storeResponseDto
.
getPartnerId
());
getDeliveryFlagRequest
.
setStoreId
(
storeResponseDto
.
getStoreId
());
DeliveryBaseResponse
<
GetDeliveryFlagResponseDto
>
deliveryBaseResponse
=
deliveryFeiginClient
.
getThirdDeliveryFlag
(
getDeliveryFlagRequest
);
if
(
deliveryBaseResponse
.
getCode
()
==
100
&&
deliveryBaseResponse
.
getData
()
!=
null
&&
deliveryBaseResponse
.
getData
().
isThirdDeliveryFlag
())
{
DeliveryBaseResponse
<
GetDeliveryFlagResponseDto
>
deliveryBaseResponse
=
deliveryFeiginClient
.
getThirdDeliveryFlag
(
getDeliveryFlagRequest
);
if
(
deliveryBaseResponse
.
getCode
()
==
100
&&
deliveryBaseResponse
.
getData
()
!=
null
&&
deliveryBaseResponse
.
getData
().
isThirdDeliveryFlag
())
{
storeDeliveryInfoDto
.
setDeliveryType
(
"third"
);
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
}
else
{
}
else
{
storeDeliveryInfoDto
.
setDeliveryType
(
"self"
);
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
}
}
else
{
}
else
{
if
(
ObjectUtils
.
equals
(
openPlatformIappWxappConfig
.
getTakeType
(),
1
))
{
storeDeliveryInfoDto
.
setDeliveryType
(
"self"
);
storeDeliveryInfoDto
.
setPushOrderTime
(
0
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
0e06325a
...
...
@@ -30,6 +30,14 @@ import cn.freemud.entities.dto.PayAccessResponse;
import
cn.freemud.entities.dto.QueryOrdersResponseDto.DataBean.OrderBean
;
import
cn.freemud.entities.dto.activity.PayGiftCheckAndJoinResponseDto
;
import
cn.freemud.entities.dto.activity.PayGitCheckAndJoinRequestDto
;
import
cn.freemud.entities.dto.delivery.OrderRemindRequestDto
;
import
cn.freemud.entities.dto.delivery.QueryDeliveryAmountResponseDto
;
import
cn.freemud.entities.dto.delivery.QueryLocusRiderTrackDto
;
import
cn.freemud.entities.dto.delivery.ResRiderTrackDto
;
import
cn.freemud.entities.dto.ecology.BookingOrderPayedScene
;
import
cn.freemud.entities.dto.ecology.InstantOrderPayedScene
;
import
cn.freemud.entities.dto.ecology.SubscribeMessageRequest
;
import
cn.freemud.entities.dto.ecology.SubscribeMessageResponse
;
import
cn.freemud.entities.dto.delivery.*
;
import
cn.freemud.entities.dto.order.CreateOrderOperateDto
;
import
cn.freemud.entities.dto.order.CreatePrepayRequestDto
;
...
...
@@ -53,6 +61,7 @@ import cn.freemud.utils.*;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.freemud.api.assortment.datamanager.entity.db.*
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.manager.*
;
...
...
@@ -263,9 +272,14 @@ public class OrderServiceImpl implements Orderservice {
private
ComPayClient
comPayClient
;
@Autowired
private
AssortmentOpenPlatformIappWxappStoreManager
assortmentOpenPlatformIappWxappStoreManager
;
@Autowired
private
EcologyAdminApplicationClient
ecologyAdminApplicationClient
;
@Value
(
"${coco.partnerId}"
)
private
String
partnerId
;
/**
* coco商户
*/
@Value
(
"#{'${coco.partnerId}'.split(',')}"
)
private
List
<
String
>
cocoPartnerId
;
@Override
public
BaseResponse
checkBeforeCreateOrder
(
CheckBeforeCreateOrderRequestVo
requestVo
)
{
...
...
@@ -1607,13 +1621,12 @@ public class OrderServiceImpl implements Orderservice {
if
(
StringUtils
.
isEmpty
(
orderRefundVo
.
getReason
()))
{
orderRefundVo
.
setReason
(
"退款"
);
}
AssortmentCustomerInfoVo
userInfo
=
null
;
/* AssortmentCustomerInfoVo userInfo = customerInfoManager.getCustomerInfoByObject(orderRefundVo.getSessionId());
AssortmentCustomerInfoVo
userInfo
=
customerInfoManager
.
getCustomerInfoByObject
(
orderRefundVo
.
getSessionId
());
if
(
userInfo
==
null
||
StringUtils
.
isEmpty
(
userInfo
.
getMemberId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
NOT_LOGIN
);
}
*/
/*
String memberId = userInfo.getMemberId();
String partnerId = userInfo.getPartnerId();
*/
}
String
memberId
=
userInfo
.
getMemberId
();
String
partnerId
=
userInfo
.
getPartnerId
();
if
(
StringUtils
.
isBlank
(
orderRefundVo
.
getOid
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
PARAMETER_MISSING
.
getCode
(),
"oid不能为空"
);
...
...
@@ -1631,26 +1644,34 @@ public class OrderServiceImpl implements Orderservice {
if
(!
RESPONSE_SUCCESS_CODE
.
equals
(
orderByIdResponseDto
.
getErrcode
())
||
orderByIdResponseDto
.
getData
()
==
null
)
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_QUERYORDER_ERROR
.
getCode
(),
"订单信息不存在"
);
}
/*
if (!memberId.equals(orderByIdResponseDto.getData().getUserId())) {
if
(!
memberId
.
equals
(
orderByIdResponseDto
.
getData
().
getUserId
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_QUERYORDER_ERROR
.
getCode
(),
"不能操作非本人的订单"
);
}
*/
}
OrderBean
orderBean
=
orderByIdResponseDto
.
getData
();
if
(
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderByIdResponseDto
.
getData
().
getPayStatus
())
||
OrderStatus
.
WAIT_PAY
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单未支付,无法退款"
);
}
if
(
OrderStatus
.
CALCEL
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单已取消,无法退款"
);
}
if
(
OrderStatus
.
DISTRIBUTION
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单配送中,退款请联系售后!"
);
}
// todo coco 商户校验
if
(
partnerId
.
equal
s
(
orderByIdResponseDto
.
getData
().
getCompanyId
()))
{
if
(
cocoPartnerId
.
contain
s
(
orderByIdResponseDto
.
getData
().
getCompanyId
()))
{
// COCO 即时单不可取消
if
(
NewOrderType
.
GENERAL_SELF_PICKUP
.
getCode
().
equals
(
queryOrderByIdResponse
.
getData
().
getNewOrderType
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_
CANCEL_ERROR
);
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_
_ERRORREFUND
);
}
// 4,6 预约单
List
<
Integer
>
expectOrderType
=
Lists
.
newArrayList
(
NewOrderType
.
RESERVED_EXPRESS
.
getCode
(),
NewOrderType
.
RESERVED_SELF_PICKUP
.
getCode
());
long
time
=
DateUtil
.
addMinutes
(
new
Date
(),
15
).
getTime
();
if
(
expectOrderType
.
contains
(
queryOrderByIdResponse
.
getData
().
getNewOrderType
())
&&
Objects
.
nonNull
(
orderBean
.
getGmtExpect
())
&&
time
>
orderBean
.
getGmtExpect
())
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CANCEL_ERROR_EXPECT_TIME
);
}
// 外卖单
List
<
Integer
>
takeOrderType
=
Lists
.
newArrayList
(
NewOrderType
.
RESERVED_EXPRESS
.
getCode
(),
...
...
@@ -1661,19 +1682,22 @@ public class OrderServiceImpl implements Orderservice {
&&
taskCancelOrderTime
>
queryOrderByIdResponse
.
getData
().
getEstimateDeliveryCompleteTime
())
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CANCEL_ERROR_ESTIMATE_TIME
);
}
}
if
(
PayStatus
.
NOT_PAY
.
getCode
().
equals
(
orderByIdResponseDto
.
getData
().
getPayStatus
())
||
OrderStatus
.
WAIT_PAY
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单未支付,无法退款"
);
}
if
(
OrderStatus
.
CALCEL
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单已取消,无法退款"
);
}
if
(
OrderStatus
.
DISTRIBUTION
.
getCode
().
equals
(
orderBean
.
getStatus
()))
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER__ERRORREFUND
.
getCode
(),
"订单配送中,退款请联系售后!"
);
}
if
(
expectOrderType
.
contains
(
queryOrderByIdResponse
.
getData
().
getNewOrderType
())){
if
(
Objects
.
nonNull
(
orderBean
.
getGmtExpect
())
&&
time
>
orderBean
.
getGmtExpect
())
{
return
ResponseUtil
.
error
(
ResponseResult
.
ORDER_CANCEL_ERROR_EXPECT_TIME
);
}
// todo coco 预约单直接退款
BaseResponse
baseResponse
=
partnerNoTakeOrder
(
orderRefundVo
,
orderBean
,
orderId
,
AfterSalesType
.
USER_CANCEL
,
true
);
if
(
baseResponse
!=
null
)
{
return
baseResponse
;
}
// 删除订单 通知活动添加商品库存
backOrdersStatusChange
(
orderBean
.
getOid
(),
orderBean
.
getStatus
(),
orderBean
.
getPayStatus
());
return
ResponseUtil
.
success
();
}
}
/**
* 已接单,制作完成,配送中,未接单,用户可申请退款
*
...
...
@@ -2089,13 +2113,13 @@ public class OrderServiceImpl implements Orderservice {
*/
private
void
sendMessage
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
,
MessageEventType
messageEventType
)
{
MessageTemplateRequest
<
MessagePushOrderTemplateRequest
>
messageTemplateRequest
=
null
;
try
{
messageTemplateRequest
=
messageNoticeAdapter
.
convent2MessageTemplateRequest
(
orderBean
);
messageTemplateRequest
.
setMessageEventType
(
messageEventType
);
this
.
messageTemplatePushService
.
sendTemplateMsg
(
messageTemplateRequest
);
}
catch
(
Exception
e
)
{
LogUtil
.
error
(
"sendTemplateMsg_error"
,
JSONObject
.
toJSONString
(
orderBean
),
JSONObject
.
toJSONString
(
messageTemplateRequest
),
e
);
}
try
{
messageTemplateRequest
=
messageNoticeAdapter
.
convent2MessageTemplateRequest
(
orderBean
);
messageTemplateRequest
.
setMessageEventType
(
messageEventType
);
this
.
messageTemplatePushService
.
sendTemplateMsg
(
messageTemplateRequest
);
}
catch
(
Exception
e
)
{
LogUtil
.
error
(
"sendTemplateMsg_error"
,
JSONObject
.
toJSONString
(
orderBean
),
JSONObject
.
toJSONString
(
messageTemplateRequest
),
e
);
}
}
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/EcologyAdminApplicationClient.java
View file @
0e06325a
...
...
@@ -30,7 +30,7 @@ public interface EcologyAdminApplicationClient {
@PostMapping
(
value
=
"/ecology/api/getAuthorizerAccessToken"
)
GetTokenResponseDto
getAuthorizerAccessToken
(
@RequestBody
GetAuthorizerRequestDto
request
);
@PostMapping
(
value
=
"/ecology/api/subscribeMessage/send"
)
SubscribeMessageResponse
subscribeMessage
(
SubscribeMessageRequest
request
);
}
order-application-service/src/test/java/cn.freemud/utils/DateUtilsTest.java
0 → 100644
View file @
0e06325a
package
cn
.
freemud
.
utils
;
import
cn.freemud.base.util.DateUtil
;
import
org.apache.commons.lang.time.DateUtils
;
import
org.junit.Test
;
import
java.text.ParseException
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
public
class
DateUtilsTest
{
@Test
public
void
testDateCompare
()
throws
ParseException
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date1
=
sdf
.
parse
(
"2020-12-30 00:00:00"
);
Date
date2
=
sdf
.
parse
(
"2020-12-14 11:50:00"
);
System
.
out
.
println
(
"date1 : "
+
sdf
.
format
(
date1
));
System
.
out
.
println
(
"date2 : "
+
sdf
.
format
(
date2
));
System
.
out
.
println
(
date1
.
compareTo
(
date2
));
if
(
date1
.
compareTo
(
date2
)
>
0
)
{
System
.
out
.
println
(
"Date1 时间在 Date2 之后"
);
}
else
if
(
date1
.
compareTo
(
date2
)
<
0
)
{
System
.
out
.
println
(
"Date1 时间在 Date2 之前"
);
}
else
if
(
date1
.
compareTo
(
date2
)
==
0
)
{
System
.
out
.
println
(
"Date1 时间与 Date2 相等"
);
}
else
{
System
.
out
.
println
(
"程序怎么会运行到这里?正常应该不会"
);
}
boolean
x
=(
DateUtils
.
addMinutes
(
new
Date
(),
45
).
compareTo
(
date2
)
<=
0
);
System
.
out
.
println
(
x
);
}
@Test
public
void
testBefore
()
throws
ParseException
{
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyy-MM-dd HH:mm:ss"
);
Date
date1
=
sdf
.
parse
(
"2020-12-30 00:00:00"
);
Date
date
=
DateUtil
.
setEndDay
(
new
Date
());
String
s
=
DateUtil
.
convert2String
(
date
,
"yyyy-MM-dd HH:mm:ss"
);
System
.
out
.
println
(
date
.
before
(
date1
));
}
}
order-application-service/src/test/java/cn/freemud/amp/service/AuditScoreAccount.java
0 → 100644
View file @
0e06325a
package
cn
.
freemud
.
amp
.
service
;
import
lombok.Data
;
import
lombok.Getter
;
import
lombok.Setter
;
import
java.util.Date
;
@Setter
@Getter
public
class
AuditScoreAccount
{
/**
* 账本主键ID
*/
private
String
accountId
;
private
String
partnerId
;
private
String
memberId
;
/**
* 账本状态{1可使用 2已使用}
*/
private
Integer
accountStatus
;
/**
* 源积分值
*/
private
Integer
originScore
;
/**
* 剩余积分值
*/
private
Integer
leftScore
;
/**
* 到日日期{格式:yyyy-MM-dd}
*/
private
String
expireDate
;
/*
所属机构类型{1总公司2分公司3门店}
*/
private
Integer
orgType
;
/**
* 所属机构编码
*/
private
String
orgCode
;
/**
* 所属机构类型{1总公司2分公司3门店}
*/
private
Integer
belongOrgType
;
/**
* 所属机构编码
*/
private
String
belongOrgCode
;
private
Date
createTime
;
private
Date
updateTime
;
/**
* 是否删除{0表示否 1表示是}
*/
private
Integer
isDel
;
@Override
public
String
toString
()
{
return
this
.
accountId
;
}
}
\ No newline at end of file
order-application-service/src/test/java/cn/freemud/amp/service/SortTest.java
0 → 100644
View file @
0e06325a
package
cn
.
freemud
.
amp
.
service
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.List
;
public
class
SortTest
{
public
static
void
main
(
String
[]
args
)
{
List
<
AuditScoreAccount
>
list
=
new
ArrayList
<
AuditScoreAccount
>();
//创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
AuditScoreAccount
s1
=
new
AuditScoreAccount
();
s1
.
setExpireDate
(
"2020-01-02"
);
s1
.
setAccountId
(
"1"
);
AuditScoreAccount
s2
=
new
AuditScoreAccount
();
s2
.
setExpireDate
(
"2020-04-03"
);
s2
.
setAccountId
(
"2"
);
AuditScoreAccount
s3
=
new
AuditScoreAccount
();
s3
.
setExpireDate
(
"2020-03-01"
);
s3
.
setAccountId
(
"3"
);
AuditScoreAccount
s5
=
new
AuditScoreAccount
();
list
.
add
(
s5
);
list
.
add
(
s1
);
list
.
add
(
s2
);
list
.
add
(
s3
);
System
.
out
.
println
(
"排序前:"
+
list
);
List
<
String
>
stringList
=
new
ArrayList
<>();
stringList
.
add
(
"3"
);
stringList
.
add
(
"2"
);
Collections
.
sort
(
list
,
new
Comparator
<
AuditScoreAccount
>(){
/*
* int compare(Student o1, Student o2) 返回一个基本类型的整型,
* 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等,
* 返回正数表示:o1大于o2。
*/
public
int
compare
(
AuditScoreAccount
o1
,
AuditScoreAccount
o2
)
{
if
(
stringList
.
contains
(
o2
.
getAccountId
())){
return
1
;
}
if
(
stringList
.
contains
(
o1
.
getAccountId
())){
return
-
1
;
}
if
(
o2
.
getExpireDate
()
==
null
){
return
-
1
;
}
if
(
o1
.
getExpireDate
()
==
null
){
return
1
;
}
return
o1
.
getExpireDate
().
compareTo
(
o2
.
getExpireDate
());
}
});
System
.
out
.
println
(
"排序后:"
+
list
);
}
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/PaySuccessResp.java
View file @
0e06325a
...
...
@@ -26,7 +26,7 @@ public class PaySuccessResp {
//总排队人数
private
Integer
queueNumber
;
//取餐码
private
Integer
pickUpGoodsNo
;
private
String
pickUpGoodsNo
;
//门店订单序号
private
Integer
daySeq
;
...
...
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/response/orderInfo/OrderInfoReqs.java
View file @
0e06325a
...
...
@@ -277,4 +277,6 @@ public class OrderInfoReqs {
*/
private
List
<
OrderPayItemReqs
>
orderPayItemCreateReqList
;
private
String
appId
;
}
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