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
5d0798c5
Commit
5d0798c5
authored
Aug 11, 2021
by
李学兴
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
opt@feature/20210810_callbackUrgentPlan_lxx:# 紧急方案打开直接调用callback 逻辑
parent
0b80707f
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
38 additions
and
10 deletions
+38
-10
call-back-service/src/main/java/cn/freemud/constant/ConfigConstants.java
+18
-0
call-back-service/src/main/java/cn/freemud/constant/RedisKeyConstant.java
+5
-0
call-back-service/src/main/java/cn/freemud/service/impl/OrderCallBackServiceImpl.java
+9
-10
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
+1
-0
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/entities/vo/OrderCallBackRequestVo.java
+5
-0
No files found.
call-back-service/src/main/java/cn/freemud/constant/ConfigConstants.java
View file @
5d0798c5
...
...
@@ -17,10 +17,28 @@ import lombok.Getter;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
java.util.List
;
@Component
@Getter
public
class
ConfigConstants
{
@Value
(
"${print-debug-log:false}"
)
private
boolean
printDebug
;
/**
* 紧急方案 涉及配置:开关 true=打开,默认是false
*/
@Value
(
"${order.callback.urgent.plan.open:false}"
)
private
boolean
urgentCallbackOpen
;
/**
* 紧急方案 涉及配置:锁定分钟
*/
@Value
(
"${order.callback.urgent.plan.open.lock.minutes:30}"
)
private
long
urgentCallbackLockMinutes
;
/**
* 紧急方案 涉及配置:锁定涉及订单状态列表
* 2=下单(支付成功);3=接单;
*/
@Value
(
"${order.callback.urgent.plan.open.status:2,3}"
)
private
List
<
Integer
>
urgentStatus
;
}
call-back-service/src/main/java/cn/freemud/constant/RedisKeyConstant.java
View file @
5d0798c5
...
...
@@ -18,5 +18,10 @@ public class RedisKeyConstant {
* userInfoMap的redisKey前缀
*/
public
final
static
String
SAAS_USER_INFO_SESSIONID_KEY_PREFIX
=
"saas:user:info:sessionId:"
;
/**
* 紧急方案 涉及配置:锁定key
* requestVo.getOrderCode(), requestVo.getOrderState(), requestVo.getOperateType(), requestVo.getMsgType()
*/
public
final
static
String
URGENT_CALLBACK_LOCK_KEY
=
"saas:order:%s:%s:%s:%s"
;
}
call-back-service/src/main/java/cn/freemud/service/impl/OrderCallBackServiceImpl.java
View file @
5d0798c5
...
...
@@ -14,18 +14,20 @@ package cn.freemud.service.impl;
import
cn.freemud.amp.service.OrderCallBackMQService
;
import
cn.freemud.base.entity.BaseResponse
;
import
cn.freemud.constant.ConfigConstants
;
import
cn.freemud.constant.RedisKeyConstant
;
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
{
...
...
@@ -39,18 +41,15 @@ public class OrderCallBackServiceImpl implements OrderCallBackService{
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
ConfigConstants
configConstants
;
@Autowired
private
RedisTemplate
redisTemplate
;
@Override
public
BaseResponse
orderCallBackHandle
(
OrderCallBackRequestVo
requestVo
)
{
//紧急方案打开 且是正向单时步入 锁控制代码
if
(
urgentCallbackOpen
&&
Objects
.
equals
(
OPERATE_TYPE_1
,
requestVo
.
getOperateType
())
&&
if
(
configConstants
.
isUrgentCallbackOpen
()
&&
configConstants
.
getUrgentStatus
().
contains
(
requestVo
.
getOrderState
())
&&
Objects
.
equals
(
OPERATE_TYPE_1
,
requestVo
.
getOperateType
())
&&
Objects
.
equals
(
MSG_TYPE_1
,
requestVo
.
getMsgType
()))
{
this
.
urgentCallbackHandle
(
requestVo
);
}
else
{
...
...
@@ -61,11 +60,11 @@ public class OrderCallBackServiceImpl implements OrderCallBackService{
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
(
);
String
lockKey
=
String
.
format
(
RedisKeyConstant
.
URGENT_CALLBACK_LOCK_KEY
,
requestVo
.
getOrderCode
(),
requestVo
.
getOrderState
(),
requestVo
.
getOperateType
(),
requestVo
.
getMsgType
()
);
try
{
//简单控制,不考虑解他锁问题
if
(!
redisLock
.
lock
(
lockKey
,
Long
.
valueOf
(
TimeUnit
.
MINUTES
.
toSeconds
(
urgentCallbackLockMinutes
)).
intValue
()))
{
if
(!
redisLock
.
lock
(
lockKey
,
Long
.
valueOf
(
TimeUnit
.
MINUTES
.
toSeconds
(
configConstants
.
getUrgentCallbackLockMinutes
()
)).
intValue
()))
{
ApiLog
.
infoMessage
(
"订单orderCode:{} callback获取锁失败,lockKey:{}"
,
requestVo
.
getOrderCode
(),
lockKey
);
return
;
}
...
...
order-management/src/main/java/cn/freemud/management/service/handle/SaasOrderHandle.java
View file @
5d0798c5
...
...
@@ -349,6 +349,7 @@ public class SaasOrderHandle {
orderResp
.
setOrderState
(
orderState
);
}
notifyDto
.
setContent
(
JSON
.
toJSONString
(
orderResp
));
notifyDto
.
setOrderState
(
orderState
);
notifyDto
.
setPartnerId
(
orderResp
.
getPartnerId
());
notifyDto
.
setRequestId
(
UUID
.
randomUUID
().
toString
().
replaceAll
(
"-"
,
""
));
notifyDto
.
setOperateType
(
operateType
!=
null
?
operateType
:
1
);
...
...
ordercenter-sdk/src/main/java/com/freemud/application/sdk/api/ordercenter/entities/vo/OrderCallBackRequestVo.java
View file @
5d0798c5
...
...
@@ -60,4 +60,9 @@ public class OrderCallBackRequestVo {
* 请求ID
*/
private
String
requestId
;
/**
* 默认为待支付状态,如需要则设置对应的值
*/
private
Integer
orderState
;
}
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