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
0b80707f
Commit
0b80707f
authored
Aug 11, 2021
by
李学兴
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
opt@feature/20210810_callbackUrgentPlan_lxx:# 紧急方案打开直接调用callback 逻辑
parent
6d252664
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
167 additions
and
11 deletions
+167
-11
call-back-service/src/main/java/cn/freemud/amp/service/OrderCallBackMQService.java
+1
-1
call-back-service/src/main/java/cn/freemud/controller/CallBackController.java
+1
-1
call-back-service/src/main/java/cn/freemud/service/OrderCallBackService.java
+1
-1
call-back-service/src/main/java/cn/freemud/service/impl/OrderCallBackServiceImpl.java
+46
-2
call-back-service/src/test/java/cn.freemud/controller/CouponControllerTest.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+19
-0
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
+41
-0
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
+14
-4
order-management/src/main/java/cn/freemud/management/thirdparty/OrderCallbackClient.java
+33
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/config/OrderCenterProperties.java
+9
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/entities/vo/OrderCallBackRequestVo.java
+1
-1
No files found.
call-back-service/src/main/java/cn/freemud/amp/service/OrderCallBackMQService.java
View file @
0b80707f
...
...
@@ -22,7 +22,7 @@ import cn.freemud.entities.dto.OrderExtInfoDto;
import
cn.freemud.entities.dto.OrderStatusChangeRequestDto
;
import
cn.freemud.entities.dto.UserLoginInfoDto
;
import
cn.freemud.entities.dto.WechatReportOrderDto
;
import
c
n.freemud
.entities.vo.OrderCallBackRequestVo
;
import
c
om.freemud.application.sdk.api.ordercenter
.entities.vo.OrderCallBackRequestVo
;
import
cn.freemud.redis.RedisCache
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.api.assortment.datamanager.entity.db.AssortmentOpenPlatformWxapp
;
...
...
call-back-service/src/main/java/cn/freemud/controller/CallBackController.java
View file @
0b80707f
...
...
@@ -13,7 +13,7 @@
package
cn
.
freemud
.
controller
;
import
cn.freemud.base.entity.BaseResponse
;
import
c
n.freemud
.entities.vo.OrderCallBackRequestVo
;
import
c
om.freemud.application.sdk.api.ordercenter
.entities.vo.OrderCallBackRequestVo
;
import
cn.freemud.service.OrderCallBackService
;
import
com.freemud.application.sdk.api.log.ApiAnnotation
;
import
com.freemud.application.sdk.api.log.ApiLog
;
...
...
call-back-service/src/main/java/cn/freemud/service/OrderCallBackService.java
View file @
0b80707f
package
cn
.
freemud
.
service
;
import
cn.freemud.base.entity.BaseResponse
;
import
c
n.freemud
.entities.vo.OrderCallBackRequestVo
;
import
c
om.freemud.application.sdk.api.ordercenter
.entities.vo.OrderCallBackRequestVo
;
/**
* All rights Reserved, Designed By www.freemud.cn
...
...
call-back-service/src/main/java/cn/freemud/service/impl/OrderCallBackServiceImpl.java
View file @
0b80707f
...
...
@@ -14,21 +14,65 @@ package cn.freemud.service.impl;
import
cn.freemud.amp.service.OrderCallBackMQService
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.entities.vo.OrderCallBackRequestVo
;
import
cn.freemud.service.OrderCallBackService
;
import
com.freemud.api.assortment.datamanager.util.RedisLock
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
java.util.Objects
;
import
java.util.concurrent.TimeUnit
;
@Service
public
class
OrderCallBackServiceImpl
implements
OrderCallBackService
{
/**
* cn.freemud.shared.order.enums.config.MsgOperateType.FORWARD(1, "订单正向操作"),
*/
public
static
final
int
OPERATE_TYPE_1
=
1
;
/**
* cn.freemud.shared.order.enums.MsgType.UPDATE_REMIND("1", "订单信息变化通知通知")
*/
public
static
final
String
MSG_TYPE_1
=
"1"
;
@Autowired
private
OrderCallBackMQService
mqService
;
@Value
(
"${order.callback.urgent.plan.open:false}"
)
private
boolean
urgentCallbackOpen
;
@Value
(
"${order.callback.urgent.plan.open.lock.minutes:30}"
)
private
long
urgentCallbackLockMinutes
;
@Autowired
private
RedisTemplate
redisTemplate
;
@Override
public
BaseResponse
orderCallBackHandle
(
OrderCallBackRequestVo
requestVo
)
{
//紧急方案打开 且是正向单时步入 锁控制代码
if
(
urgentCallbackOpen
&&
Objects
.
equals
(
OPERATE_TYPE_1
,
requestVo
.
getOperateType
())
&&
Objects
.
equals
(
MSG_TYPE_1
,
requestVo
.
getMsgType
()))
{
this
.
urgentCallbackHandle
(
requestVo
);
}
else
{
mqService
.
sendOrderMQ
(
requestVo
);
return
new
BaseResponse
(
"1"
,
"100"
,
"success"
);
}
return
new
BaseResponse
(
"1"
,
"100"
,
"success"
);
}
private
void
urgentCallbackHandle
(
OrderCallBackRequestVo
requestVo
)
{
RedisLock
redisLock
=
RedisLock
.
getInstance
(
redisTemplate
);
String
lockKey
=
new
StringBuilder
().
append
(
requestVo
.
getOrderCode
()).
append
(
"_"
).
append
(
requestVo
.
getOperateType
())
.
append
(
"_"
).
append
(
requestVo
.
getMsgType
()).
toString
();
try
{
//简单控制,不考虑解他锁问题
if
(!
redisLock
.
lock
(
lockKey
,
Long
.
valueOf
(
TimeUnit
.
MINUTES
.
toSeconds
(
urgentCallbackLockMinutes
)).
intValue
()))
{
ApiLog
.
infoMessage
(
"订单orderCode:{} callback获取锁失败,lockKey:{}"
,
requestVo
.
getOrderCode
(),
lockKey
);
return
;
}
mqService
.
sendOrderMQ
(
requestVo
);
}
finally
{
redisLock
.
unlock
(
lockKey
);
}
}
}
call-back-service/src/test/java/cn.freemud/controller/CouponControllerTest.java
View file @
0b80707f
package
cn
.
freemud
.
controller
;
import
cn.freemud.ApiApplication
;
import
c
n.freemud
.entities.vo.OrderCallBackRequestVo
;
import
c
om.freemud.application.sdk.api.ordercenter
.entities.vo.OrderCallBackRequestVo
;
import
com.alibaba.fastjson.JSONObject
;
import
org.junit.Before
;
import
org.junit.Test
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
0b80707f
...
...
@@ -50,7 +50,9 @@ import cn.freemud.management.entities.dto.request.BatchOrderRefundV2Request;
import
cn.freemud.management.entities.dto.response.activity.GroupWorkRefundResponse
;
import
cn.freemud.management.entities.dto.response.pay.PayBatchRefundResponse
;
import
cn.freemud.management.service.handle.ActivityHandle
;
import
cn.freemud.management.service.handle.SaasOrderHandle
;
import
cn.freemud.management.thirdparty.MulitiPaymentClient
;
import
cn.freemud.management.thirdparty.OrderCallbackClient
;
import
cn.freemud.manager.BuyProductOnceManager
;
import
cn.freemud.manager.OrderTackCodeManager
;
import
cn.freemud.manager.SpellGroupOrderDataManager
;
...
...
@@ -77,9 +79,12 @@ import com.freemud.api.assortment.datamanager.meal.MealCacheManager;
import
com.freemud.application.sdk.api.constant.ResponseConstant
;
import
com.freemud.application.sdk.api.constant.ResponseResultEnum
;
import
com.freemud.application.sdk.api.couponcenter.offline.service.OfflineCouponSdkService
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.log.ErrorLog
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties
;
import
com.freemud.application.sdk.api.ordercenter.entities.PayItem
;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.enums.PayChannelType
;
...
...
@@ -318,6 +323,12 @@ public class OrderServiceImpl implements Orderservice {
@Autowired
private
BuyProductOnceManager
buyProductOnceManager
;
@Autowired
private
OrderCallbackClient
orderCallbackClient
;
@Autowired
private
OrderCenterProperties
orderCenterProperties
;
@Autowired
private
SaasOrderHandle
saasOrderHandle
;
@Override
...
...
@@ -619,6 +630,14 @@ public class OrderServiceImpl implements Orderservice {
}
//支付成功后
// buriedPointService.paySuccessBuridPoint(partnerId, storeId, orderBean);
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if
(
orderCenterProperties
.
isUrgentCallbackOpen
())
{
// 查询
OrderCallBackRequestVo
requestVo
=
saasOrderHandle
.
convert2CallbackReq
(
orderBean
.
getOid
(),
2
,
null
,
null
);
ApiLog
.
infoMessage
(
"紧急方案 支付成功直接调用callback,orderCode:{},requestId:{}"
,
requestVo
.
getOrderCode
(),
requestVo
.
getRequestId
());
orderCallbackClient
.
callbackOrder
(
requestVo
);
}
return
sendPaySuccessNoticeMessage
();
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
View file @
0b80707f
...
...
@@ -6,10 +6,15 @@ import cn.freemud.management.entities.dto.response.pay.PayRefundResponse;
import
cn.freemud.management.enums.ResponseResult
;
import
cn.freemud.management.intercept.OrderServiceException
;
import
cn.freemud.management.util.ResponseUtil
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.application.sdk.api.log.LogThreadLocal
;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderModifyRelatingCodeReq
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.OrderInfoReqs
;
import
com.freemud.application.sdk.api.ordercenter.response.orderInfo.QueryByCodeResponse
;
import
com.freemud.application.sdk.api.ordercenter.service.OrderSdkService
;
import
com.freemud.sdk.api.assortment.order.adapter.OrderSdkAdapter
;
import
com.freemud.sdk.api.assortment.order.enums.PayRefundStatus
;
import
com.freemud.sdk.api.assortment.order.enums.RefundStatus
;
...
...
@@ -20,11 +25,13 @@ import com.freemud.sdk.api.assortment.order.response.order.BaseOrderResponse;
import
com.freemud.sdk.api.assortment.order.response.order.QueryOrdersResponse
;
import
com.freemud.sdk.api.assortment.order.service.OrderCenterSdkService
;
import
org.apache.commons.lang.ObjectUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
import
java.util.UUID
;
//import com.freemud.application.sdk.api.log.LogThreadLocal;
...
...
@@ -52,6 +59,8 @@ public class SaasOrderHandle {
private
Integer
wmDeliveryTimeOut
;
@Value
(
"#{'${order.not.automatic.twist.partnerId}'.split(',')}"
)
private
List
<
String
>
notAutomaticTwistPartnerId
;
@Autowired
private
OrderSdkService
orderSdkService
;
/**
* 确认接单
...
...
@@ -318,5 +327,37 @@ public class SaasOrderHandle {
return
ResponseUtil
.
success
();
}
/**
* 转换成callback消息体
* @param orderCode 订单编号
* @param orderState cn.freemud.shared.order.enums.order.OrderStatus.API_DESC="订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭";
* @param operateType 操作类型 0= 其他信息修改,1=订单正向操作,2=订单逆向操作,3=通知消息
* @param msgType 消息类型 MsgType() 1:订单信息变化通知通知
* @return
*/
public
OrderCallBackRequestVo
convert2CallbackReq
(
String
orderCode
,
Integer
orderState
,
Integer
operateType
,
String
msgType
)
{
OrderCallBackRequestVo
notifyDto
=
new
OrderCallBackRequestVo
();
//直接查询基础服务获取订单信息
QueryByCodeResponse
orderInfo
=
orderSdkService
.
getOrderInfo
(
null
,
orderCode
,
null
,
null
,
LogThreadLocal
.
getTrackingNo
());
if
(
orderInfo
==
null
)
{
return
null
;
}
OrderInfoReqs
orderResp
=
orderInfo
.
getResult
();
// @see cn.freemud.shared.order.enums.order.OrderStatus.API_DESC = "订单状态 1:待支付 2:下单 3:已接单 4:制作完成(待发货) 5:配送中 6:已完 7:已关闭";
if
(
orderState
!=
null
&&
orderState
>
0
)
{
orderResp
.
setOrderState
(
orderState
);
}
notifyDto
.
setContent
(
JSON
.
toJSONString
(
orderResp
));
notifyDto
.
setPartnerId
(
orderResp
.
getPartnerId
());
notifyDto
.
setRequestId
(
UUID
.
randomUUID
().
toString
().
replaceAll
(
"-"
,
""
));
notifyDto
.
setOperateType
(
operateType
!=
null
?
operateType
:
1
);
// @see cn.freemud.shared.order.enums.MsgType() 1:订单信息变化通知通知
notifyDto
.
setMsgType
(
StringUtils
.
isNotBlank
(
msgType
)
?
msgType
:
"1"
);
notifyDto
.
setStoreId
(
orderResp
.
getStoreId
());
notifyDto
.
setOrderCode
(
orderResp
.
getOrderCode
());
notifyDto
.
setOrderClient
(
orderResp
.
getOrderClient
()
!=
null
?
orderResp
.
getOrderClient
().
intValue
()
:
null
);
return
notifyDto
;
}
}
order-management/src/main/java/cn/freemud/management/service/impl/SaasOrderMangerServiceImpl.java
View file @
0b80707f
...
...
@@ -12,8 +12,12 @@ import cn.freemud.management.intercept.OrderServiceException;
import
cn.freemud.management.service.OrderBaseService
;
import
cn.freemud.management.service.OrderManagerService
;
import
cn.freemud.management.service.handle.*
;
import
cn.freemud.management.thirdparty.OrderCallbackClient
;
import
cn.freemud.management.util.ResponseUtil
;
import
com.alibaba.fastjson.JSONObject
;
import
com.freemud.application.sdk.api.log.ApiLog
;
import
com.freemud.application.sdk.api.ordercenter.config.OrderCenterProperties
;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
com.freemud.application.sdk.api.ordercenter.enums.AfterSalesType
;
import
com.freemud.application.sdk.api.ordercenter.enums.OrderClientType
;
import
com.freemud.application.sdk.api.ordercenter.request.OrderCancelReq
;
...
...
@@ -37,10 +41,6 @@ import org.springframework.stereotype.Service;
import
java.util.*
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.UUID
;
import
static
cn
.
freemud
.
management
.
enums
.
OperateType
.
ORDER_AGREE_REFUND
;
...
...
@@ -84,6 +84,10 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
* 8200201 商户余额不足
*/
public
static
final
Set
<
String
>
PAY_RETURN_FILTER_CODES
=
Stream
.
of
(
"8200201"
).
collect
(
Collectors
.
toSet
());
@Autowired
private
OrderCenterProperties
orderCenterProperties
;
@Autowired
private
OrderCallbackClient
orderCallbackClient
;
/**
* 接单
...
...
@@ -104,6 +108,12 @@ public class SaasOrderMangerServiceImpl implements OrderManagerService {
if
(
baseResponse
!=
null
&&
baseResponse
.
getResult
()
==
null
){
orderBaseService
.
sendMessage
(
orderBean
,
OperateType
.
ORDER_CONFIRM
,
request
.
getReason
());
}
// 增加全局开关,当紧急方案打开时进行直接处理callBack消息
if
(
orderCenterProperties
.
isUrgentCallbackOpen
())
{
OrderCallBackRequestVo
requestVo
=
saasOrderHandle
.
convert2CallbackReq
(
orderBean
.
getOid
(),
3
,
null
,
null
);
ApiLog
.
infoMessage
(
"紧急方案 接单成功直接调用callback,orderCode:{},requestId:{}"
,
requestVo
.
getOrderCode
(),
requestVo
.
getRequestId
());
orderCallbackClient
.
callbackOrder
(
requestVo
);
}
return
ResponseUtil
.
success
(
new
OrderManagerResponse
(
storeInfo
.
getBizVO
().
getOrderPrintConfig
(),
orderBean
.
getGmtExpect
(),
CollectionUtils
.
isEmpty
(
orderBean
.
getRefundList
())
?
null
:
RefundStatus
.
getByCode
(
orderBean
.
getRefundList
().
get
(
0
).
getStatus
())));
}
...
...
order-management/src/main/java/cn/freemud/management/thirdparty/OrderCallbackClient.java
0 → 100644
View file @
0b80707f
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: CustomerExtendClient
* @Package cn.freemud.service.thirdparty
* @Description:
* @author: song.cai
* @date: 2019/2/20 16:42
* @version V1.0
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
cn
.
freemud
.
management
.
thirdparty
;
import
com.freemud.application.sdk.api.ordercenter.entities.vo.OrderCallBackRequestVo
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
@FeignClient
(
name
=
"CALL-BACK-SERVICE"
,
url
=
"${saas.callbackService.feign.url}"
)
@RequestMapping
(
produces
=
{
"application/json;charset=UTF-8"
})
public
interface
OrderCallbackClient
{
/**
* callback订单
* @param requestVo
* @return 无返回值,只有成功或失败
*/
@PostMapping
(
value
=
"/callback/order"
)
void
callbackOrder
(
@RequestBody
OrderCallBackRequestVo
requestVo
);
}
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/config/OrderCenterProperties.java
View file @
0b80707f
...
...
@@ -13,6 +13,7 @@
package
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
config
;
import
com.freemud.application.sdk.api.config.CenterConfigProperties
;
import
lombok.Getter
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
...
...
@@ -32,6 +33,14 @@ public class OrderCenterProperties extends CenterConfigProperties {
private
List
<
String
>
redisToEsPartnerIds
=
new
ArrayList
<>();
/**
* 紧急方案 直接调用callback接口
* 同时在 cn.freemud.service.impl.OrderCallBackServiceImpl.urgentCallbackOpen 同样使用此配置
*/
@Getter
@Value
(
"${order.callback.urgent.plan.open:false}"
)
private
boolean
urgentCallbackOpen
;
public
List
<
String
>
getRedisToEsPartnerIds
()
{
return
redisToEsPartnerIds
;
}
...
...
call-back-service/src/main/java/cn/freemud
/entities/vo/OrderCallBackRequestVo.java
→
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter
/entities/vo/OrderCallBackRequestVo.java
View file @
0b80707f
...
...
@@ -10,7 +10,7 @@
* @Copyright: 2019 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
package
c
n
.
freemud
.
entities
.
vo
;
package
c
om
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
entities
.
vo
;
import
lombok.Data
;
...
...
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